Intereting Posts
Переопределить URL-адрес по умолчанию для страниц автора? Перенаправление на другую страницу, если пользователь не опубликовал не менее 1 продукта Как получить Ajax в тему – без написания плагина? Как связать существующего пользователя с сайтом в многопользовательской настройке программно Проблемы с страницей блога Использование «setup_postdata» с «get_template_part» не работает JQuery для стороны администратора не загружен Настройка 404 страницы в Nginx Как добавить кнопку установленного изображения в wp_editor ()? Таксономия Пользовательская колонка – фильтр «manage_ {TAXONOMY} _custom_column» пропускает только 2 аргумента Не удается войти в WordPress даже после изменения пароля хэша в phpmyadmin Неоднородный контент на странице Обновление структуры постоянной ссылки с использованием фильтра «post_link» приводит к ошибке 404 для сообщений Устранение конфликтов имен плагинов с WP updater Публикация множества вещей сразу

Передовая практика представления формы плагина

Я провел много исследований и не нашел совершенно то, что я ищу, поэтому я надеюсь, что я могу быть направлен в правильном направлении.

Я разрабатываю плагин Events, который будет заказывать билет из интерфейса. Это ничем не отличается от любого другого представления формы, но я смущаюсь с тем, как справиться с этим из плагина, который написан через ООП классом.

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

Другая вещь, о которой я не уверен, – это когда вы отправляете форму в интерфейсе, как это фактически передается функции на бэкэнд. Я надеюсь полностью абстрагировать обработку формы из любых деталей шаблона.

// events.php if ( ! class_exists( 'Events' ) ) { Class Events { function __construct() { add_action( 'plugins_loaded', array( &$this, 'includes' ), 1 ); } function includes() { require_once( EVENTS_INCLUDES . 'functions.php' ); } } } if ( class_exists( 'Events' ) ) { $events_load = New Events(); } // functions.php function process_form() { ...do form processing here... ...insert booking... } 

Я не уверен, что зацепиться за это, поймать это, или куда отправить действие формы тоже. Спасибо за помощь!

-Адам

Отправьте действие формы либо на свою домашнюю страницу, либо на определенный URL-адрес страницы. Вы не можете обрабатывать $ _POST внутри шаблона, потому что вам нужно перенаправить его после процесса, а перенаправление нужно уволить до выхода HTML.

 // you should choose the appropriate tag here // template_redirect is fired just before any html output // see - http://codex.wordpress.org/Plugin_API/Action_Reference add_action('template_redirect', 'check_for_event_submissions'); function check_for_event_submissions(){ if(isset($_POST['event'])) // && (get_query_var('pagename') === 'events) { // process your data here, you'll use wp_insert_post() I assume wp_redirect($_POST['redirect_url']); // add a hidden input with get_permalink() die(); } } 

Вы также можете проверить nonce, чтобы убедиться, что данные были отправлены из нужного места …