web-dev-qa-db-fra.com

Création d'une barre latérale différente pour les publications uniques que pour la page principale.

Comment créer une barre latérale différente pour les publications uniques par rapport à la page principale?

En ce moment, j'ai 2 pages de travail, une pour les pages et une pour le blog.

merci

voici à quoi ça ressemble dans funtions.php

// Register Sidebars
register_sidebar(array('name' => 'Sidebar Blog','id' => 'sidebar-blog'));
register_sidebar(array('name' => 'Sidebar Pages','id' => 'sidebar-pages'));
register_sidebar(array('name' => 'Footer','id' => 'sidebar-footer'));

// Register Menus
register_nav_menu( 'top_navi', 'Top Navigation' );
register_nav_menu( 'main_navi', 'Main Navigation' );

voici à quoi ça ressemble dans sidebar.php

<div id="sidebar">  
    <ul>

<?php
    if(is_page() && is_active_sidebar('sidebar-pages')) : dynamic_sidebar('sidebar-pages');
    elseif(is_active_sidebar('sidebar-blog')) : dynamic_sidebar('sidebar-blog');
else : ?>

    <?php wp_list_categories('title_li=<h2>Categories</h2>'); ?>

    <?php wp_list_pages('title_li=<h2>Pages</h2>'); ?>

    <li><h2>Archives</h2>
        <ul>
        <?php wp_get_archives(); ?>
        </ul>
    </li>

    <?php wp_list_bookmarks(); ?>

<?php endif; ?>

    </ul>
</div>

Merci !

1
qaedus

Je considérerais ce qui suit ...

Enregistrez une nouvelle barre latérale:

function your_new_widget() {
register_sidebar( array(
    'name'          => __( 'Single View Sidebar', 'your_textdomain' ),
    'id'            => 'sidebar-single',
    'description'   => __( 'This widget area is found only on the single post view.', 'your_textdomain' ),
) );
}
add_action( 'widgets_init', 'your_new_widget' );

Créez un nouveau modèle de barre latérale:

/** New file: sidebar-single.php */
if ( is_active_sidebar( 'sidebar-single' ) ) :
    dynamic_sidebar( 'sidebar-single' );
endif;

Puis modifiez votre modèle 'single.php' pour appeler la nouvelle barre latérale (ci-dessus):

/** Modify single.php */
get_sidebar( 'single' );

Bien sûr, vous aurez besoin de préciser le nouveau fichier de modèle de barre latérale à vue unique ... et la hiérarchie de modèles WordPress se chargera de l’utilisation de votre nouvelle barre latérale sur des vues à publication unique.

1
Edward Caissie

Enregistrez les barres latérales:

register_sidebar(array('name' => 'Sidebar Blog','id' => 'sidebar-blog'));
register_sidebar(array('name' => 'Sidebar Pages','id' => 'sidebar-pages'));
register_sidebar(array('name' => 'Sidebar Post','id' => 'sidebar-posts'));

Ensuite, dans votre modèle de barre latérale, utilisez les balises conditionnelles is_page() et is_single():

if( is_page() && is_active_sidebar('sidebar-pages') ){
     dynamic_sidebar('sidebar-pages');

}elseif( is_single() && is_active_sidebar('sidebar-posts') ){
     dynamic_sidebar('sidebar-posts');

}elseif( is_active_sidebar('sidebar-blog') ){
     dynamic_sidebar('sidebar-blog');

}else{
    //Default
}
0
Stephen Harris