Wie erhalte ich eine variable Anzahl von Posts pro Post-Typ in der Hauptschleife?

8

Ich suche nach einer Möglichkeit, den Inhalt auf der Homepage meines Blogs auszugleichen:

Der Blog hat einige Beitragstypen wie Poscasts, Videos und Blog und ich hätte gerne 10 Beiträge auf der Homepage, aber ich möchte 5 davon immer zum neuesten Blog machen.

Das Erstellen von 3 getrennten Feldern löst mein Problem nicht, da die Beiträge zusammen gemischt sind und es nicht immer so viele Beiträge der anderen Typen gibt.

Ich könnte mir die Lösung für reines PHP vorstellen, aber ich würde gerne eine Vorstellung davon bekommen, wie dies mit der WordPress-API gemacht werden kann. Jede Hilfe, Referenz ist willkommen!

Jonathan dos Santos
quelle
Ja, es ist weit davon entfernt, effektiv oder "der richtige Weg" zu sein, aber trotzdem +1. Schätzen Sie die Anstrengungen, die Sie unternommen haben, um zu zeigen, was Sie erreichen möchten. :)
Kaiser
1
Ich würde vorschlagen, dass Sie die Standardmethode verwenden - sekundäre Schleifen; get_postsGeben Sie einfach 3- Typ-Abfragen aus. Diese bieten unter anderem den zusätzlichen Vorteil des Caching (je nachdem, welches Backend verfügbar ist) und der Sicherheit. codex.wordpress.org/The_Loop#Multiple_Loops, die Sie sicher gesehen haben.
Soulseekah
+ 1 für deine Mühe!
Rutwick Gangurde

Antworten:

1

Wenn Sie immer noch nach einer Alternative suchen, die möglicherweise schneller ist, kann dies Ihnen helfen:

<?php
function customBlogFeed() {

// The Query 
$the_query = new WP_Query( array ( 'post_type' => array( 'post', 'page', 'movie', 'book'), 'posts_per_page' => '6' ) );
//Your post_type array is a list of random post_types. You can add whatever you'd like to match your system.

// The Loop 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>


  <?php the_title(); ?>
      <?php the_content(); ?>

<?php endwhile;

// Reset Post Data
wp_reset_postdata();
}
?>

Um die Ausgabe zu erhalten, platzieren Sie sie <?php customBlogFeed(); ?>dort , wo Sie sie ausgeben möchten.

Wenn Sie wirklich Lust haben, können Sie sich in den Filter post_limits einbinden und die Anzahl der angezeigten Beiträge pro Beitragstyp begrenzen. Ich hoffe das hilft dir bei deiner Suche.

PS - Schauen Sie in WP_Query , es wird Ihnen wirklich helfen.

Nach einigen Recherchen möchten Sie möglicherweise die post_clauses untersuchen , um diese SQL-Charakterisierungen mit WP3.1 + Syntax durchzuführen

David
quelle
1

Also nach ein paar Monaten. Ich habe die Antwort auf Ihre genaue Frage gefunden:

add_action('pre_get_posts', 'custom_main_query', 1);
function custom_main_query( $query ) {
  if ( $query->is_main_query() && is_home() ) { 
  //be super careful with this and to be safe, keep the is_home() 
  //bit there, I've had some funny results without it.

    $query->query_vars['posts_per_page'] = 3; //displays 3 posts ;)
    $query->query_vars['post_type'] = array('post'); //and if you wanted multiple cpts <3

    return $query;

    }
}

Prost

David
quelle