Ich habe ein Problem mit einer Schleife, die ich in eine benutzerdefinierte Seitenvorlage einfügen möchte. Ich möchte Posts mit Bedingungen anzeigen, aber was auch immer ich in meine WP_query Parameter einfüge, wird es nicht berücksichtigen.
Hier ist mein Vorlagencode:
2 ); $latest = new WP_Query( $args ); ?> have_posts() ) : $latest->the_post(); ?>
Dieser Code gibt mir alle meine Posts, und nicht nur die 2, die ich auf Argumenten gefragt habe. Aber was auch immer ich sage, gibt mir immer die Standardschleife …
Ich habe alles versucht und verstehe immer noch nicht.
Danke für Ihre Hilfe!
** BEARBEITEN **
Dieser Code funktioniert:
$query = new WP_Query(array( 'p' => 42 ));
Aber dieses hier nicht:
$query = new WP_Query(array( 'post__in' => $post_ids, 'post_status' => 'publish', 'ignore_sticky_posts' => false, 'orderby' => 'post__in', 'posts_per_page' => 2 ));
Was auch immer ich in mein Array einfüge, es funktioniert nicht, auch wenn es ein p
Parameter ist. Die zweite $query
zeigt alle meine Posts an.
Was ich sehe, ist, dass Sie WP Kodierungsstandard nicht folgen.
< ?= get_the_title(); ?>
ist im WP-Codierungsstandard nicht erlaubt.
Jetzt erhalten Sie nur den Beitrag und nicht wie von Ihnen vorgesehen, das heißt, Sie haben Ihre Haupt-WP-Abfrage nicht zurückgesetzt.
Wir können den obigen Code wie folgt schreiben:
< ?php /* Template Name: Trends */ get_header(); ?> // Primary loop < ?php while( have_posts() ) : the_post(); ?> < ? the_title(); ?> < ?php the_content();?> < ?php endwhile; ?> < ?php // Paramter for getting 2 posts $args = array( 'posts_per_page' => 2, ); $latest = new WP_Query( $args ); ?> < ?php while( $latest->have_posts() ) : $latest->the_post(); ?> < ?php the_title(); ?>
< ?php endwhile; ?> < ?php wp_reset_postdata(); ?> < ?php get_footer();
Da unsere Versuche zu helfen anscheinend nicht funktioniert haben, habe ich Ihren Code genommen, wie die Frage gerade zeigt:
< ?php /* Template Name: Trends */ get_header(); ?> < ?php the_post(); ?> < ?= get_the_title(); ?> < ?php the_content();?> < ?php $args = array( 'posts_per_page' => 2 ); $latest = new WP_Query( $args ); ?> < ?php while( $latest->have_posts() ) : $latest->the_post(); ?> < ?php the_title(); ?>
< ?php endwhile; wp_reset_postdata(); ?> < ?php get_footer(); ?>
Ich habe diese Vorlage in eine neue Installation von WP eingefügt und die Vorlage einer Seite zugewiesen. Ich habe vier Posts gemacht, Post 1, Post 2, Post 3 und Post 4.
Wenn ich die Seite ansehe, sehe ich Post 4 und Post 3 in dieser Reihenfolge. 2 von ihnen.
Die Antwort auf Ihre Frage ist also, dass Ihr Code funktioniert.