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.
Когда пост был создан , создать завершение через 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, получите ответ и отправьте электронное письмо ).