有条件地删除自定义发布类型的操作(_A)

时间:2013-12-17 作者:itrogers

默认情况下,“我的主题”在我的帖子下方显示一个作者框。我正在使用自定义帖子类型,只想删除此帖子类型上的作者框。以下是主题如何调用作者框:

add_action( \'wp_head\', \'woo_author\', 10 );

if ( ! function_exists( \'woo_author\' ) ) {
function woo_author () {
    // Author box single post page
    if ( is_single() && get_option( \'woo_disable_post_author\' ) != \'true\' ) { add_action( \'woo_post_inside_after\', \'woo_author_box\', 10 ); }
    // Author box author page
    if ( is_author() ) { add_action( \'woo_loop_before\', \'woo_author_box\', 10 ); }
} // End woo_author()
}
以下是我尝试从wpseo_locations 单发,但不起作用:

add_action(\'init\', \'kiwi_remove_post_author_box\'); 

function kiwi_remove_post_author_box () {
    if (is_singular(\'wpseo_locations\')  ) {
        remove_action( \'woo_post_inside_after\', \'woo_author_box\', 9 );
    }  
}
我也尝试过:

add_action(\'init\', \'kiwi_remove_post_author_box\'); 

function kiwi_remove_post_author_box () {
    if ( \'wpseo_locations\' == get_post_type() ) {
        remove_action( \'woo_post_inside_after\', \'woo_author_box\', 9 );
    }  
}
我似乎无法把那个盒子拿走。我知道“主题选项”面板中有一个复选框,可以使其在全球范围内消失,但我只希望删除此帖子类型的复选框。任何帮助都将不胜感激。

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

查询变量只能在wp_query 已调用。在你的通话中get_post_type() 函数实际返回的是空值。如果您将钩子更改为在调用wp\\u查询后激发的内容,那么它应该可以正常工作<因此,您应该使用-

add_action(\'wp\', \'kiwi_remove_post_author_box\');

add_action(\'template_redirect\', \'kiwi_remove_post_author_box\');
此外,可以使用添加的相同优先级值删除挂钩<所以最后的代码是-

add_action(\'template_redirect\', \'kiwi_remove_post_author_box\');
function kiwi_remove_post_author_box()
{
    if( is_singular(\'wpseo_locations\') )
        remove_action( \'woo_post_inside_after\', \'woo_author_box\', 10 );
}

SO网友:itrogers

多亏了@Shazzad,我才想出了最终有效的代码。

add_action(\'template_redirect\', \'kiwi_remove_post_author_box\'); 

function kiwi_remove_post_author_box () {
    if ( \'wpseo_locations\' == get_post_type() ) {
        remove_action( \'wp_head\', \'woo_author\', 10 );
    }  
}
请注意remove\\u操作是如何更改的inside 函数。我一这么做就成功了。这是否意味着如果钩子位于另一个函数中,并且被有条件地调用,则不能使用钩子?

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