3 Beiträge in der Schleife, zeigen Stickies zuerst

Okay, ich frage mich, ob es überhaupt möglich ist! Da ich im Internet sehr wenig Informationen dazu gefunden habe. Dies ist eine neue WP-Installation, mit der ich experimentiert habe, sodass ich in einer vereinfachten Umgebung arbeiten kann (anstatt zu versuchen, das vollständige Problem selbst auf der Website meines Live-Clients zu lösen, wenn das Sinn macht).

Ich versuche, insgesamt 3 Beiträge mit query_posts() . Ich möchte, dass die klebrigen Posts zuerst angezeigt werden und dann für den Rest der Schleife aus Nicht-Stickies bestehen.

Wie Sie sehen können, lädt es zu viele Beiträge (insgesamt 6, das sind alle Beiträge auf der Website):

http://www.matt-demo-wordpress.com.gridhosted.co.uk/?page_id=46

Hier ist der Code, den ich verwende:

   $sticky, 'posts_per_page' => 3, 'post_type' => 'post' )); get_template_part('loop', 'query-sticky' ); ?>  $sticky )); get_template_part('loop', 'query-sticky-none' ); wp_reset_query(); ?> 

Ich nehme an, dass die zweite Schleife versucht, 10 Beiträge gemäß meinen Einstellungen in WP anzuzeigen. Ich hatte gehofft, dass der posts_per_page Parameter in der ersten Schleife vielleicht zur zweiten übertragen würde.

Weil ich natürlich posts_per_page in der zweiten Schleife nicht mehr spezifizieren kann, posts_per_page mehr als 3 Beiträge angezeigt würden.

Ist es tatsächlich möglich, dass klebrige Posts auf diese Weise funktionieren? Oder ist der einzige Weg, um sie richtig arbeiten zu lassen, um sie auf der “Posts” -Seite in WordPress zu verwenden? Keine benutzerdefinierte Abfrage verwenden?

Solutions Collecting From Web of "3 Beiträge in der Schleife, zeigen Stickies zuerst"

Probieren Sie es aus. Es ersetzt query_posts() , das Sie niemals mit WP_Query verwenden sollten (es tötet Unicorns).

Im Grunde werden zuerst Ihre Haftnotizen abgefragt und dann, wenn weniger als die 3 erforderlichen Beiträge vorhanden waren, wird eine weitere Abfrage für die Anzahl der Beiträge durchgeführt.

 /** Grab the sticky post ID's */ $sticky = get_option('sticky_posts'); /** Query the sticky posts */ $args = array( 'post__in' => $sticky, 'posts_per_page' => 3, 'post_type' => 'post' ); $sq = new WP_Query($args); /** Count the number of post returned by this query */ $sq_count = $sq->post_count; /** Output your sticky posts */ get_template_part('loop', 'query-sticky'); // You'll need to globalize `$sq` in this template /** Check to see if any non-sticky posts need to be output */ if($sq_count < 3) : $num_posts = 3 - $sq_count; /** Query the non-sticky posts */ $sticky = get_option('sticky_posts'); $args = array( 'post__not_in' => $sticky, 'posts_per_page' => $num_posts, 'post_type' => 'post' ); $nq = new WP_Query($args); /** Output your non-sticky posts */ get_template_part('loop', 'query-sticky-none'); // You'll need to globalize `$nq` in this template endif; 

“Ich möchte nicht in meinen Vorlagen globalisieren”

Wenn Sie nicht die Variablen $sq und $nq in Ihren Vorlagen globalisieren möchten, können Sie anstelle von get_template_part() locate_template()

 locate_template('loop-query-sticky.php'); locate_template('loop-query-sticky-none.php');