web-dev-qa-db-ja.com

テーマカスタマイザにウィジェットが表示されない

私は新しいテーマを開発しています、そしてこのテーマでいくつかのサイドバーを使用しています。すべてうまくいきますが、ウィジェットはテーマカスタマイザセクションに表示されません。すべてのウィジェットは「外観 - >ウィジェット」セクションの下では正常に機能していますが、「外観 - >カスタマイズ」では機能しません。私はワードプレス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つのウィジェット領域があるときはうまく表示されますが、複数のウィジェット領域を追加するとすぐにカスタマイザから消えます。

3
AKR

ウィジェットはカスタマイザーに表示されますが、それが使用されているページにいる場合に限ります。

たとえば、Archiveページにサイドバーがあります。カスタマイザを使用しているときやホームページを開いているときには、そのサイドバーは表示されません。ただし、カスタマイザ内でアーカイブページに移動すると、ウィジェットページに表示されます。

9
Matt Cromwell

私はあなたがずっと前にこれを尋ねたことを知っています、しかし私はちょうど同じ問題を抱えていて、そして最後に問題を考え出しました。私の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を再登録する必要があります。

1
manwill

@PieterGoosenは正しく、dynamic_sidebar ( 'Widget Area 1' ))ではIDではなく名前を呼び出しています。これはwidget-1.です。

代わりにIDを使ってみてください。

0
jose_nation

これがあなたの問題に対する本当の解決策です:あなたがしなければならないのはあなたがこのタグをフッターに追加していることを確認することと終了タグ</body>の前に:

<?php wp_footer();?>

</head>タグの前に<?php wp_header();?>があることも確認してください。私はこれが助けを願っています

0
shadi

ウィジェットは代わりにその名前で呼び出したり、IDで呼び出したりすることは決してありません。

自分のウィジェットを表示したいsidebar.phpまたはfooter.phpを調べて、functions.phpページに登録したサイドバーIDが同じかどうかを確認してください。

Functions.phpでウィジェットID「something」を使用し、ウィジェットを表示したい場所に「something-else」を使用すると、何も解決されません。

例:

あなたが "page-sidebar"を使ってfunctions.phpにあなたのウィジェットを登録するなら、あなたはあなたのサイドバーまたはフッターページで<?php dynamic_sidebar( 'page-sidebar' ); ?>を使ってあなたのウィジェットを呼ばなければなりません。

0