2016-10-25 13 views
0

私は最近自作テーマでWoo​​commerceをインストールしました。私のテーマにsidebar.phpコードを追加する必要があるというエラーメッセージが表示されました。このエラーメッセージの後に、ひどいスタイルのないリストのウィジェットのリストが続きました。ウィジェットには、検索バー、私のサイトのページのリスト、アーカイブとカテゴリリストが含まれていました。私は今働いているようなチュートリアルに続いてsidebar.phpを作成しました - 私は以下に使用したコードを含めました。Wordpressのテーマ内でsidebar.phpを使用しています

サイドバーを追加して以来、これらのウィジェットは消えてしまったようですが、外観メニューのウィジェットタブを使用して手動で追加する必要があります。彼らがなぜ消滅したのか理解できないのですか?

サイドバーを追加するときに、PHPコードでウィジェットを追加する必要があると思います。そうしないと、サイドバーと他のテンプレートとが衝突しませんか?たとえば、ショップページ用のWoocommerceウィジェットを追加できますが、ブログ投稿を作成するには別のウィジェットが必要ですが、Woocommerceウィジェットはサイドバーに、その逆もあります。

多分私はこれを間違ったやり方にしています。おそらく誰かが正しい方向に私を向けることができますか?私はこれをグーグルで見つけて、いくつかのYouTubeのチュートリアルを見てきましたが、私が探している回答が見つかりませんでした。

次のように私のコードは次のとおりです。woocommerce /テンプレート/グローバル/ sidebar.phpで

のfunctions.php

function enable_widgets() { 

    register_sidebar(
     array(
      'name' => 'Main Sidebar', 
      'id' => 'sidebar', 
      'description' => 'Here you can add widgets to the main sidebar.', 
      'before_widget' => '<div id="%1$s" class="widget %2$s">', 
      'after_widget' => '</div>', 
      'before_title' => '<h5 id="widget-heading">', 
      'after_title' => '</h5>' 
    )); 

} 

add_action('widgets_init','enable_widgets'); 

sidebar.php

<div class="sidebar"> 
    <?php dynamic_sidebar('sidebar'); ?> 
</div> 
+1

'}' 関数の終了時に欠落しています。 – ucheng

+0

ありがとうございました。私はそれを今更新するつもりですが、不幸にも、私のテーマのfunctions.phpにあるので、問題を解決することはできません。 – Jack1991

+1

テーマのほとんどは、さまざまなテンプレートの異なるサイドバーを登録します。たとえば、ショップページの「Product Sidebar」という名前のサイドバーと、ブログページの「Blog Sidebar」という別のサイドバーがあります。だからそれは衝突ではないでしょう。 – ucheng

答えて

1

を、あなたはwoocommerceがサイドバーをどのように表示するかを見ることができます。

<?php 
if (! defined('ABSPATH')) { 
    exit; // Exit if accessed directly 
} 

get_sidebar('shop'); ?> 

まず、sidebar-shop.phpを検索してからsidebar.phpを探します。 あなたのテーマフォルダの下にsidebar-shop.phpを作成するだけです。

サイドバーshop.phpには、登録したウィジェットエリアが表示されます。

サイドバー-shop.php

<div class="sidebar"> 
    <?php dynamic_sidebar('sidebar'); ?> 
</div> 

同じsidebar.phpを使用してwoocommerce、特定のウィジェットエリアを表示する別のアプローチがあります。 WooCommerceにはconditional tagsがあるので、is_woocommerce()を使用して、ページがWooCommerceテンプレートを使用するかどうかを判断できます。

sidebar.php

<div class="sidebar"> 
    <?php 

    if (is_woocommerce()) { 
     dynamic_sidebar('sidebar'); 
    } else { 
     dynamic_sidebar('default-sidebar'); 
    } 

    ?> 

</div> 
+0

鮮やかな、ちょうど私が探していたもの。ありがとうございました – Jack1991

関連する問題