Intereting Posts
Как получить результаты из базы данных Установки WAMP действуют, отличные от реальной установки при загрузке изображений Поисковый запрос с Ajax Как сохранить настраиваемые поля для вложений Настройка роли пользовательского редактирования, отличная от wp_capabilities? Лучше ли использовать фильтр для the_content в архивных страницах? Как сделать несколько разделов в домашних позах категории категории мудрым? Как отображать страницы с пользовательскими полями на одной странице Автоматически создавать отсутствующие изображения Добавить родителя в список подстраниц Ограничить возможности администратора в MultiSite «Удалить уведомление об обновлении для всех пользователей, кроме пользователя ADMIN» Первая установка WordPress. Cant Access Доступ к переднему доступу к хранилищу данных SQL – рекомендуется? Захватить страницу списка сообщений администратора

Эхо все мета-ключи пользовательского сообщения ТИП

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

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

Solutions Collecting From Web of "Эхо все мета-ключи пользовательского сообщения ТИП"

Вы можете использовать простой запрос для получения отдельного списка введенных пользователем meta_keys для определенного типа сообщения, а затем кэшировать результаты с помощью API Transients. Мета-ключи из этого запроса будут те, которые не начинаются с подчеркивания или числа.

function generate_foods_meta_keys(){ global $wpdb; $post_type = 'foods'; $query = " SELECT DISTINCT($wpdb->postmeta.meta_key) FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id WHERE $wpdb->posts.post_type = '%s' AND $wpdb->postmeta.meta_key != '' AND $wpdb->postmeta.meta_key NOT RegExp '(^[_0-9].+$)' AND $wpdb->postmeta.meta_key NOT RegExp '(^[0-9]+$)' "; $meta_keys = $wpdb->get_col($wpdb->prepare($query, $post_type)); set_transient('foods_meta_keys', $meta_keys, 60*60*24); # create 1 Day Expiration return $meta_keys; } 

Чтобы получить список мета-ключей в шаблоне для создания раскрывающегося списка, используйте следующую функцию:

 function get_foods_meta_keys(){ $cache = get_transient('foods_meta_keys'); $meta_keys = $cache ? $cache : generate_foods_meta_keys(); return $meta_keys; } $meta_keys = get_foods_meta_keys(); 

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

 $args = array( 'post_type' => 'custom-post-type-name', ); $cpts = new WP_Query($args); if($cpts->have_posts()) : while($cpts->have_posts() ) : $cpts->the_post(); $meta_values[] = get_post_meta($post->ID); endwhile; endif; 

Все ваши мета значения будут сохранены в массиве $meta_values .

Вы можете сделать var_dump($meta_values) чтобы var_dump($meta_values) содержимое массива, чтобы быть уверенным.

Используйте get_post_custom чтобы получить все ключи и значения.

Существует также функция, называемая get_post_custom_keys() которую вы можете использовать для извлечения всех мета-ключей.