Wordpress - отображать определенный виджет - PullRequest
20 голосов
/ 18 ноября 2010

Я немного потерян.

Допустим, у меня есть динамическая боковая панель нижнего колонтитула.Пока все просто.

<footer>
    <?php get_sidebar("name") ?>  
</footer>

Отображает это в нижнем колонтитуле.

Но вот мы здесь.Мне нужен КАЖДЫЙ виджет внутри моей сетки:

      <footer>
         <div style="width: 100px:">
            <div style="width: 25%">First widget here</div>
            <div style="width: 25%">Second widget here<</div>
            <div style="width: 25%">Third widget here<</div>
            <div style="width: 25%">Fourth widget here<</div>
          </div>
        </footer>

Так что get_sidebar сейчас не вариант, так как он отображает все виджеты подряд.И я не хочу редактировать сами виджеты.

Как они это делают в темах?

Спасибо.

Ответы [ 5 ]

17 голосов
/ 18 ноября 2010

Вы можете использовать функцию 'the_widget' для этого:

<?php the_widget($widget, $instance, $args); ?>

Дополнительную информацию можно найти в Кодексе Wordpress - The_Widget, ссылка .

2 голосов
/ 18 ноября 2010

Это также хороший справочник - Справочник по функциям / динамическая боковая панель "WordPress Codex

Если вы используете метод на этой странице:

<ul id="sidebar">
 <?php if ( !dynamic_sidebar() ) : ?>
    <li>{static sidebar item 1}</li>
    <li>{static sidebar item 2}</li>
 <?php endif; ?>
 </ul>

Вызатем можно использовать стили CSS для позиционирования виджетов боковой панели по нижнему колонтитулу.

Изменить, чтобы включить следующее ...

Тема Arras CSS:

#footer             { margin: 20px auto 0; width: 980px; background: #ECEBE6; padding-bottom: 10px; border: 1px solid #CCC; }
#footer .widgetcontainer    { padding: 5px 10px; min-width: 150px; }
.no-js #footer .widgetcontainer { height: 190px; }
#footer .widgettitle    { background: none; border: none; font-size: 14px; color: #444; padding: 0 0 10px; letter-spacing: -1px; }
#footer .widgetcontent  { font-size: 12px; background: none; padding: 0; border: none; }
#footer .footer-message { margin: 0; padding: 10px 15px 0; font-size: 11px; }
#footer .footer-message p { margin: 0 0 0.5em; }
#footer .footer-message .floatright { margin-left: 20px; }
#footer-sidebar     { overflow: hidden; margin: 10px 10px 0; padding: 0 0 10px; border-bottom: 1px solid #CCC; }
#footer-sidebar .widgetcontainer    { float: left; margin: 0; max-width: 250px; }
#footer-sidebar ul  { list-style: none; margin: 0; padding: 0; }
#footer-sidebar li  { margin: 0 0 3px; }

Код нижнего колонтитула:

<ul id="footer-sidebar" class="clearfix xoxo">
        <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Footer') ) : ?>
        <li></li>
    <?php endif; ?>
</ul>

В теме он размещает виджеты по всей странице.

0 голосов
/ 10 сентября 2017

Вы можете использовать плагин Widget Options для ограничения или контроля видимости виджетов на любых страницах и устройствах;доступно бесплатно в репозитории: https://wordpress.org/plugins/widget-options/. Или попробуйте использовать widget_display_callback https://developer.wordpress.org/reference/hooks/widget_display_callback/.Надеюсь, это поможет.

function custom_display_callback( $instance, $widget, $args ){
    if( is_page() ){
        return false;
    }
    return $instance;
}
add_filter( 'widget_display_callback', 'custom_display_callback', 50, 3 );

enter image description here

0 голосов
/ 04 декабря 2013

В качестве альтернативы вы также можете использовать:

<?php dynamic_sidebar( 'sidebar-1' ); ?>   
0 голосов
/ 11 июня 2012

Пожалуйста, проверьте мой новый плагин, который отображает определенный виджет.

Посещение: http://wordpress.org/extend/plugins/widget-instance/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...