Вы установили плагин 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.
Этот запрос покажет вам информацию о метаданных для контактной формы 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.