2014-10-17 4 views
0

Необходимо ограничить возвращаемые поля запроса WP, чтобы ускорить ответ с сервера и уменьшить количество полученных данных. Для запроса, который я использую, ему требуется только до трех полей данных, а остальные - через ACF get_field_object в цикле. Другие функции, которые я использую, такие как get_posts или get_terms, имеют параметры поля, но ограничены небольшим количеством вещей, например «slug» или «id => slug».Ограничение возвращаемых полей Wordpress из функций WP_Query или 'get'

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

TL; DR необходимо ускорить получение сообщения от Wordpress

+0

Какие поля? Все ли они обычай? – rnevius

+0

Поля, которые я хочу посмотреть в лимите, это те, которые приходят по умолчанию, такие как «post_content», «guid», «post_modified» и т. Д. – sneexz

+0

Возможный дубликат [Fetch Selected Fields в WP \ _Query Class в WordPress] (http: //stackoverflow.com/questions/16559326/fetch-selected-fields-in-wp-query-class-in-wordpress) – rnevius

ответ

1

WP_Query будет возвращать объекты ... так что это довольно быстро. Однако, если вы действительно хотите ограничить возвращаемое, вы можете сделать это с помощью Return Fields ParameterWP_Query.

+0

Я посмотрел на это, к несчастью, хотя он содержит только 3 варианта, которые содержат около 1 или 2 полей, которые мне нужно получить. – sneexz

1

Это то, что я сделал, чтобы ограничить поля WP_Query, особенно когда хочу json_encode их. Переменная $return содержит мой массив сообщений с только полями, перечисленными в массиве $fields.

$query = new WP_Query(array('post_type' => 'my_custom_type')); 
    $return = array(); 
    $fields = array('post_title', 'ID'); //list of fields I want in $return 
    $posts = $query->get_posts(); 
    foreach($posts as $post) { 
     $newPost = array(); 
     foreach($fields as $field) { 
      $newPost[$field] = $post->$field; 
     } 
     $return[] = $newPost; 
    } 
0

Я использовал параметр fields в запросе и запустил получение сообщений по этому запросу. Например: В моем случае, мне просто нужно, чтобы получить почтовые идентификаторы для нескольких категорий, поэтому я создал запрос, как это:

$the_query = new WP_Query(array( 
         'ignore_sticky_posts' => 1, 
         'posts_per_page'  => -1, 
         'cat'     => '2,6,7' , 
         'fields'    => 'ids', 
         'post_type'   => 'post', 
         'post_status'   => 'publish', 
           ) 
         ); 

Запустите get_posts по этому запросу:

$posts = $the_query->get_posts(); 

$ сообщения будут получать только идентификаторы отдельных категорий.

Или это может быть сделано со стандартным и популярным способом и т, запустив цикл have_posts:

if ($the_query->have_posts()) { 
     while ($the_query->have_posts()) { 
      $the_query->the_post(); 
      $post_id_array[] = get_the_ID(); 
     }   
    } 

Эти два пути, чтобы помочь с ускоряя ответ от сервера и сокращения объем полученных данных