Ottenere il primo post da wp_query

3 apr 2014, 22:44:00
Visualizzazioni: 42.3K
Voti: 8

Come posso ottenere il primo post da un risultato WP_Query?

$connected = new WP_Query( array(
// Argomenti
));

// Questo non funziona..
echo $connected[0]->post_name;

Per ottenere il primo post, puoi usare uno di questi metodi:

// Metodo 1: Usando posts array
$first_post = $connected->posts[0];
echo $first_post->post_name;

// Metodo 2: Usando il loop
if ($connected->have_posts()) : 
    $connected->the_post();
    echo get_the_title();
    wp_reset_postdata();
endif;
6
Commenti

Devi utilizzare un loop. Leggi la voce del codex su WP_Query... c'è un esempio di loop lì. Inoltre nella stessa pagina puoi trovare il parametro posts_per_page e limitare la query per recuperare solo 1 post.

helgatheviking helgatheviking
3 apr 2014 22:54:45

@helgatheviking Sì, so che è possibile in quel modo, ma quindi non è possibile senza il loop?

Robbert Robbert
3 apr 2014 22:56:19

Puoi usare get_post() Codex o utilizzare The Loop come suggerisce il commento sopra, e se hai ancora bisogno del primo post puoi sempre riavvolgere la tua query - $connected->rewind_posts()

Howdy_McGee Howdy_McGee
3 apr 2014 23:05:02

Prova $connected->posts[0]->post_name - $connected è un oggetto WP_Query che contiene un membro array di post.

User User
3 apr 2014 23:08:02

Tutto è possibile, ma perché reinventare la ruota? var_dump($connected) per vedere perché ciò che hai proposto non funziona. $connected è in realtà un oggetto con i post risultanti effettivamente nella proprietà $connected->posts.

helgatheviking helgatheviking
3 apr 2014 23:10:09

Grazie a tutti per l'aiuto. $connected->posts[0]->post_name ha funzionato!

Robbert Robbert
4 apr 2014 09:51:05
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 2
0
20

Se esplori WP_Query, il set di post interrogati viene salvato nella proprietà posts e il post corrente viene assegnato a quella post (ogni volta che il ciclo itera).

Quindi potresti fare $connected->posts[0] se hai bisogno solo di recuperare quello, ma potrebbe essere più conveniente fare $connected->the_post(); e poi $connected->post se devi saltare il primo e processare il resto in un ciclo normale.

3 apr 2014 23:30:20
0

Puoi utilizzare un codice come questo:

if ($the_query->have_posts()) {
  $first_post = $the_query->posts[0]; // Ottieni il primo post dalla query
  echo "Titolo del 1° post\t:"$first_post->post_title; // Mostra il titolo del primo post
}
25 feb 2021 10:29:59