web-dev-qa-db-fra.com

Bouton Aperçu personnalisé

Ive a créé un plugin simple qui modifie le lien de prévisualisation au bon emplacement en tant qu’installation Wordpress personnalisée dans une structure de site existante.

En utilisant le filtre 'preview_post_link', je peux changer le lien avec succès pour dire:

http://www.domain.com/wp-custom.php?p=123456&preview=true

Cela fonctionne parfaitement en survolant et en inspectant la balise a:

<a class="preview button" href="http://www.domain.com/wp-custom.php?p=123456&amp;preview=true" target="wp-preview" id="post-preview">Preview</a>

Faites un clic droit et ouvrez-le dans une nouvelle fenêtre/onglet et tout s’ouvrira bien. Cliquez sur le bouton réel et l'échec de la création de l'URL dans la barre d'adresse de:

http://www.domain.com/?p=123456&preview=true

Pas tout à fait sûr de ce qui se passe ou d'une solution de contournement? La seule chose à laquelle je peux penser est peut-être qu'une sorte de JQuery est exécuté par wordpress sur .preview ou # post-preview, ce qui affecte le comportement lorsque le bouton est cliqué directement.

Toute idée sur la façon de remédier serait grandement appréciée. Merci beaucoup.

Mise à jour pour montrer la méthode simple pour modifier les liens de prévisualisation wordpress:

function custom_change_preview_link($link) {
    return preg_replace('/\?/','wp-custom.php?',$link);
}
add_filter( 'preview_post_link', 'custom_change_preview_link' );
add_filter( 'preview_page_link', 'custom_change_preview_link' );
2
Jimbo

Le seul moyen que j’ai trouvé pour que cela fonctionne est d’appliquer le deuxième correctif suggéré dans this ticket de trac

Je sais que c'est un correctif dans les fichiers de base, mais dans la prochaine version de WP (3.6), la modification est censée être validée. Il ne devrait donc y avoir aucun problème avec les mises à jour.

Modifier

Note/Disclaimer: Le mini-plugin suivant a été extrait du plugin GitHub "Edit-Flow" de Daniel Bachhubers et du correctif affiché sur le ticket. Il n'a pas été testé et n'a pas été ajouté par la personne qui a répondu à cette question.

<?php
defined( 'ABSPATH' ) OR exit;
/** Plugin Name: Fix Preview Link */
add_filter( 'preview_post_link', 'preview_link_fix' );
function preview_link_fix( $preview_link )
{
    $post = get_post( get_the_ID() );
    if (
        ! is_admin()
        OR 'post.php' != $GLOBALS['pagenow']
    )
        return $preview_link;

    $args = array(
         'p'       => $post->ID
        ,'preview' => 'true'
    );
    return add_query_arg( $args, home_url() );
}
1
Marie-Elaine Roy