Подключение Siebar-a в Wordpress

386
12 февраля 2017, 13:43

Доброго времени суток, уважаемые гуру кодинга.

добавил к первому сайдбару, что был в скине, код второго (my-sidebar):

function themonic_widgets_init() {
    register_sidebar( array(
        'name' => __( 'Main Sidebar', 'iconic-one' ),
        'id' => 'themonic-sidebar',
        'description' => __( 'This is a Sitewide sidebar which appears on posts and pages', 'iconic-one' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<p class="widget-title">',
        'after_title' => '</p>',
    ) );

    register_sidebar( array(
        'name' => __( 'My Sidebar', 'iconic-one' ),
        'id' => 'my-sidebar',
        'description' => __( 'This is a Sitewide sidebar which appears on posts and pages3', 'iconic-one2' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<p class="widget-title">',
        'after_title' => '</p>',
    ) );
}
add_action( 'widgets_init', 'themonic_widgets_init' );

Скопировал файл sidebar.php и назвал его sidebar-second.php, в нём внёс следующие изменения:

<?php if ( is_active_sidebar( 'my-sidebar' ) ) : ?>
            <?php dynamic_sidebar( 'my-sidebar' ); ?>
некий контент
    <?php else : ?>  
            некий контент
    <?php endif; ?> 

А в файле header.php вписал такую конструкцию:

<?php if ( is_single() ) : ?>
        <?php $sidebar = get_post_meta($post->ID, "sidebar", true); // левый сайдбар
        get_sidebar($sidebar);?>
        <?php else : ?>
    <?php get_sidebar('second'); ?>
        <?php endif; // is_single() ?>

Я не программист, и не могу понять, почему в случае отсутствия значения "произвольное поле", которое может задаваться странице, он не подхватывает по умолчанию sidebar-second.php? Что надо изменить, чтобы подхватывал и выводил этот сайдбар, если не подключен уникальный, который задан через значение произвольного поля?

Answer 1

Потому что else срабатывает на is_single(). То есть второй сайдбар будет выводиться только тогда, когда это условие не выполняется.

Надо примерно так:

<?php if ( is_single() ) {
    $sidebar = get_post_meta($post->ID, "sidebar", true); // левый сайдбар
    if ($sidebar)
        get_sidebar($sidebar);
    else
        get_sidebar('second');
}
    else
        get_sidebar('second');
// is_single() ?>
READ ALSO
Google Calendar add event

Google Calendar add event

Решил поэкспериментировать с Google Calendar и попробовать реализовать добавление события в календарь на определённый день и времяОднако спустя...

271
Нужна помощь в редактирование сайта на Joomla

Нужна помощь в редактирование сайта на Joomla

Нужно внести изменения на главную страницу сайта, у меня есть доступ к хостингу сайта, доступа к CMS(Joomla)- нет, подскажите пожалуйста что и как...

340