Ответы в темах

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Под основной я имею в виду wp-content/themes/и моя тема

    Большое спасибо, все работает!

    Вот что отправляется

    Вроде все правильно

    У меня почему-то эта функция игнорируется. Но, если написать /wp-admin/admin-ajax.php?action=loadmore то все возвращает (в чем может быть проблема?)

    P.S Это если этот адрес задать для отправки аяксом данных

    • Ответ изменён 2 года, 7 месяцев назад пользователем avearthasz.

    Код немного был переделан, ибо данные отправлялись неккоректно с помощью метода serialize, я сделал через json_encode

                                        
    const post_data = <?php echo json_encode($custom_query->query_vars); ?>;
    

    Через обработчик js я отправляю в виде json

    
    xhr.send(JSON.stringify(postData));
    

    Все данные отправляются как нужно, но я нашел проблему. Функция которая должна обрабатывать запрос (которая находится в functions.php) попросту не работает. Там нельзя сделать дебагинг (var_dump, echo) да вообще все не работает.

    Здравствуйте, вот мои коды:

    Это в functions.php:

    function loadmore_get_posts(){
    		$args = unserialize(stripslashes($_POST['query']));
    		$args['paged'] = $_POST['page'] + 1; // следующая страница
    		$args['post_status'] = 'publish';
    	 
    		query_posts($args);
    		// если посты есть
    		if(have_posts()) :
    			while(have_posts()): the_post();    
    			the_post();?>
    			<h2><?php the_title();?></h2>
    			<?php the_content();?>
    			
    			<?php
    			//get_template_part('content-template');
    			
    			endwhile;
    		endif;
    		die();
    	}
    	 
    	add_action('wp_ajax_loadmore', 'loadmore_get_posts');
    	add_action('wp_ajax_nopriv_loadmore', 'loadmore_get_posts');

    Это в js-скрипте:

    
    const loadMoreBtn = document.querySelector('#loadmore');
    
    window.addEventListener('load', function () {
        loadMoreBtn.addEventListener('click', function () {
            const customAction = 'loadmore';
            const sendType = 'POST';
    
            const postData = {
                action: customAction,
                query: post_data,
                page: current_page,
            }
    
            const xhr = new XMLHttpRequest();
    
            xhr.open(sendType, ajaxurl);
    
            xhr.addEventListener('success', function () {
                console.log('1');
            })
    
            xhr.send(postData);
        })
    })
    

    Это на нужной мне странице, где и выводятся посты:

    
    <script>
                                        const ajaxurl = '<?php echo admin_url('admin-ajax.php') ?>';
                                        const current_page = <?php echo $paged ?>;
                                        const max_pages = <?php echo $custom_query->max_num_pages ?>;
                                        const post_data = '<?php echo serialize($custom_query->query_vars); ?>';
                                    </script>
    
                                    <?php if ($custom_query->max_num_pages > 1 ) : ?>
                                        <button id="loadmore" class="btn">Load More</button>
                                    <?php endif; ?>
    • Ответ изменён 2 года, 7 месяцев назад пользователем avearthasz.
Просмотр 6 ответов — с 1 по 6 (всего 6)