2011-04-27 74 views
0

我正在爲Woothemes的畫布開發一個兒童主題。自定義帖子類型functions.php如果行動聲明

我想在子主題中使用functions.php只使用我的自定義帖子類型的操作。

此代碼似乎並不奏效:

add_action('woo_post_inside_after', 'my_geo_mashup'); 
function my_geo_mashup() { 
     echo GeoMashup::map(); 
    if ($post->post_type == 'listings') { 
     //My function 
     } 
} 

add_action('woo_post_inside_before', 'listings_nivo'); 
function listings_nivo() { 
echo do_shortcode('[nivo source="current-post" ]'); 
if ($post->post_type == 'listings') { 
     //My function 
     } 
} 

所以,我不知道該如何得到上面的正常工作,只顯示出對自定義後類型這些項目,或只爲自定義帖子類型模板single-listing.php(因爲我只希望地圖和滑塊顯示在實際文章中,而不是在博客頁面上(archive.php)

回答

0

不是讓整個$ post對象成爲全局對象,而是讓$ post_type成爲全局對象。如下。

我不完全確定該函數在哪裏加載,但確保你在帖子內的某處掛鉤。如果行動之前,據我所知,從經驗來看,post變量將爲空。

就像一個測試,嘗試運行在wp_footer例如。 add_action('wp_footer','listings_nivo'); 看看是否有任何結果。

如果回顯var_dump($ post)仍然爲空,那麼,不知道該從哪裏去。

所以,你可以嘗試運行下面,然後運行在適當的地方行動,如果它的工作原理:

function listings_nivo() { 
    echo do_shortcode('[nivo source="current-post" ]'); 
    global $post_type; 
     // Diagnostic purposes 
    echo var_dump($post_type); 
    if ($post_type == 'listings') { 
      //My function 
    } 
} 
add_action('wp_footer', 'listings_nivo'); 

檢查您的錯誤日誌或如果沒有您的wp-config.php文件轉WP_DEBUG爲真否則看看是否還有其他事情正在進行。

祝你好運!

0

在你的函數裏面,嘗試加入global $post;。你用$post->post_type得到的結果回顯到屏幕上,只要這給你「清單」,你的代碼就可以工作,如果沒有,那麼可能是遊戲中的問題。

+0

不幸的是,我沒有發現任何其他問題。現在,我只是將調用硬編碼到自定義帖子類型模板中,這很好,我只是試圖將它保留在functions.php – Jason 2011-04-27 16:23:05

+0

因此,使post變量全局不起作用?如果是這種情況,還有其他選擇。你只需要訪問發佈信息,並有幾種方法可以做到這一點。 – tollmanz 2011-04-27 16:37:12

+0

還有其他的方法嗎? – Jason 2011-04-27 17:18:43