因此,我有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>
但那没用。
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
标记向变量中添加1$myCounter
(按1迭代)
结束While循环请记住,您需要在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 -->\';
}
}