2016-01-18 2 views
0

Я написал собственный тип сообщения, называемый «служащие», и теперь пытается запросить его, вызвав этот тип сообщения после того, как он показал страницу отдела. Я создал настраиваемый мета-ящик с несколькими аргументами в нем, например, с отделом, с раскрывающимся списком, чтобы люди могли легко назначить человека в нужном отделе. Если критерии соблюдены, должна отображаться картина сотрудников (или в моем случае, слово crap как тест).Meta Query in Wordpress игнорируется

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

Это код для мета поле

$prefix = 'shm_'; 
$meta_box = array(
    'id' => 'meta-employees', 
    'title' => 'Overige informatie', 
    'page' => 'employees', 
    'context' => 'normal', 
    'priority' => 'high', 
    'fields' => array(
     array(
      'name' => 'position', 
      'desc' => 'The name of the job position', 
      'id' => $prefix . 'position', 
      'type' => 'text', 
      'std' => '' 
     ), 
     array(
      'name' => 'department', 
      'desc' => 'Select the department this employee is working in', 
      'id' => $prefix . 'department', 
      'type' => 'select', 
      'options' => array('Board', 'Sales, Marketing & Revenue', 'Option 3', 'Option 4', 'Option 5', 'Option 6') 
     ) 
    ) 
); 

И это для запроса

<?php 
if(!is_front_page()){ 
      if (is_page('board')){ 
       $page = 'board'; 
      }elseif (is_page('sales-marketing-revenue')){ 
       $page = 'Sales, Marketing & Revenue'; 
      } 

      echo $page; 

      $i = 0; 

      $args = array(
       'numberposts' => -1, 
       'post_type' => 'employees', 
       'meta_query' => array(
        'key'  => 'department', 
        'value' => $page, 
        'compare' => '=', 
       ) 
      ); 


      query_posts($args); 
       if (have_posts()) : 
        while (have_posts()) : the_post(); 

        echo "crap"; 
      ?> 


       <?php endwhile; ?> 
      <?php endif; ?> 
     <?php } ?> 

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

Array ([numberposts] => -1 [post_type] => employees [meta_query] => Array ([key] => department [value] => Sales, Marketing & Revenue [compare] => =))

Тем не менее, продажи маркетинг & доход только один человек, прикрепленный к нему, а не 3 (общее количество сотрудников я вступил до сих пор), которые отображаются на дисплее. Похоже, что он игнорирует мета-запрос.

Кто-нибудь может мне помочь?

+0

В кодексе Wordpress, если быть точным: https://codex.wordpress.org/Class_Reference/WP_Meta_Query – Dorvalla

ответ

0

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

$args = array(
    'post_type' => 'employees', 
    'meta_query' => array(
     array(
      'key'  => 'shm_text', 
      'value' => $page, 
      'compare' => '=' 
     ) 
    ) 
); 
Смежные вопросы