javascript - 我在 Wordpress 中加载更多帖子 Ajax 按钮不起作用

标签 javascript php jquery ajax wordpress

我需要在点击按钮上显示更多帖子

当我单击“检查”->“网络”按钮时,一切都正常,或者至少我猜是正常的

enter image description here

enter image description here

我只是不知道为什么我的帖子没有显示在页面上

这是我的代码

主要内容:

  <div id="all-posts" class="posts-container">
        <?php get_template_part('loops/loop','all'); ?>
        <div class="load-more-content">
            <a data-page="2" href="" class="load-more"> More >> </a>
        </div>
    </div>

Ajax :

//For More Content
add_action('wp_ajax_load_more_content', 'load_more_content');
add_action('wp_ajax_nopriv_load_more_content', 'load_more_content');
function load_more_content() {
 $page          = intval( $_POST['page'] );
 $post_per_page = 1;
 $offset        = ( $page - 1 ) * $post_per_page;
 $output_html   = '';

 $load_more_agrs = array(
    'post_type'      => array('post','download'),
    'offset'         => $offset,
    'posts_per_page' => $post_per_page
);

$load_more_query = new WP_Query( $load_more_agrs );

if ( $load_more_query->have_posts() ):
    while ( $load_more_query->have_posts() ):$load_more_query->the_post();
        $output_html .= ' <a class="post-link" href="' . the_permalink() . '">';
        $output_html .= '<div class="post wow fadeInUp">';
        $output_html .= '<div class="post-inner">';
        $output_html .= '<div class="post-thumb">';
        get_the_post_thumbnail( $load_more_query->post->ID, 'main-thumbnail' );
        $output_html .= '</div>';
        $output_html .= '<span class="post-title">' . get_the_title( $load_more_query->post->ID ) . '</span>';
        $output_html .= '</div>';
        $output_html .= '<div class="post-meta" >';
        $output_html .= '<span ><i class="fa fa-clock-o" ></i>' . get_the_date( 'y,m,d', $load_more_query->post->ID ) . '</span>';
        $output_html .= '<span><i class="fa fa-user"></i>' . get_the_author() . '</span>';
        $output_html .= '<span><i class="fa fa-eye"></i>' . get_post_view( get_the_ID() ) . '</span>';
        $output_html .= '<span><i class="fa fa-thumbs-o-up"></i></span>';
        $output_html .= '</div>';
        $output_html .= '</div>';
        $output_html .= '</a>';
    endwhile;
endif;
$count = $load_more_query->found_posts;
wp_reset_postdata();
$result            = array();
$result['count']   = $count;
$result['content'] = $output_html;
die( json_encode( $result ) );

}

我认为我的问题是 Ajax 代码的 当我添加 dataType:'json', 时,出现错误。我的意思是错误函数执行,所以我必须添加 contentType: 'application/json', 但我的响应只有 0。

Ajax 代码:

 $(document).on('click','.load-more', function (event) {
    event.preventDefault();
    var $this = $(this);
    $this.text('Loading...');
    var $page = parseInt($this.data('page'));
    $.ajax({
        url: data.ajax_url,
        type:'post',
        /*contentType: 'application/json',*/
        //dataType:'json',
        data: {
            action: 'load_more_content',
            page: $page
        },
        success: function (response) {
            if (parseInt(response.count) > 0) {
                $this.parent().before(response.content);
                $this.data('page', parseInt($page + 1));
            }
            $this.text('Done!');
        },
        error: function (err) {
            alert('Error is : '+ err.statusText);
        }
    });
});

});

最佳答案

网络选项卡中显示的响应不是正确的 JSON。

该问题是由使用 the_permalink() 引起的,它会回显其结果。您应该使用返回字符串的get_permalink()

此外,虽然与此特定问题无关,但 get_the_post_thumbnail() 的结果不会附加到 $output_html 中。

关于javascript - 我在 Wordpress 中加载更多帖子 Ajax 按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45006789/

相关文章:

javascript - 即使有一个框未选中,如何禁用“允许”按钮?仅当选中所有复选框时才应启用“允许”按钮?

php - 如何在 PHP 中将密码存储为数据库中的 BCRYPT '$2a$15'

php - utf8_encode 函数用途

php - Jquery AJAX PHP数据返回

javascript - 如何通过 npm TypeScript 编译器生成 JavaScript 包

javascript - JSHint 奇怪的行为

javascript - clearInterval 停止 setInterval 纯粹基于时间工作

php - 我应该使用/编写模板词法分析器吗

javascript - 单击页面的关闭按钮时,我想清除所有选择框值

php - jQuery 自动完成结果应显示为组合框