2012-11-15 40 views
0

是否有一個功能來檢查當前前端是否顯示Widget
這對於拉動一些樣式或腳本或對窗口部件執行其他操作是必需的。檢查當前前端是否顯示WordPress Widget

+0

wordpress.SE對這個話題的幾個職位,例如:http://wordpress.stackexchange.com/questions/2302/loading-scripts-only-if-a-particular-shortcode-or-widget -is-present/2304#2304 –

+0

'is_active_widget()'只檢查'xyz'小部件是否在全局$ wp_registered_widgets中處於活動狀態。因此,如果您在其他邊欄中激活了「xyz」窗口小部件,即使當前頁面中沒有「xyz」窗口小部件,它也會始終返回當前頁面的活動狀態。 – zourbuth

+0

是的,但是如果爲true,它會返回側邊欄ID。所以如果你知道當前前端有哪些側邊欄,那麼問題就解決了。所以你的問題在考慮你的其他問題的圓圈運行(http://stackoverflow.com/questions/13404283/get-wordpress-sidebars-fom-the-current-front-end/13407134#comment18323631_13407134)。 (我認爲這是正確的,但我不確定在部件的幾個實例處於活動狀態時會返回哪些側邊欄ID。) –

回答

0

請看看它是否通過回顯內容$ GLOBALS ['displayed_sidebars']和$ GLOBALS ['displayed_widgets'],例如使用print_r。

必須在爲要包含的所有側邊欄執行dynamic_sidebar後對其進行測試。

add_filter('dynamic_sidebar_params', function($params) { 
    global $displayed_sidebars, $displayed_widgets; 
    if(!in_array($params[0]['id'], $displayed_sidebars)) 
     $displayed_sidebars[] = $params[0]['id']; 

    if(!in_array($params['widget_name'], $displayed_widgets)) 
     $displayed_widgets = $params['widget_name']; 

    return $params; 
}); 
相關問題