Intereting Posts
Можем ли мы загружать «load_theme_textdomain» несколько раз с разными доменами? как получить настраиваемый элемент подменю admin (пользовательский тип сообщения), чтобы выделить, когда его активный Admin-ajax.php умирает «0» без функции обработки Разрешить загрузку CSV-файлов Как добавить фильтр-фильтр в медиа-библиотеку? пользовательский тип сообщения не отображается в меню Где реализовать пользовательский класс walker? ACF в wordpress Вставить варианты через woocommerce api Добавление / обновление настраиваемых полей после выбора снимков в окне мультимедиа Могу ли я откатить WP Install, но сохранить мою новую базу данных? Как разрешить клиентам вводить текст в виде изменения продукта * и * на каждого персонажа? Проблемы с миграцией с mysql: операция не разрешена, когда innodb_forced_recovery> 0 Как сделать миниатюры изображениями в блогах Как сделать виджет пользовательской панели мониторинга для отображения пользовательского уведомления от администратора?

WP_Query – манипуляция объектов с функциями WordPress

Хотя это может быть основано на мнениях, должен существовать некоторый согласованный способ / оптимизированный способ манипулирования данными из WP_Query . Например, «лучший» способ получить заголовок сообщений?

 $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $choice1 = get_the_title(); $choice2 = the_title(); $choice3 = $query->post->post_title; } } 

Я думаю из-за согласованности и сокращения вызовов функций, третий вариант может быть лучшим выбором (и немного более последовательным, поскольку оба оператора if и while используют обозначение объекта.)

Третий вариант также обеспечивает гораздо больший доступ к данным по ограниченному числу функций WordPress. Существуют ли какие-либо реальные недостатки в его использовании? Если нет, зачем беспокоиться о функциях WordPress? Санитарии? Ошибка ловить?

Solutions Collecting From Web of "WP_Query – манипуляция объектов с функциями WordPress"

Все три из них могли бы сделать то же самое, это всего лишь вопрос того, как вы хотите их использовать.

the_title() вызывает get_the_title() который получает заголовок $post->post_title .

Просмотр источника the_title() на Trac

Просмотреть get_the_title() Источник на Trac

Лично я бы никогда не использовал выбор 3, поскольку с точки зрения удобочитаемости это не самое очевидное, что он делает. Кроме того, как указывает Мило, вы теряете фильтр the_title который находится в get_the_title() :

return apply_filters( 'the_title', $title, $id );

Выбор 1/2 используется в разных сценариях. Вы никогда не сможете присвоить the_title() (без каких-либо параметров), поскольку по умолчанию она отображает заголовок на экране. Функция get_the_title() используется для фактического присвоения заголовка переменной, если вам нужно выполнить какие-либо манипуляции над заголовком сообщения.

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

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

Как вы могли бы или не знать, основной запрос использует WP_Query , единственное отличие от пользовательского запроса, как в вашем вопросе, состоит в том, что основной запрос анализирует URL-адрес, чтобы получить параметры и аргументы, переданные там, где пользовательский запрос использует определенные пользователем параметры и аргументы ,

Основной запрос и любой новый экземпляр WP_Query возвращает точно такой же массив результатов и наиболее важные те же объекты WP_Post для сообщений, возвращаемых в массив $posts

Таким образом, по производительности они все одинаковы. Любой экземпляр WP_Query использует сложные фильтры и кеши, чтобы сделать их максимально возможными.

Как уже указывалось, используйте теги шаблонов, поскольку объекты post (которые нефильтрованы) запускаются через фильтры перед get_ ( get_ prefix) или эхом (без префикса get_ ).