WP_Query на основе метаданных логического - PullRequest
0 голосов
/ 04 апреля 2020

На моем WordPress-сайте я создал мета-поле для любой страницы, которая использует post. php Это мета-поле включает логический флажок, где я хочу решить, будет ли он включен в WP_Query. Когда _is_private page имеет значение true, я не хочу удалять сообщение из поиска

Единственная проблема в том, что я не могу получить ожидаемый результат. Смотрите мой код ниже.

$meta_query = array(
      'key' => '_is_private_page',
      'value' => 'true',
      'compare' => 'NOT EXISTS',
  );


$wp_query_args = array(
    's' => $_GET['s'],
    'meta_query' => $meta_query
);


$query = new WP_Query( $wp_query_args );

1 Ответ

0 голосов
/ 04 апреля 2020

Вам нужно выбрать все сообщения / страницы, которые не приватные, поэтому они будут иметь мета-значение, не равное true

$meta_query = array(
      'key' => '_is_private_page',
      'value' => 'true',
      'compare' => '!=',
  );
$wp_query_args = array(
    's' => $_GET['s'],
    'meta_query' => $meta_query
);


$query = new WP_Query( $wp_query_args );

Чтобы выбрать все, которые имеют значение мета не равно true или не имеет мета:

$meta_query = array(
    'relation' => 'OR',
    array(
        'key' => '_is_private_page',
        'compare' => 'NOT EXISTS',
      ),
    array(
        'key' => '_is_private_page',
        'value' => 'true',
        'compare' => '!=',
      ),
);

$wp_query_args = array(
    's' => $_GET['s'],
    'meta_query' => $meta_query
);

$query = new WP_Query( $wp_query_args );
...