Похожие сообщения meta_query CPT

У меня есть два типа «Художники» и «Песни», в «Песнях» у меня есть мета-поле с флажком с именами «Художники».

Я хочу показать связанные сообщения, если у какой-либо публикации одинаковое значение метаданных с именем исполнителя:

wp_reset_postdata(); global $post; $artist_name = get_post_meta(get_the_ID(), "artist_name", true); $args = array( 'post_type' => array('songs'), 'meta_key' => $artist_name ); $query = new WP_Query; return $query; 

в запросе должны отображаться сообщения с одинаковым значением мета-окна автоматически.

это возможно ?!

больше информации:

имена почтовых изданий:

Мета-окно имен артистов в стиле «Песни»

Отображение связанных песен по имени художников на одной странице

Solutions Collecting From Web of "Похожие сообщения meta_query CPT"

Я предполагаю, что то, что вы пытаетесь сделать, это примерно так:

 $artist_name = get_post_meta(get_the_ID(), "artist_name", true); $args = array( 'post_type' => array('songs'), 'meta_key' => $artist_name, ); $related = new WP_Query($args); 

В вашем вопросе вы заявляете, что хотите, чтобы сообщения имели «одинаковое значение метаданных с именем исполнителя». Что делает вышеприведенный код, это не поиск значений, связанных с ключом, а для имен ключей, соответствующих художнику. Пытаться:

 $artist_name = get_post_meta(get_the_ID(), "artist_name", true); var_dump($artist_name); $args = array( 'post_type' => array('songs'), 'meta_key' => $artist_name, ); $related = new WP_Query($args); var_dump($related->request); 

И вы должны увидеть, что происходит.

Вместо этого вы хотите что-то вроде этого:

 $artist_name = get_post_meta(get_the_ID(), "artist_name", true); $args = array( 'post_type' => array('songs'), 'meta_key' => 'artist_name', 'meta_value' => $artist_name, ); $related = new WP_Query($args); 

Или более сложный, но более гибкий meta_query :

 $artist_name = get_post_meta(get_the_ID(), "artist_name", true); $args = array( 'post_type' => array('songs'), 'meta_query' => array( array( 'key' => 'artist_name', 'value' => $artist_name, ) ) ); $related = new WP_Query($args); 

Я склоняюсь к meta_query поскольку он красиво инкапсулирует связанные аргументы «meta» и позволяет использовать больше опций .

Конечно, вам нужно будет перебрать результат, чтобы вернуть что-нибудь полезное. Например:

 if ($related->have_posts()) { while ($related->have_posts()) { $related->the_post(); the_title(); // etc } } со if ($related->have_posts()) { while ($related->have_posts()) { $related->the_post(); the_title(); // etc } }