Come ottenere un numero variabile di post per tipo di post nel loop principale?


8

Sto cercando un modo per bilanciare i contenuti nella homepage del mio blog:

il blog ha alcuni tipi di post come Poscasts, Video e Blog e vorrei dire diciamo 10 Post sulla homepage, ma vorrei che 5 di essi fossero sempre l'ultimo Blog.

Fare 3 caselle separate non risolve il mio problema perché i post sono misti insieme e non ci saranno sempre tanti post degli altri tipi.

Potrei pensare alla soluzione per esso su puro PHP, ma mi piacerebbe avere un'idea su come farlo utilizzando l'API wordpress, qualsiasi aiuto, riferimento sarà il benvenuto!


Sì, è ben lungi dall'essere efficace o "il modo giusto" di farlo, ma comunque +1. Apprezzo lo sforzo che hai fatto per mostrare ciò che vuoi ottenere. :)
Kaiser

1
Ti suggerirei di usare il modo standard di fare le cose - loop secondari; basta inviare get_postsquery di 3 tipi; questi arriveranno con l'ulteriore vantaggio della memorizzazione nella cache (qualunque sia il backend disponibile) e della sicurezza tra gli altri. codex.wordpress.org/The_Loop#Multiple_Loops che sono sicuro che tu abbia visto.
soulseekah,

+ 1 per i tuoi sforzi!
Rutwick Gangurde,

Risposte:


1

Se stai ancora cercando un'alternativa che potrebbe essere più veloce, questo potrebbe aiutarti:

<?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();
}
?>

Quindi, per ottenere l'output, posizionalo <?php customBlogFeed(); ?>dove vuoi che sia output.

Se vuoi davvero divertirti, puoi agganciarti al filtro post_limits e limitare il numero di post per tipo di post visualizzati. Spero che questo ti aiuti nella tua ricerca.

PS: guarda in WP_Query , ti aiuterà davvero.

Dopo alcune ricerche potresti voler esaminare post_clauses per ottenere quelle caratterizzazioni SQL fatte con WP3.1 + Sintassi


1

Quindi, dopo pochi mesi. Ho trovato la risposta alla tua domanda esatta:

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;

    }
}

Saluti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.