is_active-sidebar loop

时间:2014-03-26 作者:nCore

因此,我有4个小部件,它们位于大3列中,当它们不活动时,我会放置一个占位符作为用户指南,以便用户知道在哪里放置什么。

我确实成功地计算出了is\\u active,但它原来是一个很长的代码,我想知道是否有办法缩短它。

从available-course-list-1到-4的小部件

<?php if ( is_active_sidebar( \'available-course-list-1\' ) ) : ?>
    <div class="large-3 medium-3 columns">
     <div class="panel">
       <?php dynamic_sidebar( \'available-course-list-1\' ); ?></div>
     </div>
<?php else: ?>
    <div class="large-3 medium-3 columns">
    <div class="panel">
    <h5>Available Course List #2</h5>
    <p>To add lists courses in this widget, please use the Available Course List widget panel.</p>
    </div>
    </div>
<?php endif; ?>
我试过这样的方法:

<?php if ( is_active_sidebar( \'available-course-list-1\', \'available-course-list-2\' ) ) : ?>
        <div class="large-3 medium-3 columns">
         <div class="panel">
           <?php dynamic_sidebar( \'available-course-list-1\', \'available-course-list-2\' ); ?></div>
但那没用。

3 个回复
SO网友:Pieter Goosen

is_active_sidebar 具有单个值,无论是sideabar id还是名称。如果有多个侧边栏,应重复is_active_sidebar, 每个都有一个特定的侧栏id或名称。

你会这样做

<?php if ( is_active_sidebar( \'available-course-list-1\' ) && is_active_sidebar( \'available-course-list-2\' )) : ?>

SO网友:Russel Fish

我设法找到了一个稍微不同的解决方案,不确定它是否完全适合您的问题,但希望它能帮助其他人。将以下信息放入sidebar.php 文件:

<?php
  $myCounter =  1;
  while (is_active_sidebar("services-" . $myCounter)) {
    echo \'<aside id="secondary" class="widget-area" role="complementary">\';
      dynamic_sidebar("services-" . $myCounter); 
    echo \'</aside><!-- #secondary -->\';
  $myCounter++;
  }
?>
代码说明:(左边的行号)

声明变量并初始化为1,同时在侧栏名称(在While循环的第一次迭代中)中有一个包含已发布内容的侧栏“services-1”将id放在aside标记中#secondary 和班级.widget-area 角色所在位置complementary.services-1 (在while循环的第一次迭代中)关闭aside 标记$myCounter (按1迭代)

  • 结束While循环
    1. 请记住,您需要在functions.php 文件(credit here):

      add_action( \'after_setup_theme\', \'ja_theme_setup\' );
      function ja_theme_setup() {
          add_theme_support( \'post-thumbnails\');
      }
      
      以及在希望侧栏显示的位置添加以下代码,例如,在front-page.php 页面示例:

      get_sidebar(\'services-1\');

      如果您只想复制和粘贴代码并更改services- 名称

      然后可以使用echo 并在其周围放置其他HTML元素,并在style.css 文件

      [编辑:2017年5月7日21时46分]

      上述答案的唯一问题是,如果中间的一个小部件没有被使用,那么迭代将停止,而您将无法获得其余的边栏/小部件。

      在我的例子中,我知道我使用了5个侧栏,因此我创建了以下代码,而不是while循环:

      $myCounter = 1;
      for ($myCounter = 1;$myCounter < 6;$myCounter++) {
      if (is_active_sidebar("services-" . $myCounter)) {
          echo \'<aside id="secondary" class="widget-area" role="complementary">\';
          dynamic_sidebar("services-" . $myCounter); 
          echo \'</aside><!-- #secondary -->\';
      }   
      
      }

    SO网友:s_ha_dum

    很明显,缩短它的方法是avoid repeating yourself:

    ?>
    <div class="large-3 medium-3 columns">
      <div class="panel"><?php
        if ( is_active_sidebar( \'available-course-list-1\' ) ) {
          dynamic_sidebar( \'available-course-list-1\' );
        } else { ?>
          <h5>Available Course List #2</h5>
          <p>To add lists courses in this widget, please use the Available Course List widget panel.</p><?php
        } ?>
      </div>
    </div><?php
    
    都不是is_active_sidebar() 也没有dynamic_sidebar() 接受侧边栏的“列表”,这样你所尝试的就行不通了。据我所知,没有任何核心功能可以简化您的代码,只有基本的PHP和一些想法。

    结束

    相关推荐

    Loops in category description

    我希望您能帮助我找到如何做我需要的事情:我有一些帖子,例如:文章标题:香蕉文章标题:橙色文章标题:Lemon文章标题:草莓所有这些文章都需要像这样的面包屑:首页>水果>\\35;标题#在“水果”类别页面中,我想创建如下内容:黄色水果(以及所有关于黄色水果的文章列表)橙色水果(以及所有关于橙色水果的文章列表)红色水果(以及所有关于红色水果的文章列表)要做到这一点,我认为在类别描述中,我应该手动编写标题(黄色水果、橙色水果、红色水果),并且在每个标题下,我应该放置一个循环,以放置所有具有特定标签的