根据活动侧边栏输出列号

时间:2015-06-23 作者:user3174600

    $sidebars = array(
            is_active_sidebar( \'footer-4\' ),
            is_active_sidebar( \'footer-3\' ),
            is_active_sidebar( \'footer-2\' ),
            is_active_sidebar( \'footer-1\' ),
    );

    $col = 0;

    foreach ( $sidebars as $sidebar ) {

        if ( $sidebar ) {
            $col++;
        }

    }

    echo \'col-\'.$col.\'\';

我要做的是输出正确数量的WordPress活动边栏。因此可以使用css设置样式示例:如果3个侧栏处于活动状态,那么如果(1)列处于活动状态,那么将得到第3列。

上述代码有效。我关心的是它是否可以改进,这是正确的方法吗?或者可以使用增量,例如:$i=0$i++;而不是数组。

谢谢

2 个回复
SO网友:passatgt

使用array_filter() 函数,它将删除每个值为false的数组元素。然后可以计算数组长度。因此,您的示例如下所示:

$sidebars = array(
        is_active_sidebar( \'footer-4\' ),
        is_active_sidebar( \'footer-3\' ),
        is_active_sidebar( \'footer-2\' ),
        is_active_sidebar( \'footer-1\' ),
);

$active_sidebars = array_filter($sidebars);

echo \'col-\'.count($active_sidebars);

SO网友:James Barrett

来自Wordpress Codex:is\\u active\\u sidebar()

此条件标记检查给定侧栏是否处于活动状态(正在使用)。这是一个布尔函数,意味着它返回TRUE或FALSE。

任何包含小部件的侧栏都将返回TRUE,而任何不包含任何小部件的侧栏都将返回FALSE。

因此,您应该能够这样做:

$col = 0;

if( is_active_sidebar( \'footer-4\' ) ) $col++;
if( is_active_sidebar( \'footer-3\' ) ) $col++;
if( is_active_sidebar( \'footer-2\' ) ) $col++;
if( is_active_sidebar( \'footer-1\' ) ) $col++;

echo \'col-\'.$col;
甚至可能:

$col = 0;

for ($i = 1; $i <= 4; $i++) {
  if( is_active_sidebar( \'footer-\'.$i ) ) $col++;
}

echo \'col-\'.$col;
NOTE: 我没有时间测试这两种方法中的任何一种。

结束