WordPress : Comment ne pas afficher la publication ayant une balise spécifiée dans ma page d’accueil ?

Publié par Jean-Michel le

Je suis assez nouveau dans le développement WordPress et j’essaie d’implémenter ce thème personnalisé qui gère les articles dits en vedette : http://lnx.asper-eritrea.com/

Comme vous pouvez le voir dans la zone des articles de la page d’accueil, j’ai la sous-zone Articoli in evidenza qui contient mes articles en vedette et en dessous l’ Ultimi Articoli qui contient les dernières publications.

Pour implémenter cela, j’utilise la balise de messages et dans la zone des messages futurs, je montre les messages ayant le tag = en vedette .

Alors voici mon code :

<section id="blog-posts">

<header class="header-sezione">
        <h2>Articoli in evidenza</h2>
</header>

<?php query_posts('tag=featured');?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <div id="featured-posts">

    <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
      <div class="meta">
Scritto da <span class="author"><?php the_author_link(); ?></span> &nbsp;//&nbsp;  <?php the_category(', ') ?>  &nbsp;//&nbsp;  <?php comments_popup_link('Nessun Commento', '1 Commento ', '% Commenti'); ?> 
      </div>
      <div class="featured-details"><?php the_excerpt()?>
      <?php $featured_img = get_post_meta($post->ID, 'featured_img', $single = true); ?>
      <a href="<?php the_permalink(); ?>"><img src="<?php echo $featured_img ?>" alt="<?php the_title(); ?>" /></a>
      </div>
    </div>

<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>



    <header class="header-sezione">
        <h2>Ultimi Articoli</h2>
    </header>

    <?php
    if (have_posts()) :
        // Start the Loop.
        while (have_posts()) : the_post();

            /*
             * Include the post format-specific template for the content. If you want to
             * use this in a child theme, then include a file called called content-___.php
             * (where ___ is the post format) and that will be used instead.
             */
            get_template_part('content', get_post_format());

        endwhile;
    else :
        // If no content, include the "No posts found" template.
        get_template_part('content', 'none');

    endif;
    ?>

</section>

Comme vous pouvez le voir d’abord, je montre les messages ayant une balise en utilisant la fonction query -posts() :

<?php query_posts('tag=featured');?>

Maintenant, mon problème est que si un message a la balise en vedette , je ne veux pas qu’il soit affiché dans la dernière zone de message (pour le moment, il est affiché). J’ai donc essayé d’utiliser ce code :

<header class="header-sezione">
    <h2>Ultimi Articoli NOT FEATURED</h2>
</header>

<?php query_posts('tag != featured');?>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <div id="featured-posts">

    <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
      <div class="meta">
Scritto da <span class="author"><?php the_author_link(); ?></span> &nbsp;//&nbsp;  <?php the_category(', ') ?>  &nbsp;//&nbsp;  <?php comments_popup_link('Nessun Commento', '1 Commento ', '% Commenti'); ?> 
      </div>
      <div class="featured-details"><?php the_excerpt()?>
      <?php $featured_img = get_post_meta($post->ID, 'featured_img', $single = true); ?>
      <a href="<?php the_permalink(); ?>"><img src="<?php echo $featured_img ?>" alt="<?php the_title(); ?>" /></a>
      </div>
    </div>

<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>

Mais ne fonctionne pas et la publication en vedette est toujours affichée sur la page d’accueil. Comme vous pouvez le voir, j’ai essayé de spécifier que, pour être affiché, un article ne peut pas avoir la balise sélectionnée :

<?php query_posts('tag != featured');?>

Pourquoi ne pas travailler ? Qu’est-ce que je rate? Pouvez-vous m’aider à résoudre ce problème ?

TX

Solution n°1 trouvée

est_front_page()

Vous devriez essayer <?php is_front_page(); ?>ou vice versa.

http://codex.wordpress.org/Function_Reference/is_front_page

<?php if (is_front_page()) { ?>
    <!-- Do something -->
<?php } else { ?>
    <!-- Add else only if you need it! -->
<?php } ?>

Solution n°2 trouvée

Pour renvoyer les articles qui ne contiennent pas de balise particulière, vous devez utiliser l’ID du terme dans l’ tag__not_inargument.

// get the term using the slug and the tag taxonomy
$term = get_term_by( 'slug', 'featured', 'post_tag' );
// pass the term_id to tag__not_in
query_posts( array( 'tag__not_in' => array ( $term->term_id ) );

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *