Кнопка Загрузить больше не работает в Wordpress - PullRequest
0 голосов
/ 08 апреля 2019

Я учу WordPress на лету при создании сайта. Теперь я пытаюсь поместить кнопку «Загрузить еще» под сообщениями, и когда я нажимаю на нее, чтобы загрузить следующую часть сообщений.

Я следовал одному уроку, который нашел. То, что я добавил к function.php, это

function my_load_more_scripts() {

    global $wp_query; 

    wp_register_script( 'my_loadmore', get_stylesheet_directory_uri() . '/myloadmore.js', array('jquery') );

    wp_localize_script( 'my_loadmore', 'loadmore_params', array(
        'ajaxurl' => site_url() . '/wp-admin/admin-ajax.php', // WordPress AJAX
        'posts' => json_encode( $wp_query->query_vars ), // everything about your loop is here
        'current_page' => get_query_var( 'paged' ) ? get_query_var('paged') : 1,
        'max_page' => $wp_query->max_num_pages
    ) );

    wp_enqueue_script( 'my_loadmore' );
}

add_action( 'wp_enqueue_scripts', 'my_load_more_scripts' );

function loadmore_ajax_handler(){

    $args = json_decode( stripslashes( $_POST['query'] ), true );
    $args['paged'] = $_POST['page'] + 1; // we need next page to be loaded
    $args['post_status'] = 'publish';

    query_posts( $args );

    if( have_posts() ) :

        // run the loop
        while( have_posts() ): the_post();   
             the_title();
        endwhile;

    endif;
    die;
}

add_action('wp_ajax_loadmore', 'loadmore_ajax_handler'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler'); // wp_ajax_nopriv_{action}

Это часть JavaScript

jQuery(function($){
    $('.loadmore').click(function(){

        var button = $(this),
            data = {
            'action': 'loadmore',
            'query': loadmore_params.posts, 
            'page' : loadmore_params.current_page
        };

        $.ajax({ // you can also use $.post here
            url : loadmore_params.ajaxurl, // AJAX handler
            data : data,
            type : 'POST',
            beforeSend : function ( xhr ) {
                button.text('Loading...'); 
            },
            success : function( data ){
                if( data ) { 
                    button.text( 'More posts' ).prev().before(data); // insert new posts
                    loadmore_params.current_page++;

                    if ( loadmore_params.current_page == loadmore_params.max_page ) 
                        button.remove();

                } else {
                    button.remove();
                }
            }
        });
    });
});

А это кнопка

    <?php

        $the_query = new WP_Query(array(
            'posts_per_page' => 1,
            'category_name' => 'jobs', // this is the category SLUG
        ));
     ?>
     <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
         <?php the_title(); ?>
     <?php endwhile; ?>

<span class="loadmore">More posts</span>

У меня есть 2 сообщения в категории Jobs(slug = jobs). Как вы можете видеть выше, я добавил posts_per_page в 1, чтобы протестировать кнопку.

Я вижу один пост на странице и кнопку ниже, но когда я нажимаю More posts вместо загрузки еще одного поста, он просто показывает 0 на странице над текущим видимым постом.

Это пользовательский шаблон страницы, а не index.php, если это важно.

В чем здесь проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...