Пользовательская форма в WordPress не сохраняется в базе данных после отправки и показывает ошибку 404

#php #wordpress

#php #wordpress

Вопрос:

У меня простая форма

 <form method="post" action="submit.php">
       <?php wp_nonce_field( 'my_nonce' ); ?>

     <label>First Name</label>
     <input type="text" placeholder="John" name="applicant-firstname" />

     <input type="submit" name="submit-button" id="submit-button" value="Submit" />

</form>
  

И в submit.php

 <?php
global $wpdb;
    if (!empty($_POST) amp;amp; isset( $_POST['submit-button'] )) {
       global $wpdb;
        $table = 'applicant';
        $data = array(
            'name' => $_POST['applicant-firstname']

        );
        $format = array(
            '%s'
        );
        $success=$wpdb->insert( $table, $data, $format );
        if($success){
            wp_redirect( '/' ); 
            wp_die();
        }
    }
?>
  

Проблема в том, что когда я нажимаю на кнопку отправки, я получаю URL, подобный http://example/submit.php который приводит к 404 error .

В базе данных также ничего не сохранено. Это правильный способ отправки пользовательской формы в базу данных в WordPress?

Комментарии:

1. является submit.php доступна ли она там, где находится ваша форма? чтобы проверить это, попробуйте добавить /submit.php со страницы, на которой у вас есть форма. (например: если у вас есть форма в mysite.com/formpage , затем попробуйте mysite.com/formpage/submit.php ) которая будет 404. Итак, что вы можете сделать, это переместить submit.php в root и измените это <form method=»post» action=»submit.php «> в <метод формы=»post» action=»/submit.php «>

2. Это единственный способ? Находиться в корневом каталоге?

3. И, кстати, этот возврат Fatal error: Uncaught Error: Call to a member function insert() on null

4. нет, это не единственный способ, однако, ваш submit.php файл должен быть доступен из того места, где находится ваша форма

5. В этом случае, что может быть причиной недоступности?