Задать вопрос

Почему не создаются посты без перезагрузки?

Добрый день! Уже который день не могу понять, почему не работает.
На главной странице сайта создал форму добавления поста:
<form  action="#" method="post" enctype="multipart/form-data">
						<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 ">
							<fieldset>
								<input type="text" class="form-control" name="titleObject" id="titleQ" placeholder="Наименование"  autocomplete="off">
							</fieldset>
						</div>
						

						<button type="button" id="custom_button" class="btn btn-primary col-12">Добавить</button>

					</form>

В function.php поместил такой код:
if(!function_exists('my_custom_script')):
    function my_custom_script(){

        wp_enqueue_script( 'jquery' );
		    wp_enqueue_script('customajax', get_stylesheet_directory_uri() . '/js/custom.js', array(), 1.0,false
	    );

       wp_localize_script('customajax', 'ajjax', array(
                'url'   => admin_url( 'admin-ajax.php' ),));
}
endif;
add_action('wp_enqueue_scripts','my_custom_script');

if(!function_exists('ret')) {
    function ret()
    {
        $asd = $_POST["titleObject"];

        $my_post = array(
            'post_title' => $asd,
            'post_content'  => 'test',
            'post_type' => 'post',
            'post_status'  => 'publish',
            'post_author'  => '1'
        );

        $post_ID = wp_insert_post( $my_post );
        echo $post_ID;

       wp_die();
    };


}

if( defined('DOING_AJAX') ) {
    add_action('wp_ajax_qwas', 'ret');
    add_action('wp_ajax_nopriv_qwas', 'ret');

}

В файл js:
jQuery(function(jQuery) {
    jQuery('#custom_button').click(function () {
        var titleObject = jQuery("#titleQ").val();
        jQuery.ajax({
                type: "POST",
                        data: {
                   action: 'qwas',
                    titleObject: titleObject,
                },
                url: ajjax.url,
            cache: false,
                success: function ( response ) {
                    console.log(response);
                    }
                });
    });
});

Когда ввожу данное в поле и нажимаю button в консоли вижу сообщение которое выводит id поста, но в адмике и базе данных пост сразу не создается, а только после обновления данных страниц. Но ведь должно же с помощью ajax создавать посты без перезагрузки. Не могу понять в чем причина. Буду благодарен за помощь.
  • Вопрос задан
  • 181 просмотр
Подписаться 4 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вы не поняли как работает ajax. Данные вы отправили, пост создался. Но чтобы на странице/страницах, которые УЖЕ загружены в браузере увидеть обновления, нужно либо вручную их обновить, либо из полученного по аякс ответа сгенерировать нужный html и вставить его в эти страницы (сможете только в ту из которой инициировали загрузку). Если же вы хотите в других вкладках чтобы открытые страницы сами обновлялись когда на бекенде новые данные появились, то вам нужны другие технологии. Читайте про веб-сокеты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы