web-dev-qa-db-fra.com

Comment savoir si page_for_posts est affiché (afin de styler un élément de menu)

J'ai défini une page statique pour les publications (identifiant de la page = 110). Cette page ne doit être incluse dans le menu que lorsque l'utilisateur est connecté. Cette dernière étape est obtenue avec l'ajout suivant à header.php (extrait de la balise menu <ul>).

<?php wp_list_pages('sort_column=ID&exclude=100,110,145&title_li='); ?>
        <?php if ( is_user_logged_in() ) { ?>
            <li ><a href="<?php echo get_permalink(110); ?>">Title</a></li>
        <?php } else { ?>

        <?php } ?>

J'utilise freshy2 et j'ai personnalisé le code CSS afin que le lien de la page actuelle dans le menu de navigation de l'en-tête ait une couleur de fond différente de celle du reste (procédure standard ...).

Cependant, comme la page portant l'ID 110 est la page de messages statiques, je ne trouve pas de solution permettant de faire de même pour cette page. Ceci est dû au fait que is_page(110) renvoie false car il reconnaît que le type de publication en cours est is_single() et lorsque je demande un ID de publication, l'ID de la dernière publication est renvoyé. Je ne peux évidemment pas utiliser ce dernier pour interroger l'affichage actuel, car il change tout le temps.

Voici ce que j'ai pour le moment. Ce type de travail fonctionne, mais seulement à mi-chemin car la couleur de fond est toujours la couleur spéciale, même si la page de messages n’est pas l’item actuel.

<?php if ( is_user_logged_in() ) { ?>
            <li <?php
                if (get_option('page_for_posts'))
                { 
                    echo " class=\"page_item page-item-110 current_page_item\"";
                }
                else
                { 
    global $wp_query;
    $thePostID = $wp_query->post->ID;
                    echo " class=\"" . $thePostID . "\"";
                }
            ?>><a href="<?php echo get_permalink(110); ?>">Title</a></li>
        <?php } else { ?>

        <?php } ?>

Des idées? Merci beaucoup d'avance!

EDIT:

Ce code, comme suggéré ci-dessous , fait l'affaire (j'ai simplement ajouté les valeurs manquantes à partir du wp_list_pages d'origine):

        <?php if(!is_user_logged_in())
{
$args = array(
'exclude' => '100,110,145',
'sort column' => 'ID',
'title_li' => ''
 );
}
else
{
$args = array(
'exclude' => '100,145',
'sort column' => 'ID',
'title_li' => ''
 );
}

wp_list_pages( $args );
?>
1
s.d

Je pense que cela devrait fonctionner si vous encapsulez la condition autour des arguments, et non le lien de menu lui-même:

if(!is_user_logged_in())
{
$args = array(
'exclude'      => '100,110,145'
 );
}
else
{
$args = array(
'exclude'      => '100,145'
 );
}

wp_list_pages( $args );
1
SamiSalami