web-dev-qa-db-ja.com

どこように私はウィジットエリアをカスタマイザで動作させることができますか?

WordPressで奇妙な問題に遭遇しました。私はテーマを作成しています、そしてテーマのカスタマイズはカスタマイザによって駆動されます。

だから、基本的にfunctions.phpで私は追加しています

add_theme_support( 'widget-customizer' );

サイドバーを登録しています。

register_sidebar( array(
   'name' => __( 'Test Sidebar' ),
   'id' => 'test-sidebar',
));

それからindex.php私は共通のget_footer()を追加しています;およびinfooter.php 私は持っています:

<?php if ( is_active_sidebar( 'test-sidebar' ) ): ?>
    <div id="test-sidebar" class="sidebar">
        <?php dynamic_sidebar( 'test-sidebar' ); ?>
    </div>
<?php endif; ?>

最初の奇妙な問題は、プレビューウィンドウの管理ページでに追加されたウィジェットを見ることができるということです。しかし、カスタマイザ・ウィジェット・セクションでは、私はどのエリアも見ることができず、このメッセージを受け取る。

現在プレビューにレンダリングされているウィジェット領域はありません。ここでウィジェットにアクセスするためにウィジェットエリアを利用するテンプレートにプレビューでナビゲートしてください。

しかし2番目の奇妙な問題は私のfunctions.phpで私が追加した場合です。

   add_action( 'wp_footer', function () {
       ?>
       <?php if ( is_active_sidebar( 'test-sidebar' ) ): ?>
            <div id="test-sidebar" class="sidebar">
            <?php dynamic_sidebar( 'test-sidebar' ); ?>
        </div>
        <?php endif; ?>
        <?php
    } );

今私はカスタマイザでウィジェットの領域を見ることができます。

問題は何でしょうか。

2
koMah

一晩中私は答えを得ます。カスタマイザがwp_footerフックを通してのみウィジェット領域を表示している理由を反映して、私は自分のをチェックしました)footer.phpと問題はそれだったwp_footer()サイドバーセクションの前に呼び出されました。

   /* Always have wp_footer() just before the closing </body>
    * tag of your theme, or you will break many plugins, which
    * generally use this hook to reference JavaScript files.
    */
    wp_footer();

サイドバーの後に移動すると、すべてうまくいきます。

0
koMah

はい、wp_footer()フックは重要です。 footer.phpファイルからwp_footerフックを削除すると、class-wp-customize-widgets.phpからメッセージが表示されます。

現在プレビューにレンダリングされているウィジェット領域はありません。ここでウィジェットにアクセスするためにウィジェットエリアを利用するテンプレートにプレビューでナビゲートしてください。

wp_footerフックを削除した場合、カスタマイザセクション全体が存在しますが、customize-preview.jsが存在しないため、@WestonRuterが指摘したようには機能しません。


いくつかのヒントを紹介します。

add_theme_support( 'widget-customizer' );widget-customizerプラグインを追加する必要はありません。現在、WordPressコアに不可欠な部分です。これでサポートは完了です。

もう一つ、footer.phpはサイドバーを組織的にまとめるのに最も賢い場所ではないでしょう。あなたはtwentysixteen WordPressテーマをチェックして組織を見ることができます。

0
prosti