2013-11-28 78 views
0

我需要添加一個行動,當用戶顯示post_or_page_or_product(woocommerce產品)。 我試圖用WordPress的行動掛鉤帖子/頁面/產品

add_action('the_post', 'my_the_post_action'); 

它的工作原理... 太多
我的意思是,任何時候引用帖子都會調用該函數(例如對於窗口小部件中的鏈接)。
我需要調用函數只有頁面的post_or_page_or_product的將被顯示..
如何?
謝謝!

回答

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); 
} 
+0

也許我沒有解釋好.. – aleclofabbro

+0

也許我沒有解釋好.. 我基本上要排隊一些JS和CSS視後的自定義字段,但我需要將它們添加只有當帖子實際上完全顯示時。 帶有「the_post」鉤子,它恰好爲每個帖子調用函數,這些帖子在「最近的帖子」窗口小部件和其他列表中呈現出來,排入所有相關的腳本和css – aleclofabbro

+0

'init'鉤子應該沒問題,我用一個例子編輯了答案 – diggy

0

使用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');