После отправки формы нужно показать сообщение об успешной отправке на странице формы.

Вопрос или проблема

С административной стороны я отправляю форму в admin-post.php. Я хочу вывести сообщение об успешном завершении внизу формы. Я новичок в WordPress, что я делал, показано ниже.

код формы admin.php?page=add-products

 <form action="<?php echo admin_url('admin-post.php') ?>" method="post">
                <table>
                <input type="hidden" name="action" value="add_product_from_admin">
                <tr><td>Имя</td><td><input type="text" name="pr_name" id="pr_name"></td></tr> 
    <tr><td colspan="2" align="center"><input type="submit" name="pr_submit" id="pr_submit" value="Сохранить продукты"></td></tr>
                </table>
            </form>


    add_action( 'admin_post_add_product_from_admin', 'add_product_into_data_base' );



function add_product_into_data_base() {
    //некоторые операции с базой данных
wp_redirect(admin_url('admin.php?page=add-products&message=success'));
}

Вам нужно передать переменную и её значение методом GET, чтобы отобразить сообщение об успешном завершении, что вы уже делаете.

Теперь в вашем PHP-файле отобразите сообщение на основе параметра GET и его значения.

if($_GET['message'] == 'success'){ 
  //отобразите ваше сообщение 
}

 <form action="<?php echo admin_url('admin-post.php') ?>" method="post">
   <table>
      <input type="hidden" name="action" value="add_product_from_admin">
      <tr>
         <td>Имя</td>
         <td><input type="text" name="pr_name" id="pr_name"></td>
      </tr>
      <tr>
         <td colspan="2" align="center"><input type="submit" name="pr_submit" id="pr_submit" value="Сохранить продукты"></td>
      </tr>
   </table>
</form>

Обработайте запрос формы через admin_post с именем действия – add_product_from_admin

add_action( 'admin_post_add_product_from_admin', 'add_product_into_data_base' );
    
function add_product_into_data_base() {
        //некоторые операции с базой данных
        
        // Установите временную переменную с сообщением об успехе
        set_transient('product_added_success', 'Продукт успешно добавлен', 5);
    
        wp_redirect(admin_url('admin.php?page=add-products'));
        exit();
}


// Добавьте уведомление для успешно добавленного продукта
function display_product_added_notice() {
    $message = get_transient('product_added_success');

    if ($message) {
        ?>
        <div class="notice notice-success is-dismissible">
            <p><?php echo esc_html($message); ?></p>
        </div>
        <?php
        // Удалите временную переменную после отображения уведомления
        delete_transient('product_added_success');
    }
}
add_action('admin_notices', 'display_product_added_notice');

.

Ответ или решение

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

Шаг 1: Создание формы

Ваша форма должна отправлять данные на admin-post.php. Код формы, который вы привели, выглядит корректно. Вот как он выглядит с комментариями:

<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
    <table>
        <input type="hidden" name="action" value="add_product_from_admin">
        <tr>
            <td>Name</td>
            <td><input type="text" name="pr_name" id="pr_name"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" name="pr_submit" id="pr_submit" value="Save Products">
            </td>
        </tr>
    </table>
</form>

Шаг 2: Обработка данных формы

Необходимо добавить обработчик, который будет позволять вам выполнять действия с данными формы и перенаправлять пользователя с сообщением об успехе. Ниже приведен пример функции, которую вы можете использовать:

add_action('admin_post_add_product_from_admin', 'add_product_into_data_base');

function add_product_into_data_base() {
    // Здесь выполните операции с базой данных (добавление продукта и т.д.)

    // Устанавливаем временное сообщение об успешной операции
    set_transient('product_added_success', 'Продукт успешно добавлен', 5); // Хранить 5 секунд

    // Перенаправляем обратно на страницу с формой
    wp_redirect(admin_url('admin.php?page=add-products'));
    exit();
}

Шаг 3: Отображение сообщения об успехе

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

function display_product_added_notice() {
    $message = get_transient('product_added_success');

    if ($message) {
        ?>
        <div class="notice notice-success is-dismissible">
            <p><?php echo esc_html($message); ?></p>
        </div>
        <?php
        // Удаляем транзиент, чтобы сообщение отобразилось только один раз
        delete_transient('product_added_success');
    }
}
add_action('admin_notices', 'display_product_added_notice');

Заключение

Таким образом, мы создали рабочий механизм, который позволяет вам отправлять данные формы, выполнять необходимые операции в базе данных и отображать сообщение об успешном добавлении продукта. Использование transient позволяет нам отображать уведомление только один раз, что улучшает пользовательский опыт.

SEO-оптимизация

Если вы решите публиковать этот пост на блоге, рекомендуется использовать ключевые слова, такие как "WordPress отправка формы", "Сообщение об успехе в WordPress", "Добавление продукта в WordPress", чтобы улучшить поисковую видимость вашего контента.

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

Оцените материал
Добавить комментарий

Капча загружается...