如何将EDIT_FORM_AFTER_TITLE挂钩限制为仅限于页面和后期编辑?

时间:2013-12-29 作者:DrMosko

嘿,我想用这个大钩子edit_form_after_title

2012年12月1日宣布:
http://make.wordpress.org/core/2012/12/01/more-hooks-on-the-edit-screen/

it curreclty hook for : post-new, post, page-new, page.

如何使其仅在编辑页面/帖子中工作(only post, page)

谢谢大家

3 个回复
最合适的回答,由SO网友:gmazzap 整理而成

就我个人而言,我会使用不同的方法,因为@Shazzad\'s的解决方案似乎过于依赖全球@s_ha_dum\'s需要两个挂钩而不是一个。

我会用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\' );

SO网友:Mark Kaplun

不知道在原始问题过去的时间里是否有任何变化,但从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\' );

SO网友:Shazzad

使用检查立柱类型$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>\';
    }
}

结束

相关推荐

wp_dropdown_pages auto submit

我下面的内容目前运行良好,但有一个问题除外:当选择一个选择项时,它将正确转到子页面-但是,如果已经在主站点的子页面上,并且从下拉列表中选择了一个项,则选择url将附加到现有页面url,而不是作为完整url传递。例如如果在现场。com并选择选项1,我们将导航到站点。com/choice1/-如果我们在现场。com/choice1和choice2被选中,它试图将我们引导到站点。com/choice1/choice2-我不知道如何调整下面的代码来传递完整的URL。任何帮助都将不胜感激。<?php