我想要做的是在主題激活中預先填充側欄小部件區域,並使用一些默認小部件。如何在主題激活時在側欄上填充小部件
if (! dynamic_sidebar('sidebar')) :
不添加小部件,但它亙古不變的部件部分的側邊欄和
if (is_active_sidebar('sidebar')) {
此功能亙古不變的工作,如果該部件沒有在側邊欄部件化的區域裝現身。
我知道這是可能的,但我只是出於主意。我GOOGLE了,但沒有找到任何解決方案。感謝您提前提供任何幫助。
我想要做的是在主題激活中預先填充側欄小部件區域,並使用一些默認小部件。如何在主題激活時在側欄上填充小部件
if (! dynamic_sidebar('sidebar')) :
不添加小部件,但它亙古不變的部件部分的側邊欄和
if (is_active_sidebar('sidebar')) {
此功能亙古不變的工作,如果該部件沒有在側邊欄部件化的區域裝現身。
我知道這是可能的,但我只是出於主意。我GOOGLE了,但沒有找到任何解決方案。感謝您提前提供任何幫助。
從您的答案中可以看出,如果您使用after_switch_theme
鉤子,但是您需要設置小部件的那一刻。
要激活小部件,我建議將它直接寫入數據庫get_option('sidebars_widgets')
應該給出一個數組,並將其保存爲update_option('sidebars_widgets', $new_activated_widgets)
。
這應該有助於您開始使用。
/**
* set new widgets on theme activate
* @param string $old_theme
* @param WP_Theme $WP_theme
*/
function set_default_theme_widgets ($old_theme, $WP_theme = null) {
// check if the new theme is your theme
// figure it out
var_dump($WP_theme);
// the name is (probably) the slug/id
$new_active_widgets = array (
'sidebar-name' => array (
'widget-name-1',
'widget-name-2',
'widget-name-3',
),
'footer-sidebar' => array(
'widget-name-1',
'widget-name-2',
'widget-name-3',
)
);
// save new widgets to DB
update_option('sidebars_widgets', $new_active_widgets);
}
add_action('after_switch_theme', 'set_default_theme_widgets', 10, 2);
經過測試,只需將其粘貼到您的主題的functions.php
即可。
如果其他人需要知道如何將多個默認小部件(不同實例)同時添加到多個側邊欄,則以下代碼會將小部件添加到頁面和管理小部件選項卡下。我意識到這可能對除我以外的每個人都很明顯。
因此,基於janw和kcssm的辛苦:
function add_theme_widgets($old_theme, $WP_theme = null) {
$activate = array(
'right-sidebar' => array(
'recent-posts-1',
'categories-1',
'archives-1'
),
'footer-sidebar' => array(
'recent-posts-2',
'categories-2',
'archives-2'
)
);
/* the default titles will appear */
update_option('widget_recent-posts', array(
1 => array('title' => ''),
2 => array('title' => '')));
update_option('widget_categories', array(
1 => array('title' => ''),
2 => array('title' => '')));
update_option('widget_archives', array(
1 => array('title' => ''),
2 => array('title' => '')));
update_option('sidebars_widgets', $activate);
}
add_action('after_switch_theme', 'add_theme_widgets', 10, 2);
然而,這將刪除任何其他設置,因此謹慎行事!
非常感謝您的回覆,但請您舉出一個完整的例子。我無法讓它工作。什麼應該是'$ new_activated_widgets'和它應該在哪裏被勾住?謝謝 – kcssm 2012-08-02 11:17:56
@kcssm我用示例代碼更新了我的答案。你只需要弄清楚如何檢查它是你的主題。 – janw 2012-08-02 17:43:37
謝謝@janw, 我從你的例子中得到了啓動器,然後我發現我們還需要更新小部件標題以及例如。 'update_option('widget_categories',array('title'=>'My Categories')); update_option('sidebars_widgets',array(「sidebar」=> array(「categories」)));' 再次感謝, Sanam – kcssm 2012-08-22 09:56:51