ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Использование WP-CLI для пакетного обновления свойств метаданных в Contact Form 7

Использование WP-CLI для пакетного обновления свойств метаданных в Contact Form 7

Вы установили плагин Contact Form 7 и начали его использовать, у вас появилось очень много форм и хотите улучшить надежность доставки электронной почты. Вам необходимо проверять параметр Use HTML Content Type в Contact Form 7. При создании множества контактных форм на сайте, становиться нереально обновлять все параметры вручную, так что мы посмотрели в сторону WP-CLI.

WP-CLI 1.4.0 внес некоторые очень полезные параметры командной строки для управления сериализованными настройками wp_optionsи wp_postmeta. Этот пост покажет вам, как использовать эти команды, а затем использовать их для периодического обновления сотни постов :).

Использование WP-CLI для пакетного обновления свойств метаданных в Contact Form 7

Мы сделали некоторый поиск в базе данных и нашли значения, которые нам нужны для изменения в таблице wp_postmeta.

Вы можете увидеть параметры, сначала получив post_id для контактной формы, которая находится под интерфейсом контактной формы.

Вы можете увидеть шорткод для post_id в контактной форме здесь 300.

Использование WP-CLI для пакетного обновления свойств метаданных в Contact Form 7

 

Этот запрос покажет вам информацию о метаданных для контактной формы ID 300, и meta_key, который имеет значение _mail

wp db query "select meta_value from $(wp db prefix --allow-root)postmeta where post_id = 300 AND meta_key = '_mail'" --allow-root

 

Вывод, обратите внимание на use_html; b: 1 означает логическое значение, которое может быть true (1) или false (0)

