¿Alguna forma de crear una revisión de una publicación SOLAMENTE con un nuevo botón en la Meta Box?

4

Bastante seguro de que no hay una manera de hacerlo, pero ¿alguien tiene alguna idea sobre cómo podría hacer algo como esto? Quiero desactivar las restauraciones automáticas y SOLO se crea una revisión cuando se hace clic en un botón (probablemente un botón personalizado ubicado en el cuadro de meta). Sería una forma súper útil de hacer más de un escenario de control de versión con las publicaciones en lugar de las revisiones cada vez que corrijas un error de ortografía.

Por ejemplo, ¿podríamos usar esto y vincularlo a un clic de botón?

   /**
 * Saves an already existing post as a post revision.
 *
 * Typically used immediately prior to post updates.
 *
 * @package WordPress
 * @subpackage Post_Revisions
 * @since 2.6.0
 *
 * @uses _wp_put_post_revision()
 *
 * @param int $post_id The ID of the post to save as a revision.
 * @return mixed Null or 0 if error, new revision ID, if success.
 */
function wp_save_post_revision( $post_id ) {
    // We do autosaves manually with wp_create_post_autosave()
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    // WP_POST_REVISIONS = 0, false
    if ( ! WP_POST_REVISIONS )
        return;

    if ( !$post = get_post( $post_id, ARRAY_A ) )
        return;

    if ( !post_type_supports($post['post_type'], 'revisions') )
        return;

    $return = _wp_put_post_revision( $post );

    // WP_POST_REVISIONS = true (default), -1
    if ( !is_numeric( WP_POST_REVISIONS ) || WP_POST_REVISIONS < 0 )
        return $return;

    // all revisions and (possibly) one autosave
    $revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );

    // WP_POST_REVISIONS = (int) (# of autosaves to save)
    $delete = count($revisions) - WP_POST_REVISIONS;

    if ( $delete < 1 )
        return $return;

    $revisions = array_slice( $revisions, 0, $delete );

    for ( $i = 0; isset($revisions[$i]); $i++ ) {
        if ( false !== strpos( $revisions[$i]->post_name, 'autosave' ) )
            continue;
        wp_delete_post_revision( $revisions[$i]->ID );
    }

    return $return;
}

¡Me encantaría escuchar lo que sus expertos tienen que decir!

Gracias

ACTUALIZACIÓN: Parece que este será el camino a seguir: remove_action ('pre_post_update', 'wp_save_post_revision');

Pero estoy teniendo problemas para vincular eso con un botón específico ... No quiero deshabilitar las revisiones por completo, y no quiero que se aplique cada vez que se presiona un botón, solo momentáneamente cuando se presiona este botón .

Gracias por tu aporte!

    
pregunta Ryan 17.10.2012 - 07:51

1 respuesta

1

Esto es no todavía una respuesta completa, por falta de tiempo, aunque intentaré volver más tarde con un ejemplo más completo, pero solo quería agregar un par de notas. Posiblemente alguien más saltará pronto.

Para hacer rodar la pelota ...

En primer lugar,

Sí, esto es completamente posible, puede crear esta funcionalidad y en su fragmento verá algunos de los ganchos relevantes con los que necesita trabajar.

add_action('_wp_put_post_revision', 'your_function");

Se encuentra en ../wp-includes/post.php junto con otros ganchos relevantes relacionados con las revisiones.

En segundo lugar,

Para agregar un botón Guardar revisión al lado o sobre el botón Publicar , debe usar el siguiente enlace:

add_action( 'post_submitbox_misc_actions', 'custom_button' );

function custom_button(){
        $html  = '<div id="major-publishing-actions" style="overflow:hidden">';
        $html .= '<div id="publishing-action">';
        $html .= '<input type="submit" accesskey="p" tabindex="5" value="Customize Me!" class="button-primary" id="custom" name="publish">';
        $html .= '</div>';
        $html .= '</div>';
        echo $html;
}

Este es un ejemplo práctico y el formato html ( divs, id's, etc ) está ahí para preservar algún tipo de experiencia de interfaz de usuario consistente, pero puede cambiar cualquier cosa a su gusto, especialmente si desea un aspecto personalizado o un relleno especial. , márgenes y así sucesivamente.

PS. Intente e intente, independientemente del resultado, escribir su propia función enganchando en _wp_put_post_revision junto con el botón de gancho personalizado arriba. Pegue sus resultados mientras tanto.

    
respondido por el userabuser 17.10.2012 - 08:45

Lea otras preguntas en las etiquetas