webentwicklung-frage-antwort-db.com.de

wie kann ich den Hook "edit_form_after_title" auf die Bearbeitung von Seiten und Beiträgen beschränken?

heelo, ich möchte diesen tollen hook benutzen edit_form_after_title

es wurde am 1. Dezember 2012 bekannt gegeben:
http://make.wordpress.org/core/2012/12/01/more-hooks-on-the-edit-screen/

Es ist ein Haken für: post-new, post, page-new, page.

wie kann ich es schaffen, nur in Seite/Beitrag zu arbeiten ( nur Beitrag, Seite )

danke an alle

5
DrMosko

Persönlich würde ich einen anderen Ansatz verwenden, da die Lösung von @Shazzad zu stark global abhängig zu sein scheint und @s_ha_dum 2 Hooks anstelle von einem benötigt.

Ich würde get_current_screen function verwenden, um ein WP_Screen Objekt zu erhalten, dann würde ich mir seine Eigenschaft ansehen, um etwas nach dem Titel auszuführen (oder nicht):

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

Ich weiß nicht, ob sich während der Zeit, die seit der ursprünglichen Frage vergangen ist, etwas geändert hat. Ab Version 4.0 erhalten Sie den Beitrag als Parameter für den Hook. Sie müssen lediglich den Beitragstyp überprüfen. Wenn Sie sich fragen, was passiert, wenn Sie einen neuen Beitrag erstellen, lautet die Antwort, dass WordPress einen Dummy-Beitrag generiert, wenn der Beitragstyp auf den richtigen Typ eingestellt ist.

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

Überprüfen Sie den Beitragstyp mithilfe der globalen Variablen $typenow und $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