为了账号安全,请及时绑定邮箱和手机立即绑定

如何应用加载更多来获取 WordPress 模板中的自定义帖子

如何应用加载更多来获取 WordPress 模板中的自定义帖子

PHP
HUWWW 2021-09-18 21:07:32
在我的网站中,我使用 get posts 获取自定义帖子类型的帖子。但是一次获取所有帖子,但在我的模板中,我想显示每页剩余的 x 个帖子,我想通过使用加载更多按钮加载。       <?php          $id = url_to_postid( $current_url );         $queried_post = get_post($id);          $post_slug = $queried_post->post_name;         $page_number = (get_query_var('paged')) ?               get_query_var('paged') : 1;           $page_link =  get_pagenum_link(9999999999);           $term = get_term_by('slug', $post_slug,                      'tax_business_listing');            $cat_term_id = $term->term_id;               $args = array(                'posts_per_page' =>3,                'paged'=>$page_number,                'order'            => 'ASC',                'post_type'        => 'business',                'post_status'      => 'publish',                'offset'           =>  0,                'orderby'          => 'ASC',                 'tax_query' => array(        array(            'taxonomy' => 'tax_business_listing',            'field' => 'term_id',            'terms' => $cat_term_id,        )    ),             );          $posts =   get_posts( $args );          $loop = new WP_Query( $args );          $count = !empty($loop->posts)?count($loop->posts):0;          $max_page = $loop->max_num_pages;          $i=0;         if(!empty($posts)){         foreach ($posts as $post):           $i++;          $postName = $post->post_title;          $exp = $post->post_excerpt;          $thumb_id = get_post_thumbnail_id();          $thumb_url_array = wp_get_attachment_image_src($thumb_id,                                'thumbnail-size', true);             $thumb_url = $thumb_url_array[0];通过包含上面的代码,我在点击加载更多按钮后获得第一个帖子 3 次。我想加载剩余的帖子。请帮助我获得预期的结果。非常感谢任何帮助..
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您的代码中可能存在一些问题,请尝试以下代码。请根据您的代码更改条件并检查它是否有效。


你的模板.php


<div id="ajax-posts" class="row">

<?php get_header(); ?>

    <?php

        $args = array(

                'post_type' => 'business',

                'paged'    => 1,

        );

        $loop = new WP_Query($args);

        while ($loop->have_posts()) : $loop->the_post();

    ?>


     <div class="content">

            <h1><?php the_title(); ?></h1>

            <p><?php the_content(); ?></p>

     </div>


     <?php

            endwhile;

    wp_reset_postdata();

     ?>

</div>

 <p class="para"></p>

<button id="more_posts">Load More</button>

脚本.js


var pageNumber = 2;

jQuery(function($) {

$('body').on('click', '#more_posts', function load_posts(){

    var str = '&pageNumber=' + pageNumber + '&action=more_post_ajax';

    $.ajax({

        type: "POST",

        dataType: "html",

        url: ajax_posts.ajaxurl,

        data: str,

        success: function(data){

            var $data = $(data);

            if($data.length){

                $("#ajax-posts").append($data);

                $("#more_posts").attr("disabled",false);

            } else{

                $(".para").text("No More Posts");

                $("#more_posts").attr("disabled",true);

            }

            pageNumber++;

        },

        error : function(jqXHR, textStatus, errorThrown) {

            $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown);

        }


    });

});

});


函数.php


<?php

add_action('wp_enqueue_scripts', 'myscripts');

function myscripts() { 

wp_register_script('functions', get_template_directory_uri() .'/script.js');

wp_localize_script( 'functions', 'ajax_posts', array(

'ajaxurl' => admin_url( 'admin-ajax.php' ),

));

 wp_enqueue_script('functions');

}

if (isset($_REQUEST['posts_per_page'])) {

$pageCount = $_REQUEST['posts_per_page'];

$wp_query->set("posts_per_page", $pageCount);

$wp_query->get_posts();

}

add_action('wp_ajax_more_post_ajax', 'more_post_ajax');

add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');

function more_post_ajax(){

$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;

$args = array(

    'post_type' => 'competition',

    'paged'    => $page,

);

$loop = new WP_Query($args);

if ($loop -> have_posts()) :  while ($loop -> have_posts()) : $loop -> the_post();

    ?>

        <h2><?php the_title() ?></h2>

        <?php the_excerpt() ?>

<?php

endwhile;

endif;

wp_reset_postdata();

}

?>


查看完整回答
反对 回复 2021-09-18
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信