is_active_widget函数是否可以动态检查添加到侧栏的每个小部件是否有内容,如果其中任何一个有内容,则返回true?
不,它不能。您可以检查是否有任何小部件在其上保存了数据,但小部件是否保存了数据并不能很好地指示它是否有任何要呈现的内容。这种方法唯一可行的方法是亲自检查每个可能的小部件,并记录哪些值会导致小部件呈现任何内容。
最接近的方法是捕获dynamic_sidebar()
具有output buffering 然后在输出任何内容之前检查其中是否有HTML:
<?php
ob_start();
dynamic_sidebar( \'sidebar\' );
$sidebar = ob_get_clean();
if ( $sidebar ) :
?>
<aside class="sidebar">
<?php echo $sidebar; ?>
</aside>
<?php
endif;
?>
问题是,即使用户看不到任何内容,一些小部件仍然可以输出HTML。在这种情况下,侧栏仍将呈现。可以通过使用
strip_tags
要在检查侧栏是否为空之前删除任何HTML,请执行以下操作:
if ( trim( strip_tags( $sidebar ) ) ) :
endif;