Intereting Posts
Удаленный файл загрузки на сервер B Эта веб-страница имеет проблему с перенаправлением с помощью SSL-страницы Добавление пользовательских полей в класс мета-полей «на лету» Запретить создание тегов на странице публикации Можно ли создать сообщение, используя метабокс? Измененные URL-адреса медиабиблиотеки Не удалось импортировать медиа с локального сайта WordPress в живое add_post_meta не работает Получить термин по пользовательской терминологии мета и таксономии Исключить страницы с определенным шаблоном из wp_list_pages Как удалить раскрывающийся список купонов Как экспортировать блог WordPress в качестве книги? WordPress разбился во время обновления Как перемещаться по пользовательским сообщениям типа сообщения Регистрация функции обратного вызова AJAX, которая является частью класса без создания экземпляра класса в функции function.php

Любой способ включить пользовательские поля в результаты WP_Query?

Ищете способ включения настраиваемых полей в вывод WP_Query. Я управляю сайтом, где почти каждый тип сообщения имеет множество настраиваемых полей, и было бы гораздо лучше не запускать get_post_custom почти в каждом цикле.

Возможно, вы захотите зацепить где-нибудь в gazillion hooks, доступных в wp-includes/query.php .

Я бы предложил что-то вроде этого:

 function my_always_get_post_custom( $posts ) { for ( $i = 0; $i < count($posts); $i++ ) { $custom_fields = get_post_custom( $posts[$i]->ID ); $posts[$i]->custom_fields = $custom_fields; } return $posts; } add_filter( 'the_posts', 'my_always_get_post_custom' ); 

Таким образом, вы всегда будете иметь свои собственные поля сообщений в своем объекте $post без необходимости искать их каждый раз, когда вы настраиваете цикл. С этого $post->custom_fields вы можете просто получить к ним доступ, используя $post->custom_fields в качестве multi-dimensional array .

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