web-dev-qa-db-fra.com

Afficher la barre latérale si le blog

J'ai deux barres latérales enregistrées. L'un appelé Sidebar (sidebar-1) et l'autre appelé Blog Sidebar (sidebar-2).

Je souhaite afficher la barre latérale Blog sur l'index du blog et les messages uniques. Comme WordPress n’a pas de balise conditionnelle pour la page du blog, j’ai essayé ce qui suit via sidebar.php:

<?php
if ( is_front_page() && is_home() ) {
  // Default homepage - Do nothing
} elseif ( is_front_page() ) {
  // Static homepage - Do nothing
} elseif ( is_home() && is_single() ) {
  // Display blog sidebar
?>

    <aside>
        <?php dynamic_sidebar( 'sidebar-2' ); ?>
    </aside>

<?php
    } else {
      // Display main sidebar
?>

    <aside>
        <?php dynamic_sidebar( 'sidebar-1' ); ?>
    </aside>

<?php } ?>

Lorsque je vais à l'index et à la publication d'un blog, je m'attends à voir la barre latérale Blog (sidebar-2), mais je vois plutôt la barre latérale (sidebar-1).

Via les paramètres de lecture, j'ai sélectionné une page pour mes articles de blog.

1
Sam

Il n'y a pas de balise conditionnelle pour la page de blog. Vous devez utiliser is_home () et is_front_page () pour détecter cette page.

Lorsque vous utilisez is_home () et is_front_page (), vous devez les utiliser dans le bon ordre pour éviter les bugs et tester chaque configuration d'utilisateur:

<?php
if ( is_front_page() && is_home() ) {
 // blog listings
} elseif ( is_front_page() ) {
 // static homepage
} elseif ( is_home() ) {
 // blog page
} else {
 //everything else
}
?>

Tiré de https://codex.wordpress.org/Conditional_Tags

Si vous voulez le vérifier autrement, les articles/page d'accueil sont stockés dans la base de données en tant qu'option permettant d'obtenir les données à l'aide de get_option , que nous pouvons utiliser:

get_option('show_on_front');

Nous pouvons ensuite faire une vérification à ce sujet comme suit:

$front_page_type = get_option('show_on_front');
if($front_page_type = 'posts') {
 // blog page
} else {
 // static front page
}
3
Gareth Gillman