a:9:{s:6:"active";b:1;s:7:"subject";s:33:"AndreyEx Project "[your-subject]"";s:6:"sender";s:44:"[your-name] <wordpress@andreyex.ru>";s:9:"recipient";s:19:"admin@andreyex.ru";s:4:"body";s:175:"From: [your-name] <[your-email]>
Subject: [your-subject]

Message Body:
[your-message]

--
Это письмо отправлено с контактной формы AndreyEx (https://andreyex.ru)";s:18:"additional_headers";s:22:"Reply-To: [your-email]";s:11:"attachments";s:0:"";s:8:"use_html";b:1;s:13:"exclude_blank";b:0;}

 

Поиск зарегистрированных пользовательских типов постов с помощью WP-CLI

Давайте найдем имя post-type, post_id и grab и изменим это значение с помощью WP-CLI.

При этом будут показаны все зарегистрированные типы постов с WP-CLI.

wp post-type list --allow-root

 

Мы можем увидеть тип записи wpcf7_contact_form

+----------------------+------------------------------+-------------+--------------+--------+---------------------+
| name                 | label                        | description | hierarchical | public | capability_type     |
+----------------------+------------------------------+-------------+--------------+--------+---------------------+
| post                 | Posts                        |             |              | 1      | post                |
| page                 | Pages                        |             | 1            | 1      | page                |
| attachment           | Media                        |             |              | 1      | post                |
| revision             | Revisions                    |             |              |        | post                |
| nav_menu_item        | Navigation Menu Items        |             |              |        | post                |
| custom_css           | Custom CSS                   |             |              |        | post                |
| customize_changeset  | Changesets                   |             |              |        | customize_changeset |
| wpcf7_contact_form   | Contact Forms                |             |              |        | post                |
| tablepress_table     | TablePress Tables            |             |              |        | tablepress_table    |
| vecb_editor_buttons  | Visual Editor Custom Buttons |             |              |        | post                |
| generate_page_header | Page Headers                 |             |              |        | page                |
+----------------------+------------------------------+-------------+--------------+--------+---------------------+

 

Перечислите все идентификаторы пользовательских типов постов с WP-CLI

Теперь мы можем получить список постов с контактной формы 7

wp post list --post_type=wpcf7_contact_form --allow-root

 

Отлично, он один: ID 300!

+-----+------------+-----------+---------------------+-------------+
| ID  | post_title | post_name | post_date           | post_status |
+-----+------------+-----------+---------------------+-------------+
| 300 | Contact    | untitled  | 2017-11-09 07:35:30 | publish     |
+-----+------------+-----------+---------------------+-------------+

 

Перечисление мета постов с WP-CLI

Мы можем получить информацию о postmeta для контактной формы с помощью этой команды для post_id 300

wp post meta list 300 --allow-root

 

Существует несколько meta_keys, у _mail есть сериализованный массив опций

+---------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| post_id | meta_key             | meta_value                                                                                                                                                                                               |
+---------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 300     | _form                |  Your Name (required)     [text* your-name]    Your Email (required)     [email* your-email]    Subject     [select* your-subject "Say Hi" "I want to hire you for  |
|         |                      | performance" "I want to hire you to write" "I have a guide/article suggestion"]    Ваше сообщение     [textarea your-message]   [submit "Send"]  [recaptcha size:compact]           |
| 300     | _mail                | {"active":true,"subject":"AndreyEx Project \"[your-subject]\"","sender":"[your-name] <wordpress@andreyex.ru>","recipient":"admin@andreyex.ru","body":"From: [your-name] <[your-email]>\nSubje |
|         |                      | ct: [your-subject]\n\nMessage Body:\n[your-message]\n\n--\nСообщение отправлено с контактной формы AndreyEx (https:\/\/andreyex.ru)","additional_headers":"Reply-To: [your-email]","attach |
|         |                      | ments":"","use_html":true,"exclude_blank":false}                                                                                                                                                         |
| 300     | _messages            | {"mail_sent_ok":"Спасибо за сообщение. Оно было отправлено.","mail_sent_ng":"Ошибка при попытке отправить сообщение. Пожалуйста, попробуйте еще раз позже.","validation_error":"Одно или несколько полей |
|         |                      | имеют ошибку. Пожалуйста, проверьте и попробуйте еще раз.","spam":"Ошибка при попытке отправить сообщение. Пожалуйста, попробуйте еще раз позже.","accept_terms":"Вы должны принять условия перед |
|         |                      | отправкой сообщения.","invalid_required":"Поле обязательно.","invalid_too_long":"Поле слишком длинное.","invalid_too_short":"Поле слишком короткое.","invalid_date":"Неправильный формат даты.","date_too_early |
|         |                      | ":"Дата предшествует самой ранней разрешенной.","date_too_late":"Дата после последней разрешенной.","upload_failed":"Произошла неизвестная ошибка при загрузке файла.","upload_file_type_invalid" |
|         |                      | :"Вы не можете загружать файлы такого типа.","upload_file_too_large":"Файл слишком большой.","upload_failed_php_error":"Ошибка при загрузке файла.","invalid_number":"The number form |
|         |                      | at is invalid.","number_too_small":"Число меньше минимально допустимого.","number_too_large":"Число больше максимально допустимого.","quiz_answer_not_correct":"Ответ на вопрос |
|         |                      | не корректен.","captcha_not_match":"Неправильный введенный код.","invalid_email":"Указанный адрес электронной почты недопустим.","invalid_url":"The URL is invalid.","invalid_tel":"Телефонный номер не |
|         |                      |  корректен."}                                                                                                                                                                                           |
| 300     | _additional_settings |                                                                                                                                                                                                          |
| 300     | _locale              | ru_RU                                                                                                                                                                                                    |
+---------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

 

С помощью команды post meta get можно посмотреть в этом сериализованным массиве параметров для _mail meta_key

wp post meta get 300 _mail --allow-root

 

Теперь вы увидите массив, это выглядит немного грязно, но теперь мы можем получить доступ к этим с командами meta pluck и meta patch.

array (
  'active' => true,
  'subject' => 'AndreyEx Project "[your-subject]"',
  'sender' => '[your-name] <wordpress@andreyex.ru>',
  'recipient' => 'admin@andreyex.ru',
  'body' => 'From: [your-name] <[your-email]>
Subject: [your-subject]

Message Body:
[your-message]

--
Это письмо отправлено с контактной формы AndreyEx (https://andreyex.ru)',
  'additional_headers' => 'Reply-To: [your-email]',
  'attachments' => '',
  'use_html' => true,
  'exclude_blank' => false,
)

 

Доступ к Сериализированному мета с WP-CLI

С WP-CLI 1.4.0 теперь можно получить доступ и изменить параметры в WordPress и хранение мета в упорядоченном массиве с командами pluck и patch!

Синтаксис wp post meta pluck принимает эту форму

wp post meta pluck <ID> <key> <key-name>

 

Использование post_id 300 как <ID>, _mail как <key> и, <key-name> как use_html, команда выглядит следующим образом

wp post meta pluck 300 _mail use_html --allow-root

 

В Boolean 1 означает истинный

1

 

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

wp post meta patch update <ID> <key> <key-name> <value>

 

Использование post_id 300 как <ID>, _mail как <key> и, <key-name> как use_html, с значением  1, команда выглядит следующим образом

wp post meta patch update 300 _mail use_html 1 --allow-root

 

Сценарии с WP-CLI

В этом простом Баш скрипте мы создаем массив всех значений post_id в Contact Form 7.

Затем мы используем команду post meta patch для обновления каждого программно

POSTIDLIST=($(wp post list --post_type=wpcf7_contact_form --field=ID --allow-root))

for POSTID in ${POSTIDLIST[@]}; do
    wp post meta patch update ${POSTID} _mail use_html 1 --allow-root
done

 

Просто измените этот цикл, чтобы удовлетворить ваши потребности, а затем скопируйте и вставьте с помощью SSH и наблюдайте пакетное обновление с помощью WP-CLI.

 

Exit mobile version