我想检查一个注册的边栏是否有小部件内容-但似乎找不到用于此的WP函数-is\\u active\\u小部件检查它是否有内容,但不检查它是否存在。
function ql_widget( $widget, $widget_name, $element = \'sider\' ){
if ( $widget ) { // widget name passed ##
// check if widget is active - return html & widget content if true ##
if ( is_active_sidebar( $widget ) ) {
echo \'
<div class="\'.$element.\'">\';
dynamic_sidebar( $widget );
echo \'</div>\';
} else {
// issue error if requested widget does not exist or is empty ##
if ( ql_user_is_administator() ) { // user is admin ##
if ( dynamic_sidebar( $widget ) ) { // empty ##
$message = \'empty\';
} else { // widget ID or name wrong ##
$message = \'error\';
}
?>
<div class="error"><strong>Widget <?php echo $message; ?>:</strong>
<?php echo $widget_name ? $widget_name : $widget ; ?></div>
<?php
}
}
}
}
我在页面上使用以下命令调用此命令:
// load widget ##
// widget_id, widget name, class of containing element ##
ql_widget( \'sidebar-general\', \'Standard Sidebar\', \'sider\' );
侧栏使用register\\u sidebar()正确注册,并为每个侧栏分配了唯一的ID。
当前,如果小部件丢失或为空,此函数会将错误返回给管理员-我希望能够调整错误以指示它是否丢失或为空
谢谢
UPDATE以下是工作功能:link to pastebin
SO网友:Adam
您可以通过使用检查侧栏是否处于活动状态并正在使用中(包含包含内容的小部件)is_active_sidebar
, 这里有一个例子。。。
if ( is_active_sidebar( $sidebar ) ) {
// Display some text
} else {
// Display none
};
在哪里
$sidebar
是要检查的侧栏的名称、ID或编号。
更新:
这里有一个改进函数易读性的建议,
function ql_widget( $widget, $widget_name, $element = \'sider\' ){
if ( $widget ) {
$message = (ql_user_is_administator() ? \'empty\' : \'error\');
$widget_name = ($widget_name ? $widget_name : $widget);
if ( is_active_sidebar( $widget ) ) {
$html = \'<div class="\'.$element.\'">\';
$html .= dynamic_sidebar( $widget );
$html .= \'</div>\';
echo $html;
} else {
$html = \'<div class="error"><strong>Widget \';
$html .= $message;
$html .= \'</strong> \';
$html .= $widget_name;
$html .= \'</div>\';
echo $html;
}
}
} // This is the end of the function
如果您只想在admin时显示错误消息,请将
else
语句,或更改
else
到
elseif
并运行管理员检查,并可以选择使用
else
满足所有其他结果的条件,例如对于常规用户。法典参考:
http://codex.wordpress.org/Function_Reference/is_active_sidebar