我需要添加一个行动,当用户显示post_or_page_or_product(woocommerce产品)。 我试图用WordPress的行动挂钩帖子/页面/产品
add_action('the_post', 'my_the_post_action');
它的工作原理... 太多!
我的意思是,任何时候引用帖子都会调用该函数(例如对于窗口小部件中的链接)。
我需要调用函数只有当页面的post_or_page_or_product的将被显示..
如何?
谢谢!
我需要添加一个行动,当用户显示post_or_page_or_product(woocommerce产品)。 我试图用WordPress的行动挂钩帖子/页面/产品
add_action('the_post', 'my_the_post_action');
它的工作原理... 太多!
我的意思是,任何时候引用帖子都会调用该函数(例如对于窗口小部件中的链接)。
我需要调用函数只有当页面的post_or_page_or_product的将被显示..
如何?
谢谢!
要限制一组文章类型,你可以使用is_singular()
条件标记:
add_action('init', 'so20270528_init');
function so20270528_init()
{
if(! is_singular(array('post', 'page', 'product')))
return;
global $post;
if('somevalue' == get_post_meta($post->ID, 'somekey', true))
wp_enqueue_script('script-name', get_template_directory_uri() . '/js/example.js', array(), '1.0.0', true);
}
使用2个条件语句,一个检查当前的着陆页,其他检查如果循环 that_posts()是主循环。这可以简单地使用内置的in_the_loop()
条件测试完成:
function my_the_post_action($post){
if(is_singular('product') && in_the_loop()) {
// do some action
}
}
add_action('the_post', 'my_the_post_action');
您可以跳过return $post
因为这个动作传递$post
引用。
注意:在使用&& is_main_query()
不在这里工作,因为它会返回true
所有的时间。
就我而言,我需要修改博客存档页面上的小部件,它生成与博客页面本身完全相同的最新帖子。问题是他们使用相同的模板文件并需要更改action 'the_post'
。
function my_the_post_action($post){
if(is_home() && !in_the_loop()) {
// do some action by examine the $post to find your widget posts
}
}
add_action('the_post', 'my_the_post_action');
也许我没有解释好.. – aleclofabbro
也许我没有解释好.. 我基本上要排队一些JS和CSS视后的自定义字段,但我需要将它们添加只有当帖子实际上完全显示时。 带有“the_post”钩子,它恰好为每个帖子调用函数,这些帖子在“最近的帖子”窗口小部件和其他列表中呈现出来,排入所有相关的脚本和css – aleclofabbro
'init'钩子应该没问题,我用一个例子编辑了答案 – diggy