Попытка запросить несколько сообщений с помощью WP_Query

#wordpress #loops #while-loop

#wordpress #циклы #цикл while

Вопрос:

У меня есть пользовательское поле в моих сообщениях, чтобы администратор мог ввести список конкретных идентификаторов сообщений, которые они хотят включить в раздел связанного контента на боковой панели. Я пытаюсь вставить переменную в мой wp_query_object, но она запрашивает только первый элемент.

Когда я повторяю переменную $ related_vids, она отображает идентификаторы, которые я ввел в пользовательское поле: 45,14,10.

Любая помощь в том, что я делаю неправильно, была бы потрясающей. Я чувствую, что я близок, но я уперся в стену.

 <?php $related_vids = get_post_meta($post->ID, '_simple_fields_fieldGroupID_3_fieldID_2_numInSet_0', true);
$the_query = new WP_Query( array( 'post__in' => array( $related_vids ) ) );
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

<p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>

<?php endwhile; wp_reset_postdata(); ?>
  

Ответ №1:

Проблема в том, что array( $related_vids ) фактически создается массив, содержащий 1 элемент: ["45,14,10"] а не массив, содержащий 3 элемента: [45, 14, 10]

Что вам нужно, так это explode( ', ', $related_vids )

Комментарии:

1. Большое вам за это спасибо. Мне пришлось немного изменить его, чтобы он работал правильно, но это привело меня в правильном направлении. Я понял, что с помощью функции explode мне также нужно было включить разделитель в дополнение к строке. Мне также пришлось использовать пробелы между идентификаторами моих сообщений, чтобы было что взрывать. В итоге я использовал: explode(» «,$related_vids)

2. Рад, что вы это поняли. Я отредактировал свой ответ, чтобы включить дополнительный параметр в explode вызов.