我需要在用户显示post_or_page_or_product(woocommerce产品)时添加操作。 我试着用
add_action( 'the_post', 'my_the_post_action' );
它有效...... 太多!
我的意思是在引用帖子的任何时候调用该函数(例如,对于小部件中的链接)
我将需要在显示post_or_page_or_product的页面时调用 功能..
怎么样?
谢谢!
答案 0 :(得分:0)
要限制一组帖子类型,您可以使用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 );
}
答案 1 :(得分:0)
使用2个条件,一个用于检查当前着陆页,另一个用于检查如果循环 has_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');