WordPress: доступ к метаполям поста через WP_Post.
Введение
В этой статье я хочу показать вам альтернативный, менее известный способ доступа к мета-значениям поста, отличный от использования функции get_post_meta() .
$post и $posts
Как вы знаете, большинство страниц в WordPress автоматически заполняются переменными $post и $posts . Где $post представляет объект сообщения для текущей страницы. И $постов будет массивом всех объектов сообщений для этой страницы.
Чтобы визуализировать содержимое этих переменных, вы можете просто print_r() или var_dump() их.
Посмотреть суть на GitHub
И вы получите результат, аналогичный показанному ниже.
См. этот список на GitHub
Обратите внимание, что выходные данные представляют собой не массив, а экземпляр класса WP_Post , и что он содержит все стандартные значения, связанные с публикацией. Мы вернемся к этому позже.
используйте get_post_meta()
Если вы хотите получить доступ к мета-значению поста в своем коде, вы обычно используете функцию get_post_meta() .
Чтобы проверить это, мы сначала должны добавить мета-значение к сообщению. В приведенном ниже коде мы используем функцию add_post_meta() , чтобы добавить метаполе some_meta_field и присвоить ему значение some_value .
Посмотреть суть на GitHub
Затем мы можем использовать функцию get_post_meta() для доступа к some_meta_field на пост.
Посмотреть суть на GitHub
Это, конечно, выведет ‘ some_value ’.
Доступ к метаполям через WP_Post
Как я упоминал ранее, переменная $post — это не стандартный массив, а экземпляр класса WP_Post . Когда мы использовали print_r() для проверки содержимого переменной $post , мы увидели, что она содержит только стандартные значения для каждого объекта сообщения. Он не показывает никаких мета-значений. Конечно, это невозможно, потому что метаполя могут быть разными для каждого поста, поэтому их нельзя закодировать в классе.
Но на самом деле класс WP_Post может получить доступ к метаполям. Если мы проверим код класса, то увидим, что WP_Post реализует магический метод __get() .
Функция метода _ _get() состоит в том, чтобы предоставить запасной вариант, когда свойство вызывается в несуществующем классе. Поэтому, когда мы пытаемся получить доступ к $post->i_dont_exist , вызывается метод _ _get() , чтобы попытаться определить значение для этого свойства.
Ниже приведена фактическая реализация метода __get() для класса WP_Post в wp-includes/class-wp-post.php .
Посмотреть этот список на GitHub
В строке 47 вышеприведенного списка вы можете увидеть, что если ничего не помогает, метод __get() попытается получить значение метаполя сообщения для несуществующего свойства.
Это означает, что если мы попытаемся получить доступ к метаполю объекта $post следующим образом: $post->some_meta вызывается метод __get() , и он будет использовать функцию get_post_meta для разрешения значения.
Чтобы вернуться к примеру some_meta_field ранее в этом посте. Мы могли бы опустить функцию get_post_meta () и просто получить доступ к some_meta_field объекта $post , как показано ниже.
Посмотреть суть на GitHub
Это вернет ‘some_value’ точно так же, как get_post_meta (), но, как вы можете видеть, это выглядит намного чище.
Другие значения
Если вы посмотрите на метод __get() в классе WP_Post , вы заметите еще несколько значений, к которым можно получить прямой доступ. В Gist ниже показаны значения, которые могут быть разрешены.
Посмотреть суть на GitHub
Заключение
Доступ к метаполям сообщения через объект WP_Post может немного очистить ваш код. Но могут быть случаи, когда это не лучший подход, поэтому, как всегда, используйте его с умом.
Если вы хотите прокомментировать этот пост, сделайте это под копией этой статьи на Dev.to.
Следите за мной в Твиттере @Vanaf1979 или на Dev.to @Vanaf1979 , чтобы получать уведомления о новых статьях и других материалах, связанных с разработкой WordPress.
Спасибо за внимание.
Автоматизация WordPress с помощью мета действия Manage WP post
WP Webhooks
Войти
Get WP Webhooks
Account
WordPress integration
Action
Manage WP post meta action
Get WP Webhooks Automator
Available arguments
post_id
Add/Update Meta
Manage Meta Данные (дополнительно)
do_action
Обратный вызов действия WordPress (дополнительно)
Требуется
WordPress
Узнать больше
Руководства
Какой из них использовать?
-
Установка с использованием Flows Automation
-
С помощью WebHooks
«Управление WP Post Meta» Workflow Примеры
9024 «wp post meta» Work Plow Proplow. , и, наконец, добавить, обновить или удалить метаданные публикации WP через WordPress.Когда пост был создан , создать завершение через OpenAI и, наконец, добавить, обновить или удалить метаданные WP через WordPress.
Когда сообщение было обновлено , добавить, обновить или удалить метаданные сообщения WP через WordPress.
Когда заказ был обновлен , отправляет данные в приложение веб-перехватчика Zapier через Zapier и, наконец, добавляет, обновляет или удаляет метаданные сообщения WP через WordPress.
Когда форма была отправлена , отправить запрос веб-перехватчика через веб-перехватчики и, наконец, добавить, обновить или удалить метаданные поста WP через WordPress.
More «WordPress» endpoints
Triggers
Free
Comment created
Free
User created
Free
Custom trigger called
Free
Comment удалено
Свободно
Пользователь удален
Свободно
Пользователь вошел в систему
Free
Post created
Free
Post deleted
Free
Post trashed
Free
Post updated
Free
Email sent
Free
Комментарий удален
Бесплатно
Комментарий обновлен
Бесплатно
Пользователь обновлен
Pro
Plugin activated
Pro
Plugin deactivated
Pro
Plugin deleted
Pro
WordPress hook fired
Pro
Hook apply_filters fired
Pro
Hook do_action fired
Pro
Новый сайт создан
Pro
Термин таксономии создан
Pro
Taxonomy term deleted
Pro
Taxonomy term updated
Pro
User logged out
Pro
User password reset
Pro
Shortcode called
Actions
Бесплатно
Добавить комментарий
Бесплатно
Создать сообщение
Бесплатно
Создать пользователя
Free
Custom PHP action
Free
Delete comment
Free
Delete post
Free
Delete user
Free
Get post
Бесплатно
Получить несколько сообщений
Бесплатно
Получить пользователя
Бесплатно
Получить несколько пользователей
Бесплатно
Test action
Free
Set taxonomy term meta
Free
Send email
Free
Set taxonomy terms
Free
Trash comment
Free
Обновить комментарий
Pro
Запустить несколько веб-перехватчиков
Pro
Копировать файл
Pro
Копировать папку
PRO
CREATE BASE64 Приложение
Pro
Create File
Pro
Create Polder
Pro
Create Poter
Pro
Create Poter
Pro
CREAT
Pro
Создать вложение URL
Pro
Удалить вложение
Pro
Удалить файл
Pro
Delete folder
Pro
Move file
Pro
Move folder
Pro
Multisite assign user
Pro
Activate plugin
Pro
Деактивировать плагин
Pro
Установить плагин
Pro
Удалить плагин
Pro
Update plugin
Pro
Rename file or folder
Pro
Send remote HTTP POST
Pro
Update post
Pro
Update taxonomy term
Pro
Обновить пользователя
Pro
Вызов хука apply_filters
Pro
Вызов функции PHP
Pro
Удалить налог0007
Pro
Fire do_action hook
Pro
Get taxonomy term
Pro
Get taxonomy terms
Pro
Manage WP post meta
Pro
Manage WP Мета пользователя
Полное раскрытие информации: при переходе по некоторым ссылкам на нашем веб-сайте и покупке соответствующего продукта и/или услуги мы можем получить комиссию без каких-либо дополнительных затрат для вас.
Что такое аргументы?
Аргументы — это определенные фрагменты информации, которые вы можете установить в рамках действия. Они позволяют вам отправлять пользовательскую информацию в зависимости от ваших потребностей. Для автоматизации потоков все это будет доступно непосредственно на шаге действия. Если вы используете «веб-перехватчики» в сочетании со службами автоматизации, такими как Zapier, Pabbly Connect или Make.com, аргументом является пара «ключ-значение» в теле запроса. В строках JSON ключ является аргументом, а значение — значением аргумента (чтобы узнать больше о параметрах действия веб-перехватчиков, нажмите здесь).
: Все аргументы доступны как в Webhooks, так и в Flows Automation.
post_id
ID поста, для которого вы хотите выполнить действие.
Добавить/обновить метаданные
Обновить (или добавить) метаключи/значения.
Управление метаданными (дополнительно)
Если вы хотите добавить более сложные метаданные, это поле для вас. Ознакомьтесь с некоторыми примерами в нашем посте мета-блога.
действие
Дополнительно: Зарегистрируйте настраиваемое действие после того, как подключаемый модуль активирует этот веб-перехватчик.
Обратный вызов действия WordPress (дополнительно)
(строка) Зарегистрируйте пользовательский обратный вызов хука WordPress. Значение будет вызываться следующим образом: do_action($yourdefinedaction, $action_return_data, $request_data)
Потоки или вебхуки?
При автоматизации крайне важно понимать разницу между нашей функцией Flows и Webhooks, поскольку она влияет на то, как вы работаете с нашим продуктом. Ниже вы найдете более подробную информацию об основных различиях.
Потоки (автоматизация)
-
Использует один триггер для запуска нескольких действий в нашем плагине.
-
Может получать данные от внешнего URL/API/Webhook для выполнения нескольких действий в нашем плагине (например, когда поток был выполнен, создайте пользователя, затем данные в Zapier, получите ответ и отправьте электронное письмо ).