Минимизация запросов к базе данных в Wordpress при использовании расширенных настраиваемых полейPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Минимизация запросов к базе данных в Wordpress при использовании расширенных настраиваемых полей

Сообщение Anonymous »

Я работаю над страницей, на которой перечислены сотрудники крупной компании, и пытаюсь свести к минимуму количество запросов к базе данных, поскольку она становится довольно сложной и медленной.
  • Код: Выделить всё

    'person'
    — произвольный тип публикации (около 300 человек)
  • Код: Выделить всё

    'date_accredited'
    — это поле даты, добавленное с помощью плагина Advanced Custom Fields.
Только аккредитованный персонал будет иметь поле «date_accredited».

Мне нужно перечислить каждого «человека» НО, ВСЕ аккредитованные сотрудники должны быть указаны первыми (так что около 20 аккредитованных сотрудников находятся наверху).< /p>

На В данный момент я вызываю WP_Query, например:

Код: Выделить всё

$args = array(
'posts_per_page' => -1,
'post_type' => 'people',
'no_found_rows' => true,
'meta_key' => 'date_accredited'
);
$people = new WP_Query($args);
После этого я делаю:

Код: Выделить всё

while($people->have_posts()): $people->the_post();
$my_post_meta = get_post_meta($post->ID, 'date_accredited', true);
if (!empty($my_post_meta)) {
array_push($accredited, $post);
} else {
array_push($notAccredited, $post);
}
endwhile;
Остаемся с двумя массивами объектов «человек». Я думал, что смогу сделать что-то вроде следующего, чтобы получить нужный мне список:

Код: Выделить всё

foreach($accredited as $person):
personTile($person);
endforeach;

foreach($notAccredited as $person):
personTile($person);
endforeach;
Я пытаюсь избежать повторного запроса к базе данных.

Функция personTile(); должна была выводить различную информацию и HTML (

Код: Выделить всё

the_post_thumbnail()
и различные поля расширенных настраиваемых полей), но теперь я понимаю, что ничего из этого не включено в объекты сообщений, которые я получаю от WP_Query(), поэтому я вынужден использовать такие вещи, как :
Все это требует еще одного запроса к БД (каждый!), и что еще хуже, каждый из них находится в цикле происходит примерно 300 раз.

Есть ли способ включить поля постоянной ссылки, миниатюры и ACF в исходный запрос к БД? Нужно ли мне прибегнуть к пользовательскому запросу MySQL???

Любые другие предложения приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/281 ... tom-fields
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»