Возможно ли, чтобы get_posts () или WP_Query не возвращали содержимое публикации? - PullRequest
0 голосов
/ 24 января 2011

get_posts() и WP_Query отлично подходят почти для всего, но иногда я хочу запрашивать все свои сообщения и отображать только самые простые вещи о них.

Например, если я создаю страницу, которая отображает заголовок и ссылку на каждый пост в моем блоге, у меня нет причин запрашивать содержание этих постов. Если у меня есть тысячи постов, а содержание каждого из них огромно, то для меня было бы чрезвычайно расточительно хранить весь этот контент в переменной php, чтобы получить заголовки и постоянные ссылки на эти посты. Но это именно то, что делают эти две функции!

Я бы хотел сделать что-то вроде этого:

$query = array(
  'numberposts' => -1,
  'exclude_fields' => 'post_content'
);
$all_posts = get_posts($query);

Кто-нибудь знает способ сделать это без написания пользовательского запроса?

(Недостаток пользовательского запроса - и это огромный недостаток - это то, что тогда вы не сможете использовать все великолепные существующие функции WordPress, например, все функции цикла)

1 Ответ

1 голос
/ 24 января 2011

Единственный способ, которым я знаю, - переписать запрос SQL с помощью фильтра из плагина (или functions.php в вашей теме).Поскольку вы хотите удалять контент только иногда, вам придется создать способ регистрации и удаления этого фильтра из файлов шаблонов при необходимости.

Вот фильтр, к которому вы будете подключаться:

http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_request

Будьте осторожны, чтобы не сломать что-то, не перечисляя столбец, который ожидает WordPress, поскольку вы замените * явным списком столбцов.

В общем, это, вероятно,проще написать сырой SQL и небольшой кусочек кода, который вам нужен, чтобы получить заголовки / ссылки / что угодно в тех немногих местах, где вам нужно это сделать.

Вы также можете игнорировать все это, напишите это с помощью WordPressтолько встроенные функции, и полагайтесь на то, что вы можете кэшировать страницу и тратить эту память только один раз в день или, тем не менее, часто разрешаете обновлять кеш.

...