Сохранение данных пользовательской формы в базу данных
Я новичок в 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' // если тип поля - строка )
);
?>

Хорошо, вот как это нужно делать правильно...
В вашем файле шаблона разместите форму:
<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' );

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

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