Поддержка Проблемы и решения передать post на другую страницу

  • Всем привет.

    Подскажите пожалуйста как передать POST запрос на другую страницу WP если страницы отображаются в стиле http://localhost/project/page1/

    Если бы было что то вроде
    http://localhost/project/page1.php — вопросов не было бы.

    если я делаю

    
                    <form action="" method="post">
                       ...
                    </form>

    естественно по такому адресу ничего не приходит.

    Этот вопрос только как то через admin_post.php решается?

    • Тема изменена 5 месяцев назад пользователем shiva2019.
    • Тема изменена 5 месяцев назад пользователем shiva2019.
    • Тема изменена 5 месяцев назад пользователем shiva2019.
Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Юрий

    (@yube)

    Если бы было что то вроде

    А какая разница? Что укажете в action, туда и перейдет.

    естественно по такому адресу ничего не приходит.

    Не естественно. Пустой action равносилен текущему адресу, страница должна перезагрузиться методом POST.

    Этот вопрос только как то через admin_post.php решается?

    Переданные POST-параметры можно получить на любой странице на хуке ‘init’ (и не только).

    Прошу прощения. Я ошибочно в aсtion указал пустое значение. Там у меня подставляется адрес страницы аналогичный:

    http://localhost/project/page1/

    > Переданные POST-параметры можно получить на любой странице на хуке ‘init’ (и не только).

    А можно кусочек примера для понимания или ссылку на это дело?

    Модератор Юрий

    (@yube)

    А можно кусочек примера

    add_action('init', function() {
       if ( ! isset($_POST['my_form_param']) ) return;
       print_r($_POST);
       die();
    });
    

    Достаточна открыть инструмент разработчика в браузере и там смотреть что скрипт отправляет, хидеры, посты и куда.

    Спасибо огромное. Буду разбираться 🙂

    Выше приведенный код как понимаю добавлять в functions.php

    
    add_action('init', function() {
       if ( ! isset($_POST['product_id']) ) return;
       print_r($_POST);
       die();
    });
    

    На странице, где нужно отправить POST сделал форму:

    
    <form action="<?php echo get_page_link(215);?>" method="post" name="<?php echo "form".$recID?>">
    <input type="hidden" name="product_id" value="<?php echo $recID?>">
    </form>
    

    а на элемент перехода повесил событие

    <a class="products-detail products-detail_click" href="<?php echo get_page_link(215);?>" onclick="document.<?php echo "form".$recID?>.submit();">Подробнее</a>

    Однако судя по результату, что то я не так сделал, ибо на итоговую страницу ничего не приходит..

    • Ответ изменён 5 месяцев назад пользователем shiva2019.
    • Ответ изменён 5 месяцев назад пользователем shiva2019.
    Модератор Юрий

    (@yube)

    что то я не так сделал

    Забыли в обработчике клика по ссылке после submit() добавить return false; в результате чего вместо отправки формы получили просто переход по ссылке.

    Спасибо.

    После return POST действительно передается. Единственно что, страница теперь пустая..почему не пойму..

    Модератор Юрий

    (@yube)

    Потому что die();
    Убедились, что передается всё как надо — убирайте отладку и делайте нормальный обработчик формы.

    Ура. Все получилось. Спасибо!!!

    • Ответ изменён 5 месяцев назад пользователем shiva2019.
Просмотр 10 ответов — с 1 по 10 (всего 10)