cajka
Новичок
Пишу свой плагин для wordpress-а и возникла одна проблема, как именно обратится к обработчику формы.
Попробую по порядку рассказать. Есть код, который вставляет на страницу сайта форму для отправки данных, есть обработчик, который должен их принять, обработать и записать в базу данных. Но как все это связать я не знаю, вернее не выходит wordpress-е это сделать, не удаётся обратится правильно к обработчику.
Вот код плагина:
Функция data_type();, это пользовательская функция, которая просто обрабатывает данные и приводи их к нужному типу.
Главная проблема, как обратится к обработчику.
Использовала функцию wordpress get_permalink();, которая возвращает адрес поста (страницы), но не работает, данные не отправляются, выдает ошибки.
Ошибки:
К сожалению, по вашему запросу ничего не найдено.
Warning: include(T:\home\virtual\worpress/wp-content/themes/car-theme/searchform.php) [function.include]: failed to open stream: No such file or directory in T:\home\virtual\worpress\wp-content\themes\car-theme\index.php on line 86
Warning: include() [function.include]: Failed opening 'T:\home\virtual\worpress/wp-content/themes/car-theme/searchform.php' for inclusion (include_path='.;/usr/local/PHP/PEAR;/usr/local/PHP/Smarty') in T:\home\virtual\worpress\wp-content\themes\car-theme\index.php on line 86
Попробую по порядку рассказать. Есть код, который вставляет на страницу сайта форму для отправки данных, есть обработчик, который должен их принять, обработать и записать в базу данных. Но как все это связать я не знаю, вернее не выходит wordpress-е это сделать, не удаётся обратится правильно к обработчику.
Вот код плагина:
PHP:
<?php
function dl_add_form(){
$form = "<form action='".get_permalink()."' enctype='multipart/form-data' method='post'>
<input type=hidden value=process name='wpcf_stage'/>
<p>Ваше имя:<br/>
<input name='author_name' type='text'/>
</p><p>Текст рецепта:<br/>
<textarea name='text_recipe' cols='45' rows='10'></textarea>
</p><p>Ваш E-mail:<br/>
<input name='e_mail' type='text'/>
</p><p>Ваш номер кошелька <br/>
<input name='num_webmony' type='text'/>
</p><p>
<input name='ADD_RECIPE' type='submit' value='Отправить'/>
</p>
</form>";
return $form;
}
function dl_print_form($content){
if (isset($_POST["ADD_RECIPE"])){
global $wpdb;
$dl_recipes = $wpdb->prefix.dl_recipes;
$msg_text = "";
$author_name = (isset($_POST["author_name"])) ? data_type($_POST["author_name"], "string") : "";
$text_recipe = (isset($_POST["text_recipe"])) ? data_type($_POST["text_recipe"], "string") : "";
$e_mail = (isset($_POST["e_mail"])) ? data_type($_POST["e_mail"], "string") : "";
$num_webmony = (isset($_POST["num_webmony"])) ? data_type($_POST["num_webmony"], "string") : "";
if ($author_name or $text_recipe or $e_mail or $num_webmony)
$msg_text .= "<p>Вы заполнили не все поля.</p>";
if (!preg_match("/(^R[0-9]$)|(^Z[0-9]$)/i", $num_webmony) )
$msg_text .= "<p>Номер кошелька не верный.</p>";
if (!$msg_text){
$wpdb->insert(
$dl_recipes,
array( 'author_name' => $author_name, 'text_recipe' => $text_recipe, 'photo_name' => $photo_name, 'e_mail' => $e_mail, 'num_webmony' => $num_webmony),
array( '%s', '%s', '%s', '%s', '%s'));
$msg_text = "<p>Рецепт отправлен.</p>";
}
}
$form = dl_add_form();
$content = str_replace("<!--forms_print-->", $form, $content);
return $content;
}
add_action('admin_menu','dl_add__admin_page');
add_filter('the_content', 'dl_print_form');
?>
Главная проблема, как обратится к обработчику.
Использовала функцию wordpress get_permalink();, которая возвращает адрес поста (страницы), но не работает, данные не отправляются, выдает ошибки.
Ошибки:
К сожалению, по вашему запросу ничего не найдено.
Warning: include(T:\home\virtual\worpress/wp-content/themes/car-theme/searchform.php) [function.include]: failed to open stream: No such file or directory in T:\home\virtual\worpress\wp-content\themes\car-theme\index.php on line 86
Warning: include() [function.include]: Failed opening 'T:\home\virtual\worpress/wp-content/themes/car-theme/searchform.php' for inclusion (include_path='.;/usr/local/PHP/PEAR;/usr/local/PHP/Smarty') in T:\home\virtual\worpress\wp-content\themes\car-theme\index.php on line 86