Cum să faci WP_Query 'post__in' să accepte un array?

6 feb. 2012, 21:23:32
Vizualizări: 47.6K
Voturi: 8

Am o funcție care returnează o listă de ID-uri de postări separate prin virgulă, la care un anumit utilizator poate avea acces. Vreau să folosesc această listă într-o buclă WP_Query.

Funcția personalizată:

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

Deci iată situația:

  1. Pe site-ul meu de test, lista de ID-uri este 158, 162, 145, 269.
  2. Inserarea listei de ID-uri returnează doar prima postare. 'post__in'=> array( $access_ids ),
  3. Inserarea listei de ID-uri care nu se află într-un array returnează o eroare. 'post__in'=> $access_ids ,
  4. Inserarea manuală a ID-urilor de postări returnează postările corecte 'post__in'=> array( 158, 162, 145, 269 ),

Ce aș putea face greșit?
Apreciez orice ajutor.

1
Comentarii

Mulțumesc pentru sugestii! Array-ul implode era într-adevăr cauza problemei.

MTT MTT
6 feb. 2012 22:34:41
Toate răspunsurile la întrebare 3
1
11

$access_ids este un șir de caractere. post__in acceptă un array.

Deci, în loc de $access_ids ai putea folosi 'post__in'=> $ids sărind peste $access_ids = implode( ', ', $ids ); cu totul.

6 feb. 2012 21:37:44
Comentarii

pentru mine nici aceasta nu funcționează, poți te rog să mă ajuți?

Niket Joshi Niket Joshi
2 ian. 2019 12:37:47
0

Probabil că implode() este ceea ce strică lucrurile:

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

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

$array = array_map( 'trim', explode( ',', $access_ids ) ); // corect
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

Doar setează 'post__in'=>$ids, declararea array( $access_ids ) nu creează array-ul dorit.

6 feb. 2012 21:39:16