Intereting Posts
удаление index.php IIS 7.5 webconfig Пользовательский Архив сообщений не работает Как просто удалить вложение, но сохранить исходный файл? добавьте поле «загрузка файла» в подробности пользователя Как создать пользовательский экран для архива woocommerce и страниц категории продуктов? Информационный бюллетень, рассылка писем и управление контактами удалять название категории на страницах WordPress версия 3.8 – кнопка предварительного просмотра не работает для редактора Multisite WPLANG не будет экономить Создание уникального связанного списка тегов из определенной категории? либо single-{custom} .php 404's OR / таксономия / 404's – пользовательский тип сообщения и таксономия permalinks взаимные соединения Обманываем, да? Страница роли редактора, не сохраняющая настройки для настраиваемого типа сообщения Плагин: ошибка Google Analytics для Dashboard – отметка времени слишком далека от текущего времени get_post_fields как выдержка

Возврат или использование данных формы с помощью крючка?

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

В идеале пользователь может определить свою собственную функцию и зацепить крючок, который я установил, захватить данные и использовать их, как им нравится, или манипулировать им до того, как он будет отправлен в API.

if(!empty($p['form_data'])) { parse_str($p['form_data'], $fd); if(!empty($fd['list-id'])) { // Create and store the variables needed to add a new subscriber $email = false; $lid = empty($fd['list-id']; $api = 'api_key'; $mv = array(); $optin = 'true'; // Add custom hook, to capture user submitted data do_action( 'get_form_data', $p['form_data'] ); } } 

И тогда в идеале пользователь может написать функцию для использования данных (базовый пример).

 function catch_user_data( $data ) { $user_email = $data['email']; update_user_meta( '1' , 'user_email', $user_email ); } add_action( 'get_form_data' , 'catch_user_data' ); 

Я уверен, что я делаю что-то неправильно здесь, так как данные не обновляются при отправке формы. Неправильно ли крючок?

Если вы хотите разрешить пользователям «манипулировать им до того, как он будет отправлен в API», я бы предложил использовать фильтр вместо действия.

 if ( ! empty( $p['form_data'] ) ) { parse_str( $p['form_data'], $fd ); if ( ! empty( $fd['list-id'] ) ) { // Create and store the variables needed to add a new subscriber $email = false; $lid = empty( $fd['list-id'] ); $api = 'api_key'; $mv = array(); $optin = 'true'; // Add custom hook, to capture user submitted data $p['form_data'] = apply_filters( 'get_form_data', $p['form_data'] ); } } 

Это будет код, который позволяет пользователям манипулировать этими данными.

 function catch_user_data( $data ) { $user_email = $data['email']; update_user_meta( '1' , 'user_email', $user_email ); return str_replace( 'find-something', 'replace-it', $data ); } add_filter( 'get_form_data' , 'catch_user_data' ); 

Больше информации:
http://codex.wordpress.org/Function_Reference/apply_filters
http://codex.wordpress.org/Glossary#Action
http://codex.wordpress.org/Glossary#Filter