私は新しいテーマを開発しています、そしてこのテーマでいくつかのサイドバーを使用しています。すべてうまくいきますが、ウィジェットはテーマカスタマイザセクションに表示されません。すべてのウィジェットは「外観 - >ウィジェット」セクションの下では正常に機能していますが、「外観 - >カスタマイズ」では機能しません。私はワードプレス3.9.1を使用しています。
これは私がfunctions.phpでそれらを宣言する方法です
if(function_exists('register_sidebar'))
{
register_sidebar ( array (
'name' => 'Widget Area 1',
'id' => 'widget-1',
'description' => 'Widget Area 2.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
register_sidebar ( array (
'name' => 'Widget Area 2',
'id' => 'widget-2',
'description' => 'Widget Area 2.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
register_sidebar ( array (
'name' => 'Widget Area 3',
'id' => 'widget-3',
'description' => 'Widget Area 3.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
register_sidebar ( array (
'name' => 'Widget Area 4',
'id' => 'widget-4',
'description' => 'Widget Area 4.',
'before_widget' => '<div id="%2$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>' ,
) );
}
そして、これが私が彼らを呼ぶ方法です。
<?php
if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Widget Area 1' )) :
endif;?>
1つのウィジェット領域があるときはうまく表示されますが、複数のウィジェット領域を追加するとすぐにカスタマイザから消えます。
ウィジェットはカスタマイザーに表示されますが、それが使用されているページにいる場合に限ります。
たとえば、Archiveページにサイドバーがあります。カスタマイザを使用しているときやホームページを開いているときには、そのサイドバーは表示されません。ただし、カスタマイザ内でアーカイブページに移動すると、ウィジェットページに表示されます。
私はあなたがずっと前にこれを尋ねたことを知っています、しかし私はちょうど同じ問題を抱えていて、そして最後に問題を考え出しました。私のfunctions.php
ファイルで、私はjquery(wp_deregister_script('jquery')
)を登録解除しました。これは明らかに私のページがまだjqueryをロードしているにもかかわらず、ウィジェットがカスタマイザ内で機能しない原因となります(wp_enqueue_script
を通して)。
問題を解決するためには(あなたが私と同じ問題を抱えていると仮定して)、wp_register_script('jquery', ('url_to_jquery'), false, '1.11.1'[or whatever your jquery version is])
を呼び出してjqueryを再登録する必要があります。
@PieterGoosenは正しく、dynamic_sidebar ( 'Widget Area 1' ))
ではIDではなく名前を呼び出しています。これはwidget-1.
です。
代わりにIDを使ってみてください。
これがあなたの問題に対する本当の解決策です:あなたがしなければならないのはあなたがこのタグをフッターに追加していることを確認することと終了タグ</body>
の前に:
<?php wp_footer();?>
</head>
タグの前に<?php wp_header();?>
があることも確認してください。私はこれが助けを願っています
ウィジェットは代わりにその名前で呼び出したり、IDで呼び出したりすることは決してありません。
自分のウィジェットを表示したいsidebar.phpまたはfooter.phpを調べて、functions.phpページに登録したサイドバーIDが同じかどうかを確認してください。
Functions.phpでウィジェットID「something」を使用し、ウィジェットを表示したい場所に「something-else」を使用すると、何も解決されません。
例:
あなたが "page-sidebar"を使ってfunctions.phpにあなたのウィジェットを登録するなら、あなたはあなたのサイドバーまたはフッターページで<?php dynamic_sidebar( 'page-sidebar' ); ?>
を使ってあなたのウィジェットを呼ばなければなりません。