Benutzerdefinierte WP_Query funktioniert nicht richtig

OK,

Also habe ich eine benutzerdefinierte WP_Query erstellt, die den post_type- post erhält und ihn als formatierte Liste ausgibt. Es funktioniert gut und gibt die formatierte Liste aus, aber darunter werden alle Posts wieder angezeigt, aber in einem völlig anderen Format (unstyled).

  'post', 'post_status' => 'publish', 'pagination' => true, 'paged' => (get_query_var('paged') ? get_query_var('paged') : 1), 'posts_per_page' => 20, 'order' => 'ASC', 'orderby' => 'date', ); ?>  have_posts()): ?> have_posts()): $wp_query->the_post() ?> 
<a href="https://wordpress.stackexchange.com/questions/154197/custom-wp-query-not-working-correctly/" class="fancybox">
<a href="https://wordpress.stackexchange.com/questions/154197/custom-wp-query-not-working-correctly/" class="btn btn-primary">View full story <a href="https://wordpress.stackexchange.com/questions/154197/custom-wp-query-not-working-correctly/#disqus_thread" class="btn btn-default"> Comments

<?php previous_posts_link(' Previous page'); ?>
<?php next_posts_link('Next page '); ?>

No news right now, please check back later.

Dies ist alles in einer Vorlage partiell und wird mit der Methode get_template_part() aufgerufen. Wenn ich die WP_Query einer anderen Variable als $wp_query zuweise, $wp_query sie sich nicht, aber ich brauche sie als $wp_query damit die Paginierungslinks funktionieren. Ich $wp_query auch $wp_query und $wp_query die Post-Daten am Ende der Schleife zurück. Verwirrt und ich hoffe du kannst helfen!

Solutions Collecting From Web of "Benutzerdefinierte WP_Query funktioniert nicht richtig"

Verwenden Sie wp_reset_query() , um die ursprüngliche Abfrage wiederherzustellen. Dies ruft auch wp_reset_postdata , Sie können das also einfach ersetzen.

Das ist persönliche Vorliebe, aber ich mag $wp_query nicht wirklich und kompliziere Dinge. Es gibt zwei Wege, um dieses Problem zu lösen: $wp_query , indem Sie eine temporäre Variable mit $wp_query und $wp_query den Namen Ihrer Variablen $wp_query und die $wp_query , was ich wiederum für Ihre persönlichen Präferenzen empfehlen würde

METHODE 1

Wie ich schon sagte, können Sie $wp_query eine temporäre Variable $wp_query und sie ebenfalls $wp_query

 < ?php // get all post types $args = array ( 'post_type' => 'post', 'post_status' => 'publish', 'pagination' => true, 'paged' => (get_query_var('paged') ? get_query_var('paged') : 1), 'posts_per_page' => 20, 'order' => 'ASC', 'orderby' => 'date', ); $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query->query( $args ); < --- YOUR LOOP ETC---> $wp_query = null; $wp_query = $temp; // Reset 

Methode 2

Dies ist die Methode, die ich bevorzuge. Geben Sie Ihrer Variablen einen eindeutigen Namen, z. B. $my_query und korrigieren Sie die next_posts_link in next_posts_link . So wird Ihre benutzerdefinierte Abfrage jetzt aussehen. ( Hinweis: Keine Notwendigkeit, das PHP-Tag zu missbrauchen. Wenn Sie nicht von PHP zu HTML wechseln und umgekehrt, müssen Sie PHP-Tags nicht für jedes Element öffnen und schließen. Überprüfen Sie meinen Code unten)

 < ?php // get all post types $args = array ( 'post_type' => 'post', 'post_status' => 'publish', 'pagination' => true, 'paged' => (get_query_var('paged') ? get_query_var('paged') : 1), 'posts_per_page' => 20, 'order' => 'ASC', 'orderby' => 'date', ); $my_query = new WP_Query($args); if ($my_query->have_posts()): while($my_query->have_posts()): $my_query->the_post() ?> < ---YOUR LOOP ETC---> 

OK, das vermasselt den Seitenumbruch. Um dies zu beheben, müssen Sie den Parameter $max_pages in next_posts_link , damit Ihr next_posts_link ähnlich aussieht

 < ?php previous_posts_link(' Previous page', $my_query->max_num_pages); ?> 

Dies wird Ihr Paginierungsproblem beheben