Erhalten Sie foreach für Meta-Abfrage-Wert

Wie kann ich meta_box foreach Wert innerhalb Meta-Abfrage-Wert erhalten, hier ist Code:

$my_id = get_post_meta(get_the_ID(), "artist_name", true); $artistNames = array(); foreach($my_id as $id) { $artistNames[] = $id; } $artists = implode($artistNames,", "); $args = array( 'post_type' => array ( 'songs', 'videos' ), 'meta_query' => array( array( 'key' => 'artist_name', 'value' => array( $artists ) ) ) ); $query = new WP_Query($args); 

Mach das möglich?

Solutions Collecting From Web of "Erhalten Sie foreach für Meta-Abfrage-Wert"

$artistNames nicht $artistNames . Der value meta_query Argument wird ein Array nehmen, wenn Sie mehrere compare . Du brauchst IN , glaube ich.

value (string | array) – Benutzerdefinierter Feldwert. Es kann nur ein Array sein, wenn Vergleich ‘IN’, ‘NICHT IN’, ‘ZWISCHEN’ oder ‘NICHT ZWISCHEN’ ist.

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

Angenommen, dass $artistNames ein Array von $artistNames ist, können Sie es direkt verwenden.

 $args = array( 'post_type' => array ( 'songs', 'videos' ), 'meta_query' => array( array( 'key' => 'artist_name', 'value' => $artistNames, 'compare' => 'IN' ) ) ); 

Und tatsächlich sieht es so aus, als könntest du die erste foreach überspringen, die $artistNames generiert und einfach $my_id .

 $args = array( 'post_type' => array ( 'songs', 'videos' ), 'meta_query' => array( array( 'key' => 'artist_name', 'value' => $my_id, 'compare' => 'IN' ) ) );