2

ウィジェットがある(アクティブである)かどうかに応じて、 Wordpressでサイドバーを出力し、それに応じてショップページに表示しようとしています。

私はPHPにかなり慣れていないので、これまでに次のスクリプトを作成してこれを機能させようとしましたが、実際には発生していないようです。

shop.php

<?php
/**
 * The template for displaying the Shop page.
 */

get_header(); ?>
    <div id="primary" class="site-content">
        <div id="content" role="main">
            <?php shop_content(); ?>
        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar('shop'); ?>
<?php get_footer(); ?>

sidebar-shop.php

<?php
/**
 * The sidebar containing the Shop page widget areas.
 *
 * If no active widgets are in the sidebars (Left, Right and theShop), 
 * the sidebars should be hidden completely.
 */
?>

    <?php 
    // If the left, shop and right sidebars are inactive
if ( ! is_active_sidebar( 'right-sidebar' ) && ! is_active_sidebar( 'shop-sidebar' ) ) {
    return;
}

    // If there are active widgets in the Shop Sidebar
    if ( is_active_sidebar( 'shop-sidebar' ) ) { ?>
        <div id="secondary" class="widget-area" role="complementary">
            <?php dynamic_sidebar( 'shop-sidebar' ); ?>
        </div><!-- #secondary -->
    <?php 
    }

    // If there are active widgets in the Right Sidebar
    elseif ( is_active_sidebar( 'right-sidebar' ) ) { ?>
        <div id="secondary" class="widget-area" role="complementary">
            <?php dynamic_sidebar( 'right-sidebar' ); ?>
        </div><!-- #secondary -->
    <?php   
    }
    ?>

sidebar.php

<?php
/**
 * The sidebar containing the main widget area.
 *
 * If no active widgets in sidebar, let's hide it completely.
 *
 */
?>

    <?php if ( is_active_sidebar( 'right-sidebar' ) ) : ?>
        <div id="secondary" class="widget-area" role="complementary">
            <?php dynamic_sidebar( 'right-sidebar' ); ?>
        </div><!-- #secondary -->
    <?php endif; ?>

上記のスクリプトを変更して、次のように出力するにはどうすればよいですか。

  • 右側のサイドバー(右側のサイドバー)にウィジェットがある場合は、右側のサイドバーを表示します
  • ショップサイドバー(ショップサイドバー)にウィジェットがある場合は、ショップサイドバーを表示します
  • 右側のサイドバーとショップサイドバーの両方にウィジェットがある場合は、ショップサイドバーを表示します
  • 右側のサイドバーにもショップのサイドバーにもウィジェットがない場合は、何も表示しないでください

ありがとうございました。

4

3 に答える 3

0
// if both are active shoe shop
if (is_active_sidebar('shop') && is_active_sidebar('sidebar-1')) {
      get_sidebar('shop');
}
//if shop is active, show shop
elseif (is_active_sidebar('shop')) {
   get_sidebar('shop');
}
// if sidebar 1 is active show it.
elseif (is_active_sidebar('sidebar-1')) {
    get_sidebar('sidebar-1');
}
于 2013-03-18T06:44:21.730 に答える
0

右側のサイドバーよりもショップのサイドバーの優先順位を適切に定義しているため、コードは単純である必要があります。サイドバーを表示する必要がない場合でも、心配する必要はありません。

<?php

// If shop sidebar is active, it takes precedence
if ( is_active_sidebar( 'shop' )){
   get_sidebar( 'shop' ); 
}
elseif (is_active_sidebar( 'sidebar-1' )){
   get_sidebar( 'sidebar-1' );
   //This is "shop side bar is inactive and right sidebar is active"
}

// That's all; just two condition blocks!
?>

ありがとう。

于 2013-03-18T06:53:11.553 に答える
0

ファイルによって変更されていfunctions.phpます。

于 2013-03-25T15:50:38.117 に答える