問題描述
我正在嘗試在動態側邊欄中新增一個小工具的內容。
這是註冊碼;
register_sidebar(array(
'name' => "Sidebar1",
'id' => 'home-sidebar-1',
'before_widget' => '<div class="sidebar-box">',
'after_widget' => '</div>',
'before_title' => '<div class="title">',
'after_title' => '</div>',
));
但是這個程式碼就是這樣的;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
{WIDGET CONTENT}
</div>
這是我要做的事情
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
<div class="content">
{WIDGET CONTENT}
</div>
</div>
怎麼辦?
最佳解決方案
除了 Toscho 的答案,這裡是您需要一個強大的解決方案:
// if no title then add widget content wrapper to before widget
add_filter( 'dynamic_sidebar_params', 'check_sidebar_params' );
function check_sidebar_params( $params ) {
global $wp_registered_widgets;
$settings_getter = $wp_registered_widgets[ $params[0]['widget_id'] ]['callback'][0];
$settings = $settings_getter->get_settings();
$settings = $settings[ $params[1]['number'] ];
if ( $params[0][ 'after_widget' ] == '</div></div>' && isset( $settings[ 'title' ] ) && empty( $settings[ 'title' ] ) )
$params[0][ 'before_widget' ] .= '<div class="content">';
return $params;
}
從託斯科的答案:
register_sidebar(array(
'name' => "Sidebar1",
'id' => 'home-sidebar-1',
'before_widget' => '<div class="sidebar-box">',
'after_widget' => '</div></div>',
'before_title' => '<div class="title">',
'after_title' => '</div><div class="content">',
));
這是什麼?
-
檢查註冊側邊欄的設定,結束於 2 結束
<div>的小工具 -
檢查是否沒有標題
-
如果沒有,它將修改
before_widget輸出以顯示開啟的小工具內容 div
您可以使用此方法根據 widget 例項的設定以其他方式更改側邊欄引數。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。