web-dev-qa-db-fra.com

comment limiter le hook edit_form_after_title à la page et publier uniquement?

heelo, je veux utiliser ce super crochet edit_form_after_title

il a été annoncé le 1er décembre 2012:
http://make.wordpress.org/core/2012/12/01/more-hooks-on-the-edit-screen/

c'est un crochet courant pour: post-new, post, page-new, page.

comment puis-je le faire fonctionner uniquement dans edit page/post ( uniquement post, page )

merci a tous

5
DrMosko

Personnellement, j'utiliserais une approche différente, car la solution de @Shazzad semble trop dépendante de la globalité, et @s_ha_dum nécessite deux crochets au lieu d'un.

J'utiliserais get_current_screen function pour obtenir un objet WP_Screen , puis je regarderais sa propriété pour exécuter (ou non) quelque chose après le titre:

function do_something_after_title() {
    $scr = get_current_screen();
    if ( ( $scr->base !== 'post' && $scr->base !== 'page' ) || $scr->action === 'add' )
        return;
    echo '<h2>After title only for post or page edit screen</h2>';
}

add_action( 'edit_form_after_title', 'do_something_after_title' );
4
gmazzap

Je ne sais pas s'il y a eu un changement pendant le temps écoulé depuis la question initiale, mais à partir de la version 4.0, la publication est considérée comme un paramètre pour le raccordement et tout ce qu'il faut faire est de vérifier le type de publication. Si vous vous demandez ce qui se passe lors de la création d'un nouveau message, la réponse est que WordPress génère un message factice si le type de message est défini sur le type correct.

function do_something_after_title( $post ) {
    if( 'post' !== $post->post_type && 'page' !== $post->post_type ) {
        return;
    }

    echo '<h2>After title only for post or page edit screen</h2>';
}
add_action( 'edit_form_after_title', 'do_something_after_title' );
4
Mark Kaplun

Vérifiez le type de publication à l'aide des variables globales $typenow et $pagenow.

add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title()
{
    global $typenow, $pagenow;
    if( in_array($typenow, array('post', 'page') ) && $pagenow == 'post.php' )
    {
        echo '<h2>This is edit_form_after_title!</h2>';
    }
}
1
Shazzad