#1 楼
您可以使用wp
钩子并检查global $wp_query
对象或任何条件。add_action( 'wp', 'wpse69369_special_thingy' );
function wpse69369_special_thingy()
{
if (
'special_cpt' === get_post_type()
AND is_singular()
)
return print "Yo World!";
return printf(
'<p>Nothing to see here! Check the object!<br /></p><pre>%s</pre>',
var_export( $GLOBALS['wp_query'], true )
);
}
请参阅:codex.wordpress.org中的
wp
和developer.wordpress.org中的wp
评论
您能告诉我'wp'钩何时运行吗?
– Poulomi Nag
2012年10月16日上午11:07
A)它在after_setup_theme和setup_theme之前运行,因此它仅可用于WP :: main()中的插件B),可从wp-settings.php中调用它。
– kaiser
2012年10月16日上午11:19
@kaiser wp钩子在after_setup_theme钩子之后和template_redirect之前不触发,因此使主题和插件都可以访问wp吗? (只是为了澄清?)
–亚当
2012年10月17日下午6:18
#2 楼
使用template_redirect
,它是在渲染模板之前触发的动作挂钩; add_action('template_redirect', 'hooker');
function hooker(){
//I load just before selecting and rendering the template to screen
}
评论
@PoulomiNag没问题,很高兴您在上面找到了答案。尽管我认为有一点需要注意,wp在after_theme_setup挂钩之后运行,所以它不仅可以通过插件访问,而且可以安全地在主题中使用。
–亚当
2012年10月17日下午6:21
我刚刚检查了,是的; wp在after_theme_setup之后运行。但是我的插件需要它。所以wp和template_redirect都对我来说很好。希望我可以在这里接受两个答案! :)
– Poulomi Nag
2012年10月17日在7:33
没关系,不必接受两者,只是想阐明它们触发的顺序。知道,确保我不会发疯。祝您的插件好运...
–亚当
2012年10月17日在7:42
功能名称双关语+1
– MJHd
20-2-28在21:56
#3 楼
我经常使用以下内容加载页面上的自定义元框(而不是自定义帖子)。 add_action('admin_init','how_we_do_it_meta');
function how_we_do_it_meta() {
if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/post.php' ) {
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
if ($template_file == 'page-how-we-do-it.php') {
add_meta_box('how_we_do_it_who-meta', 'Who we work with...', 'how_we_do_it_who', 'page', 'normal', 'high');
add_action('save_post', 'save_how_we_do_it_meta');
}
}
}
评论
谢谢Darronz。但是我需要一些挂钩才能在页面加载期间在前端工作。有任何想法吗?
– Poulomi Nag
2012年10月16日在7:07
如果将以上内容更改为add_action('init',//等),则它将在页面加载中起作用,而不仅仅是在管理部分中起作用。
– darronz
2012年10月16日在7:19
@darronz然后您需要检查! is_admin()内部,因为init钩子在两侧都运行。
– kaiser
2012年10月16日上午11:20
评论
公共或管理员方面/面对吗?对于前端。基本上,我希望它仅在显示特定的单个自定义帖子类型时触发。