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

31 июл. 2018 г., 23:18:46
Просмотры: 22.6K
Голосов: 3

Я новичок в WordPress. Я создал пользовательскую форму в WordPress и мне нужно знать, куда поместить PHP-код WPDB для сохранения данных моей формы.

Я пытался разместить его прямо на странице, но это не сработало.

Все исследования, которые я изучил, говорят не вставлять его в файл functions.php, так где же мне его разместить?

Вот код, который я поместил на свою страницу:

Код формы

<form id="myForm" name="myform">
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Выберите бренд --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Отправить" />

</form>

PHP код

<?php
    global $wpdb; 
    $inputValue = $_POST['newValue']; 
    $wpdb->insert( 
        'catalog', 
        array( 
            'brandSel' => $inputValue 
        ), 
        array( '%s' // если тип поля - строка ) 
    );
?>
6
Комментарии

Не могли бы вы обновить ваш вопрос и добавить текущий код?

Krzysiek Dróżdż Krzysiek Dróżdż
31 июл. 2018 г. 23:31:07

<form id="myForm" name="myform"><select id="brandSel" size="1"> <option selected="selected" value="">-- Выберите бренд --</option> <option>Abba</option> <option>AG Hair</option> <option>Agave</option>

</select>

<input type="submit" value="Отправить" />

</form>

Abel Sanz Abel Sanz
31 июл. 2018 г. 23:42:47

Хорошо, и где вы хотите хранить эти данные?

Krzysiek Dróżdż Krzysiek Dróżdż
31 июл. 2018 г. 23:44:13

В пользовательской таблице, которую я создал в базе данных WordPress

Abel Sanz Abel Sanz
31 июл. 2018 г. 23:45:39

Не могли бы вы также добавить в ваш вопрос код, который вы используете для сохранения данных в этой пользовательской таблице?

Krzysiek Dróżdż Krzysiek Dróżdż
31 июл. 2018 г. 23:46:34

global $wpdb; $inputValue = $_POST['newValue']; $wpdb->insert( 'catalog', array( 'brandSel' => $inputValue ), array( '%s' // если тип поля - строка ) );

Abel Sanz Abel Sanz
31 июл. 2018 г. 23:51:12
Показать остальные 1 комментариев
Все ответы на вопрос 1
4

Хорошо, вот как это нужно делать правильно...

В вашем файле шаблона разместите форму:

<form id="myForm" name="myform" action="<?php echo esc_attr( admin_url('admin-post.php') ); ?>" method="POST">
    <input type="hidden" name="action" value="save_my_custom_form" />
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Выберите бренд --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Отправить" />
</form>

А в файле functions.php (или в вашем плагине) необходимо добавить хук admin_post_{action}:

function my_save_custom_form() {
    global $wpdb;

    $inputValue = $_POST['newValue'];
    $wpdb->insert(
        'catalog',
        array( 'brandSel' => $inputValue ),
        array( '%s' ),
    );

    wp_redirect( site_url('/') ); // <-- здесь укажите адрес страницы, на которую пользователь будет перенаправлен после отправки формы
    die;
}

add_action( 'admin_post_nopriv_save_my_custom_form', 'my_save_custom_form' );
add_action( 'admin_post_save_my_custom_form', 'my_save_custom_form' );
1 авг. 2018 г. 00:07:55
Комментарии

Я буду использовать плагин, но куда мне вставить "admin_post_{action}:"?

Abel Sanz Abel Sanz
1 авг. 2018 г. 00:16:15

Вы можете поместить это в functions.php вашей темы. Но если эта форма должна обрабатываться плагином, то этот код должен быть в вашем плагине...

Krzysiek Dróżdż Krzysiek Dróżdż
1 авг. 2018 г. 00:18:54

@AbelSanz Привет, помогло ли это тебе?

Krzysiek Dróżdż Krzysiek Dróżdż
1 авг. 2018 г. 12:38:09

Я не могу понять, куда вставить функцию. Я использую плагин "Header and Footer". Есть идеи?

Abel Sanz Abel Sanz
3 авг. 2018 г. 19:35:32