サイドバーとサイドバーウィジェットを登録しています。
テーマは現在2つのサイドバーをサポートしています。プライマリとセカンダリ。
add_action('widgets_init', array($this, 'add_sidebars'), 10, 2);
public function add_sidebars(){
register_sidebar(array(
'name' => 'Primary Sidebar',
'id' => 'mbe-sidebar-primary-sidebar',
'description' => '',
'class' => 'mbe-sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>'
));
register_sidebar(array(
'name' => 'Secondary Sidebar',
'id' => 'mbe-sidebar-secondary-sidebar',
'description' => '',
'class' => 'mbe-sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>'
));
$this->add_sidebar_widgets();
}
それから私はすべてのプリセットウィジェット(投稿タイプからの投稿オブジェクト)を利用可能なサイドバーウィジェットとして追加します。
private function add_sidebar_widgets(){
global $mbe_content;
$widgets = $mbe_content->get_content('archive', 'mbe-sidebar-widgets');
if(!$widgets){
return;
}
foreach($widgets as $widget){
wp_register_sidebar_widget(
'mbe-sidebar-widget-'.$widget['post_name'],
$widget['post_title'],
array($this, 'display_widget'),
array(
'description' => 'Sidebar Widget'
),
''
);
}
}
public function display_widget($args, $params){
echo 'widget';
}
私はこれらのサイドバーウィジェットをプライマリサイドバーのアクティブウィジェットとしても設定しました。今、例えば、テーマレベルで、私はただ動的サイドバーを使用したいのであれば...
if(is_active_sidebar('mbe-sidebar-primary-sidebar')){
dynamic_sidebar('mbe-sidebar-primary-sidebar');
} else{
echo 'NO PRIMARY WIDGETS!'.PHP_EOL;
}
それは私のウィジェットからの「ウィジェット」を示しています、しかしそれは私のウィジェットのための出力が起こる場所です。だからそれは問題ではありません。要点は、動的サイドバーが機能していること、そしてウィジェットの出力先を確認できることです。
私が抱えている質問は、サイドバーに単純なデフォルトのWordPressウィジェットを追加した場合、どうすればサイドバーに何も出力されないということです。まるで存在しないか何かのようです。
WordPressが提供するデフォルトのサイドバーウィジェットをサイドバーにも出力できるようにしながら、ウィジェットをサイドバーに出力するにはどうすればよいですか?
私はもともとそれが私のfunction display_widget()
だと思ったので、私はすべてのウィジェットを取得し、それらをループし、そしてそれらの各ウィジェットIDでthe_widget()
を呼び出すことを試みました。
あなたのテーマからあなたのテンプレートファイルをチェックしてください。他のウィジェットが有効になっていない場合、手動で追加されているウィジェットがあるかもしれません。
その場合は、サイドバーテンプレートの条件文を変更して、デフォルト設定の後にウィジェットが出力されるようにします。
@s_ha_dumは基本的に一番下まで来ました。