web-dev-qa-db-fra.com

Plusieurs instances de requêtes d'images en vedette

J'ai un code personnalisé intégré dans l'en-tête de mon thème qui obtient l'image sélectionnée à partir d'un message, affiche l'image et les liens vers les messages permalien lorsque l'utilisateur clique dessus.

Le problème que je rencontre, c’est que cela se produit sur 2 divisions différentes qui collectent des informations de 2 catégories différentes, mais lorsque vous survolez le lien en tant qu’utilisateur, il n’utilise le lien permanent que d’une des deux images. J'utilise le plug-in "page links to" pour rediriger le message vers une page du site. Je me demande donc si cela pose problème. Ci-dessous mon extrait obtenant l'image sélectionnée dans 2 divs séparés:

<div id="homeprint">
<a href="<?php the_permalink(); ?>">
<?php $the_query = new WP_Query( 'cat=100' );

// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
    if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
        the_post_thumbnail();
    }
endwhile; ?>
</a>           
</div>

<div id="lookup">
<a href="<?php the_permalink(); ?>">
<?php $the_query = new WP_Query( 'cat=101' );

// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
    if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
        the_post_thumbnail();
    }
endwhile;

// Reset Post Data
wp_reset_postdata(); ?>
</a>         
        </div>

Est-ce que j'ai besoin de deux références de wp_reset_postdata(); ou est-ce que je ne le fais pas correctement?

L'exemple est ici dans l'en-tête. Vous verrez deux images rectangulaires qui devraient créer un lien vers deux pages différentes. À l'heure actuelle, ils sont tous deux liés au même endroit. Merci d'avance à tous.

2
diventato

Pour les deux boucles bouger

<a href="<?php the_permalink(); ?>">

À après

while ( $the_query->have_posts() ) : $the_query->the_post();

the_permalink() est une balise de gabarit et, en tant que telle, génère ce qu'elle fait, en fonction de la variable globale $post. Dans votre boucle personnalisée, il ne contient pas la publication que vous souhaitez après l'appel $the_query->the_post().

0
Rarst

Après quelques conseils de mon pote Rarst, j'ai été capable de faire ce travail. j'ai changé

ce

<a href="<?php the_permalink(); ?>">
<?php $the_query = new WP_Query( 'cat=100' );

// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
    if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
        the_post_thumbnail();
    }
endwhile; ?>
</a>

pour ça

<?php $the_query = new WP_Query( 'cat=100' ); ?>

<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<a href="<?php the_permalink(); ?>">
    <?php if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
        the_post_thumbnail();
    }
endwhile; ?>
</a>  
<?php wp_reset_postdata(); ?>

Comme Rarst l'a mentionné, le lien permanent ne fonctionnait pas comme il se doit, car il n'était pas placé dans la boucle ni après la requête. Après l'appel de la requête, le permalien avait un emplacement pour créer un lien vers ... la vignette du message.

J'expérimente encore avec php même si je crée des sites Wordpress depuis des années. Il y a toujours quelque chose à apprendre dans le monde merveilleux de la conception Web :)

0
diventato