Добавить metabox c формой
Хочу добавить на страницу заказа Woocomerce meta_box с формой отправки данных.
metabox добавляется нормально с формой
<?php add_action( 'add_meta_boxes', 'true_add_metabox' ); function true_add_metabox() { add_meta_box( 'seo_metabox', // ID нашего метабокса 'Отправка сообщения', // заголовок 'SF_send', // функция, которая будет выводить поля в мета боксе 'shop_order', // типы постов, для которых его подключим 'normal', // расположение (normal, side, advanced) 'default' // приоритет (default, low, high, core) ); } function SF_send( $post ) { if (isset( $_GET['post'] ) ) { ?> <form method="post" role="form" action="post.php?post=<? echo $_GET['post']; ?>&action=edit" > <div class="form-group"> <label for="txt">Enter Text</label> <input type="text" class="form-control" id="txt1" name="txt1" value="" placeholder="Enter your text..." /> </div> <button type="submit" name="send" class="btn btn-default">Send</button> </form> <? if(isset($_POST['send'])) { // вот эта часть кода не выполняется после нажатия кнопки Send. ПОЧЕМУ? Что сделал не так? echo $order_id=$_GET['post']; } ?>
Не пойму почему не выполняется это условие if(isset($_POST['send'])) ...
если в action формы указать доп параметр
action="post.php?post=&action=edit&txt=1"
то по нажатию на кнопку он переходит на страницу того же заказа "post.php?post=532>&action=edit" , но без параметра txt=1.
Как сделать правильно и получить данные с формы?
Скорее всего, вы свою форму вставили в форму другую.
Поэтому советую делать отправку своей формы на AJAX - через JS посылать запрос
и потом через хук wp_ajax_
писать обработку
Читать
вот я тоже подумал что она вложена.
а можна с примером?
https://wp-kama.ru/id_2018/ajax-v-wordpress.html#ajax-v-admin-paneli-wordpress
Я же выше ссылку добавил.
Там пример есть.
Если будут трудности - спрашивайте.
https://stackoverflow.com/questions/10398783/jquery-serialize-form-and-other-parameters
Вот там пример, как собрать ВСЕ данные с формы и передать их
так сходу не дается...
Написал так, по нажатию на кнопку ничего не происходит
https://wp-kama.ru/id_2018/ajax-v-wordpress.html#ajax-v-admin-paneli-wordpress
Изучите материал "AJAX в админ-панели WordPress"
(почему у Вас JS начинается НЕ с "jQuery(document).ready( function( $ ){")
и сделайте также.
Где ваша функция
add_action( 'wp_ajax_my_action', 'my_action_callback' );
?
Наведите пример скрипта
а также функции.
Функция - пишем в functions.php
А скрипт - можно там же, где и сама форма.
https://fructcode.com/ru/blog/how-to-send-html-form-with-ajax/
Я нашел такой пример, но как написал выше ничего не произошло
Ну вот такой код, страница перезагружается и ничего не выводит в $_POST['name']
Весь код в файле плагина
Сейчас копирую ваш код себе на локальный сайт, смотрю - что и как.
Я сменил событие на клик на кнопку, а не на отправку формы.
Для меня так более привычно.
И немного код подправил.
Да, есть реакция. Спасибо!
Теперь подскажите я в функции contact_form() не вижу значение переменной $_GET['post'], ее туда нужна передать?
Вот там передаются переменные, которые будут видны в contact_form()
А вот вы получили значение с поля:
name = $("#name").val();
Ищите на странице нужные поля, и можно передавать.
http://joxi.ru/12MxJJ9cwJn69m
ID заказа на странице в поле с ID "post_ID"
Ага получилось! Спасибо огромное что откликнулись!
Принимайте мой ответ, как правильный, чтоб вопрос был решеным.
Принимаю ответ как решенный. Степан, спасибо за помощь Сергею!