Как правильно делается форма добавления записи Вордпрес через фронтенд?
Я понимаю что нужно создать html форму и ajax-ом передавать данные(Заголовок записи и текст) на бэк. Но что дальше?Может есть хорошие практики реализации такого функционала?
Ответы (1 шт):
Автор решения: WP Punk
→ Ссылка
Подключаем скрипты:
add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts' );
function my_enqueue_scripts() {
wp_enqueue_script( 'my-script', plugin_dir_url( __FILE__ ) . 'assets/js/main.js', [ 'jquery' ], '1.0.0', true );
wp_localize_script(
'my-script',
'my_ajax',
[
'url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'my-nonce' ),
]
);
}
js-файл для отправки AJAX:
jQuery(document).ready(function ($) {
$.ajax({
url: my_ajax.url,
type: 'POST',
data: {
'nonce': my_ajax.nonce,
'action': 'my_ajax_action',
},
success: function (data) {
alert(data); // 'some-data'
}
});
});
Подключаем колбек для нашего пхп-файла:
add_action( 'wp_ajax_my_ajax_action', 'my_ajax_callback' );
add_action( 'wp_ajax_nopriv_my_ajax_action', 'my_ajax_callback' );
public function my_ajax_callback() {
check_ajax_referer( 'my-nonce', 'nonce' );
...
$request = 'some-data';
wp_send_json( $request );
}
Отсюда хорошие практики:
- Добавить
wp_localize_scriptс нужными данными. Обязательно ссылку к admin-ajax.php и nonce; - В
$.ajaxиспользуем наши данные из wp_localize_script (my_ajax.url, my_ajax.nonce, ...); - Обязательно проверяем nonce. Для ajax есть для этого своя ф-ция
check_ajax_referer; - Если нужно отправить ответ используем
wp_send_json
Подробнее в документации: https://wp-kama.ru/id_2018/ajax-v-wordpress.html