get_posts funziona ma la nuova wp_query no

Mi è stato detto che get_posts è una pessima funzione per usare ciò che creare un new WP_query è assolutamente migliore.

Il mio problema è che il mio codice get_posts funziona ma quando ho provato a trasformarlo in un WP_query , restituisce risultati vuoti. Assistenza per favore? 🙁 Mi piacerebbe davvero farlo funzionare perché sospetto che i get_posts che ho su index.php / category-9.php stiano interferendo con il normale loop su category.php

Get_posts version:

  

<a href="https://wordpress.stackexchange.com/questions/143033/get-posts-works-but-new-wp-query-doesnt/">

'attachment', 'post_mime_type' => 'image', 'numberposts' => 4, 'post_status' => null, 'post_parent' => $post->ID, 'orderby' => name, 'order' => ASC ); $attachments = get_posts($args); if ($attachments) { foreach ($attachments as $post) { setup_postdata($post); ?> <a class="postpreview" href="https://wordpress.stackexchange.com/questions/143033/get-posts-works-but-new-wp-query-doesnt/post_parent) ?>">ID, thumbnail) ?>

WP_query versione:

  

<a href="https://wordpress.stackexchange.com/questions/143033/get-posts-works-but-new-wp-query-doesnt/">

'attachment', 'post_mime_type' => 'image', 'numberposts' => 4, 'post_status' => null, 'post_parent' => $post->ID, 'orderby' => name, 'order' => ASC ); $attachments = new WP_Query($args); while ($attachments->have_posts()) : ?> <a class="postpreview" href="https://wordpress.stackexchange.com/questions/143033/get-posts-works-but-new-wp-query-doesnt/post_parent) ?>">ID, thumbnail) ?>

Solutions Collecting From Web of "get_posts funziona ma la nuova wp_query no"

Dimentichi $query->the_post() , che è lo stesso di setup_postdata() . Inoltre stai usando $post->ID all’interno del ciclo, ma $post non è l’object corrente del loop. Hai anche errori di syntax; ad esempio passi la thumnail a wp_get_attachment_image() invece di una stringa "thumbnail" e passi il name come argomento orderby invece della stringa "name" , o ASC invece di "ASC" :

  < ?php //as you are inside a loop but I don't see $post variable in your code, //I assume you want the current post in the loop as parent $parent_id = get_the_ID(); $args = array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'posts_per_page' => 4, 'post_status' => 'inherit', 'post_parent' => $parent_id, 'orderby' => 'name', 'order' => 'ASC' ); $attachments = new WP_Query($args); while ($attachments->have_posts()) { $attachments->the_post(); //I pass $parent_id to get_permalink() because you was trying //to do that in your code but I'm not sure if this is what you want ?> < ?php echo wp_get_attachment_image(get_the_ID(), 'thumbnail') ?> < ?php } wp_reset_postdata(); ?> 

In ogni caso, la new WP_query non è molto meglio di get_posts() , ognuno ha i suoi benefici e il meglio dipende da cosa si vuole fare.