我提出了一个解决方案,当没有填充小部件时,不会在Wordpress中显示侧边栏。我通过从当前页面调用slug并将我的侧边栏命名为与我的页面中的slug相同来完成此操作。
我使用Custom Sidebars插件添加侧边栏。这个插件在侧边栏名称之前的侧边栏的id中添加了“cs-”。例如,我将侧栏命名为“Test”,而侧边栏的ID则为“cs-test”。
现在我希望我的php代码检查边栏的名称是否与页面中的slug相同。所以我打电话给the_slug
,在slug之前我要添加cs-
。在一些帮助下,我想出了这个:
<?php if ( is_active_sidebar( 'cs-'.the_slug(false) ) ) { ?>
<?php dynamic_sidebar( is_active_sidebar( 'cs-'.the_slug(false) ) ) ?>
<?php } else { ?>
<?php } ?>
但这似乎没有帮助。有任何想法如何解决这个问题?谢谢!
答案 0 :(得分:0)
您正在使用函数cs-
连接字符串the_slug(false)
。 可能会导致错误,具体取决于函数返回的内容。
解决方案1:
您可以预先调用并保存该函数并连接两个变量:
<?php
$slug = the_slug(false); //Get return value
$slug = (string)$slug; //Force string conversion
$slug = 'cs-'.$slug; //Concate
if ( is_active_sidebar( $slug ) ) { ?>
<?php dynamic_sidebar( is_active_sidebar( $slug ) ) ?>
<?php } else { ?>
<?php } ?>
解决方案2:
如果你需要这种类型的功能,经常尝试在the_slug()
函数中添加一个字符串参数(应该是你的functions.php中的一个自定义函数),并在函数本身中进行连接:
function the_slug($boolen, $string='') {
//Your code
return $string.$your_var;
}
您的侧边栏代码如下所示:
<?php if ( is_active_sidebar( the_slug(false, 'cs-') ) ) { ?>
<?php dynamic_sidebar( is_active_sidebar( the_slug(false, 'cs-') ) ) ?>
<?php } else { ?>
<?php } ?>