Добавить страницу в плагин - PullRequest
1 голос
/ 08 июля 2011

Я пишу свой первый плагин для Wordpress и мне нужно добавить страницу, которая выполняет обработку формы.У меня есть шорткод, который добавляет форму на любую страницу.Эту форму необходимо отправить по URL-адресу, где я могу обработать данные (сохранить в БД и отправить по электронной почте).

Сначала я добавил файл process.php в каталог плагинов и разместил в нем файл, который работает дляопубликованные данные, но у меня нет доступа к каким-либо функциям WordPress (которые мне нужны для доступа к таблице базы данных, которую я создал).

В идеале я хотел бы иметь URL-адрес типа / plugin-name /использовать.Я предполагаю, что должен быть способ иметь это прямое отношение к функции в моем основном кодовом файле плагина, но я не могу найти, как это сделать.

Я полный нуб сWordpress (в первую очередь разработчик .NET, но с опытом работы с PHP), поэтому любая помощь будет принята.

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Мало что неясно, но, насколько я понимаю, я могу предложить следующее решение:

использовать wordpress 'init' действие, чтобы перехватить опубликованные данные, например

add_action('init', 'ur_form_process_fun');

function ur_form_process_fun(){
 if(isset($_POST['unique_hidden_field'])) {
   // process form data here
 }
}

In вышеФункция кода ur_form_process_fun () запускается на этапе инициализации wordpress, и действие вашей формы должно быть URL-адресом сайта по умолчанию action="<?php site_url()?>", чтобы отправленные данные были размещены на базовом URL-адресе сайта и могли быть доступны для действия init.1008 *

unique_hidden_field может быть уникальным скрытым полем ввода вашей формы, это просто для подтверждения того, что данные поступают из вашей формы.Надеюсь, что это может решить вашу проблему.:)

0 голосов
/ 13 августа 2015

Вы можете использовать функцию add_feed для создания страницы пути действия, написать что-то похожее на это в вашем плагине functions.php или в любом месте, где вы определяете свои действия в wordpress:

add_action('init', function () {
    add_feed('/plugin/form_id_action', function(){ 
        include 'your-action-file.php'); 
    })
});

В вашем файле действий.php вы должны иметь возможность использовать функции WordPress как обычно.

<form action="/pluging/form_id_action" id="form_id_action">
    ...
</form>

Refs: https://codex.wordpress.org/Rewrite_API/add_feed https://www.pmg.com/blog/a-mostly-complete-guide-to-the-wordpress-rewrite-api/

...