Qualquer maneira de criar uma revisão de um post apenas com um novo botão na Meta Box?

4

Tenho certeza que não há maneira de fazer isso, mas alguém tem alguma idéia de como eu faria algo assim? Desejo desligar o autorevisions e SÓ ter uma revisão criada quando um botão é clicado (provavelmente, um botão personalizado colocado na caixa meta). Seria uma maneira super útil de fazer mais de um cenário de controle de versão com as postagens em vez de revisões toda vez que você corrigir um erro de ortografia.

Por exemplo, podemos usar isso e vinculá-lo a um clique de botão?

   /**
 * 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;
}

Adoraria ouvir o que seus especialistas têm a dizer!

Obrigado

UPDATE: parece que este será o caminho a percorrer: remove_action ('pre_post_update', 'wp_save_post_revision');

Mas estou tendo problemas para vincular isso a um botão específico. Não quero desabilitar completamente as revisões e não quero que ele seja aplicado toda vez que um botão for pressionado, apenas momentaneamente quando esse botão é pressionado .

Obrigado pela sua contribuição!

    
por Ryan 17.10.2012 / 07:51

1 resposta

1

Isso não é uma resposta completa, por falta de tempo, embora eu tente voltar mais tarde com um exemplo mais completo, mas eu só queria adicionar algumas notas. Possivelmente alguém vai pular em breve.

Para fazer a bola rolar ...

Em primeiro lugar,

Sim, isso é totalmente possível, você pode criar essa funcionalidade e, no seu snippet, você verá alguns dos ganchos relevantes com os quais precisa trabalhar.

add_action('_wp_put_post_revision', 'your_function");

Encontrado em ../wp-includes/post.php junto com outros ganchos relevantes relacionados a revisões.

Em segundo lugar,

Para adicionar um botão Salvar revisão ao lado ou na parte superior do botão Publicar , use o seguinte gancho:

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;
}

Esse é um exemplo prático e a formatação html ( divs, id's, etc ) está lá para preservar algum tipo de experiência consistente na interface, mas fique à vontade para alterar qualquer uma delas, especialmente se você quiser uma aparência personalizada ou um preenchimento especial , margens e assim por diante.

PS. Tente e tente, independentemente do resultado, gravar sua própria função conectando-se a _wp_put_post_revision em conjunto com o gancho de botão personalizado acima. Cole seus resultados nesse meio tempo.

    
por userabuser 17.10.2012 / 08:45