Я создал виджет для своей темы WordPress и хочу вывести его содержимое.
Виджет отображается в бэкэнде под виджетами, поэтому он работает нормально.
Вот код в моем файле page.php
<?php if ( !dynamic_sidebar('Content Footer') ) : ?>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-12">
<div id="contentfooter"></div>
</div><!--/.col -->
</div><!--/.row -->
<?php endif; ?>
К сожалению все внутри тегов php не отображается. Просто необработанный контент, который я создал в Backend Widget.
Это работает, когда я помещаю условие в HTML-материал:
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-12">
<div id="contentfooter">
<?php if ( !dynamic_sidebar('Content Footer') ) : ?>
<?php endif; ?>
</div>
</div><!--/.col -->
</div><!--/.row -->
Но тогда HTML-код всегда отображается, даже если я не использую виджет на определенной странице.
Вот Декларация Виджета в моих функциях: php:
if ( function_exists('register_sidebar') )
register_sidebar( array(
'name' => __( 'Content Footer'),
'id' => 'content_footer',
'description' => __( 'Content Footer Area', 'twentyeleven' ),
'before_widget' => '',
'after_widget' => '',
'before_title' => '<h3 class="content-footer-header">',
'after_title' => '</h3>',
));
Кто-то знает, что мне нужно изменить, чтобы выводить код, только если используется область виджетов?
Спасибо
Вы должны использовать is_active_sidebar()
чтобы проверить, есть ли у вас виджеты на этой боковой панели, а затем распечатать его содержимое.
<?php if ( is_active_sidebar('content_footer') ) : ?>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-12">
<div id="contentfooter">
<?php dynamic_sidebar('content_footer'); ?>
</div>
</div><!--/.col -->
</div><!--/.row -->
<?php endif; ?>
Других решений пока нет …