web-dev-qa-db-ja.com

edit_form_after_titleフォークをページと投稿編集のみに制限するにはどうすればいいですか?

ヒーロー、私はこのすばらしいフックを使いたいです edit_form_after_title

2012年12月1日に発表されました。
http://make.wordpress.org/core/2012/12/01/more-hooks-on-the-edit-screen/

post-new、post、page-new、pageの現在のフック。

どのように私はそれを編集ページ/投稿でのみ動作するようにするのですか( 投稿のみ、ページ

皆さんありがとう

5
DrMosko

@Shazzad の解決策はグローバルに依存しすぎているようで、 @s_ha_dum には1つではなく2つのフックが必要なので、個人的には別の方法を使用します。

get_current_screen 関数を使って WP_Screen オブジェクトを取得したら、そのプロパティを見てタイトルの後に何かを実行します(または実行しません)。

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

元の質問から経過した時間内に変更があったかどうかはわかりませんが、4.0ではフックへのパラメータとして投稿を取得し、投稿タイプを確認するだけです。新しい投稿を作成したときに何が起こるのか疑問に思う場合は、WordPressが投稿の種類が正しい種類に設定されていればダミーの投稿を生成するということです。

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

$typenowおよび$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