Wordpress - ACF: мета-запрос не выполнен (числовой) - PullRequest
0 голосов
/ 29 октября 2018

У меня есть настраиваемое поле с именем course_duration, которое numeric.

Вот как я строю meta_query:

$duration = $_GET['course_duration'];

$args = array(
        'fields'         => 'ids',
        'post_type'  => 'cp_course', 'numberposts' =>-1,'orderby' => 'ID', 'order' => 'ASC', 's' => $searchterm,
        'meta_query' => 
            array(
                'key' => 'course_duration', 
                'type' =>'numeric',
                'compare' => '=',
                'value' => $duration,               
            ),

    );

    $course = get_posts($args);

$duration успешно пройдено, я могу проверить его с помощью echo, а $searchterm пусто. А вот и производится $args:

array (size=7)
  'fields' => string 'ids' (length=3)
  'post_type' => string 'cp_course' (length=9)
  'numberposts' => int -1
  'orderby' => string 'ID' (length=2)
  'order' => string 'ASC' (length=3)
  's' => string '' (length=0)
  'meta_query' => 
    array (size=3)
      'key' => string 'course_duration' (length=15)
      'type' => string 'numeric' (length=7)
      'value' => string '5' (length=1)

Но запрос не выполнен. Он должен возвращать только курсы с duration=5, но возвращает все из них. Что я делаю не так?

EDIT

Даже если я попытаюсь с жестко закодированным $duration не работает. Как это:

$duration = $_GET['course_duration'];

$args = array(
        'fields'         => 'ids',
        'post_type'  => 'cp_course', 'numberposts' =>-1,'orderby' => 'ID', 'order' => 'ASC', 's' => $searchterm,
        'meta_query' => 
            array(
                'key' => 'course_duration', 
                'type' =>'numeric',
                'compare' => '=',
                'value' => 15,              //Hardcoded
            ),

    );

    $course = get_posts($args);

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Пожалуйста, используйте ниже код:

$duration = $_GET['course_duration'];

$args = array(
        'fields'         => 'ids',
        'post_type'  => 'cp_course', 'numberposts' =>-1,'orderby' => 'ID', 'order' => 'ASC', 's' => $searchterm,
        'meta_query' => 
             array(
     array(
                'key' => 'course_duration', 
                'type' =>'numeric',
                'value' => intval($duration)               
            )
          ),    
    );

    $course = get_posts($args);
0 голосов
/ 29 октября 2018

Здесь вы можете установить 'сравнить' => '=' с мета-запросом

...