Come ottenere post attraverso ID multipli?

31 dic 2011, 13:44:59
Visualizzazioni: 88.1K
Voti: 31

Ho una stringa con degli ID di post: 43,23,65.
Speravo di poter utilizzare get_posts() e usare la stringa con gli ID come argomento.

Ma non riesco a trovare nessuna funzione per recuperare più post tramite ID.

Devo per forza utilizzare una WP_Query?

Ho anche visto qualcuno menzionare l'uso di tag_in - ma non riesco a trovare documentazione a riguardo.

1
Commenti

hai provato a usare l'argomento 'include' di get_posts() http://codex.wordpress.org/Template_Tags/get_posts ?

Michael Michael
31 dic 2011 13:56:39
Tutte le risposte alla domanda 3
6
56

Puoi utilizzare get_posts() poiché accetta gli stessi argomenti di WP_Query.

Per passargli gli ID, usa 'post__in' => array(43,23,65) (accetta solo array).

Qualcosa come:

$args = array(
    'post__in' => array(43,23,65)
);

$posts = get_posts($args);

foreach ($posts as $p) :
    //post!
endforeach;

Consiglio anche di impostare post_type e posts_per_page per maggiore completezza.

31 dic 2011 13:56:08
Commenti

Questo non funziona.

Dissident Rage Dissident Rage
5 ago 2015 22:22:02

No? Lo stai passando come array? Stai usando i due underscore (post__in invece di post_in)? Stai passando un post_type?

CookiesForDevo CookiesForDevo
6 ago 2015 04:10:39

Se stai ottenendo un custom post type, usa l'argomento post_type, e se vuoi più di 5 risultati, aggiungi l'opzione 'nopaging' => true.

Se hai una stringa separata da virgole invece di un array, usa explode(',',$input); per convertirlo in array.

ejazz ejazz
19 gen 2017 15:48:37

Se vuoi mantenere l'ordine dei post così come sono passati dall'array, assicurati di aggiungere 'order_by' => 'post__in' ai tuoi $args.

rob_st rob_st
12 ott 2017 13:17:08

fai attenzione quando usi il parametro post_type. Nel caso di post, la funzione restituirà TUTTI i tipi di contenuto, inclusi quelli personalizzati, non solo i post.

Fusion Fusion
23 apr 2019 14:49:30

Assicurati solo di verificare lo stato degli ID dei post. Dovrebbe essere 'publish'

Sarasranglt Sarasranglt
27 mar 2020 10:49:32
Mostra i restanti 1 commenti
0

Se non riesci a far funzionare quanto sopra, assicurati di aggiungere post_type:

$args = array(
    'post_type' => 'pt_case_study',
    'post__in' => array(2417, 2112, 784)
);

$posts = get_posts($args);
21 ago 2015 18:10:34
0

Se vuoi ottenere tutti i post tramite i loro ID (indipendentemente dal tipo di post) usa questo:

$args = [
    'post_type' => get_post_types(),
    'post__in' => [ 43, 23, 65 ]
];

$posts = get_posts($args);

O ancora più breve:

$args = [
    'post_type' => 'any',
    'post__in' => [ 43, 23, 65 ]
];

$posts = get_posts($args);
8 mag 2021 18:33:41