Come far accettare un array a WP_Query 'post__in'?

6 feb 2012, 21:23:32
Visualizzazioni: 47.6K
Voti: 8

Ho una funzione che restituisce una lista di ID di post separati da virgola a cui un particolare utente può accedere. Voglio utilizzare questa lista in un ciclo WP_Query.

La funzione personalizzata:

$array = user_albums();
foreach( $array as $post ) {
    if( !in_array( $post->ID, $array ) )
        $ids[] = $post->ID;
}
$access_ids = implode( ', ', $ids );

Ecco la situazione:

  1. Sul mio sito di test la lista degli ID è 158, 162, 145, 269.
  2. L'inserimento della lista di ID restituisce solo il primo post. 'post__in'=> array( $access_ids ),
  3. L'inserimento della lista di ID non in un array restituisce un errore. 'post__in'=> $access_ids ,
  4. L'inserimento manuale degli ID dei post restituisce i post corretti 'post__in'=> array( 158, 162, 145, 269 ),

Cosa potrei star facendo di sbagliato?
Apprezzo qualsiasi aiuto.

1
Commenti

Grazie ragazzi per i suggerimenti! L'array implode era effettivamente la causa del problema.

MTT MTT
6 feb 2012 22:34:41
Tutte le risposte alla domanda 3
1
11

$access_ids è una stringa. post__in accetta un array.

Quindi invece di $access_ids potresti usare 'post__in'=> $ids saltando completamente $access_ids = implode( ', ', $ids );.

6 feb 2012 21:37:44
Commenti

per me anche questo non funziona, puoi aiutarmi per favore?

Niket Joshi Niket Joshi
2 gen 2019 12:37:47
0

Probabilmente è implode() che causa il problema:

$access_ids = '158, 162, 145, 269';

$array = array($access_ids); //sbagliato
var_dump( $array ); 
// array
//  0 => string '158, 162, 145, 269' (length=18)

$array = array_map( 'trim', explode( ',', $access_ids ) ); // corretto
var_dump( $array ); 
//array
//  0 => string '158' (length=3)
//  1 => string '162' (length=3)
//  2 => string '145' (length=3)
//  3 => string '269' (length=3)
6 feb 2012 21:38:07
0

Basta impostare 'post__in'=>$ids, dichiarare array( $access_ids ) non crea l'array desiderato.

6 feb 2012 21:39:16