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?
$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' ) ) );