Добавьте array_merge, если он соответствует условию

#php

Вопрос:

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

Итак, у меня есть этот небольшой фрагмент:

 if (get_field('featured_posts')) {
    $acf_post_ids = get_field('featured_posts', false, false);
    $acf_query = get_posts([
        'post_type' => ['any'],
        'fields' => 'ids',
        'post__in' => $acf_post_ids,
        'orderby' => 'post__in',
        'posts_per_page' => -1,
    ]);
    $args['post__not_in'] = $acf_post_ids;
}
$wp_query = new WP_Query($args);
$main_ids = array_unique(array_merge($acf_query, $wp_query->posts));
 

Как бы это было правильно сделать:

  1. Если нет get_field('featured_posts') , установите $main_ids переменную как просто $wp_query->posts
  2. В противном случае, если get_field('featured_posts') установлен $main_ids array_unique(array_merge($acf_query, $wp_query->posts)); вызов.

Я не хотел вызывать еще if get_field('featured_posts') одну проверку после запроса WP_, если у меня ее нет — Вся помощь будет оценена!

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

1. Является ли значение array_unique($wp_query->posts) таким же, как $wp_query->posts и ? Если да, то вы можете инициализировать $acf_query как пустой массив перед if и оставить остальную часть кода нетронутой. Таким образом, вы всегда будете выполнять слияние с пустым массивом, но нет необходимости во втором if операторе.

2. @naszy, это как раз тот ответ, который я искал, спасибо за объяснение! Я просто переосмыслил это, но это самое простое и эффективное.