J'ai la requête suivante pour sélectionner les publications par mon type de publication personnalisé. Cela fonctionne bien tout en étant sur la page d'accueil (l'extrait est inclus dans la barre latérale). Dès qu'il est exécuté sur une page de catégorie, l'attribut post_type
est ignoré et les publications du type "post" sont renvoyées. Je suppose que cela a à voir avec plusieurs boucles mais j'ai aussi essayé d'appeler wp_reset_postdata();
et wp_reset_query();
avant et après.
$customPosts = new WP_Query( array(
'post_type' => 'mycustomtype',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish'
));
while ( $customPosts->have_posts() ) : $customPosts->the_post();
$thumbnailUrl = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), "thumbnail");
if ( !empty($thumbnailUrl)) {
/* echo result */
}
endwhile;
je ne suis pas tout à fait sûr du contexte complet de ce que vous faites ici. Il existe un certain nombre de solutions possibles.
le premier est de vous assurer que vous accédez à $post
comme prévu. en d'autres termes, assurez-vous qu'il n'est pas affecté par une autre activité pendant que WordPress construit la page.
je ne sais pas si $post
contient l'objet que vous attendez à ce stade du flux - car à peu près tout pourrait écraser cela. et en regardant votre code, je ne vois même pas où vous affectez $post
pour votre propre utilisation.
j'ai remarqué que vous appelez get_post_thumbnail_id($post->ID)
. Donc, je pense que vous pouvez résoudre votre problème en utilisant $customPosts->$post->ID
au lieu de $post->ID
.
je considère la réponse de Tidy ci-dessus comme une solution - autre que la suggestion de changer $post
en $customPost
vraiment, ma réponse est plus générique, à savoir: assurez-vous de ne pas croiser les noms de variable .
dans certaines conditions, votre code peut fonctionner, alors que dans d'autres, il peut y avoir un problème si une autre activité modifie cette variable. $post
peut être modifié par quelque chose d'autre dans WordPress facilement (évidemment).
sur une page de catégories, par exemple, les articles seront générés par WordPress et il utilisera la variable globale $post
pour lui-même. D'après mes expériences, je parierais tout ce que j'ai sur votre problème. puis soudainement votre widget avec une boucle de publication se brise sur ces pages.
vous pouvez essayer d'autres choses dans cette situation ou dans le futur (mais elles doivent être appelées avec the loop
:
the_post_thumbnail( array(100, 100) );
dans votre boucle
ou essayez $thumb = get_the_post_thumbnail( array(100, 100) );
Avez-vous essayé d'utiliser get_posts () à la place?
//#get access to post settings
global $post;
//#set parameters for extra loop
$args = array(
'post_type' => 'mycustomtype',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish'
);
//#get posts
$customPosts = get_posts($args);
//#loop through them
foreach($customPosts as $post)
{
//#set all the loop functions to use data from this post
setup_postdata($post);
//#do what you want with the post
}
Cela résoudra votre problème. Je rencontrais le même problème. Lorsque j’exprimais cela, cela fonctionnait parfaitement.
$args = array(
'post_type' => 'mycustomtype',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish',
'tag' => 'mycustomtag',
'cat' => 'mycustomcategory'
);
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();