ajax - 如何修复在 WordPress 上显示的不正确的 ajax 自定义帖子类型
问题描述
有一个 WordPress 网站。在这个项目中,博客文章和产品的输出是使用 ajax 实现的。这是这个页面:
博客页面 — [1]:https ://tirador.anvi.team/blog/
产品页面 — [2]:https ://tirador.anvi.team/products/
如果在博客页面上单击下载更多按钮,新文章会越来越多地显示,直到所有条目都结束。
但是在产品页面上,有不同的行为。如果您单击下载更多按钮,新产品只需替换原来的产品即可。
我还没有开发这个网站,也没有足够的关于 ajax 的知识来解决这个问题。我需要新产品以与博客页面相同的方式出现在产品页面上。
以下是回答记录输出的代码的链接。在我看来。
加载帖子 Ajax:https ://codeshare.io/GArO9N
function more_post_ajax(){
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'tpl-blog.php'
));
foreach($pages as $page){
$page_id = $page->ID;
}
$offset = $ppp = get_field('all_blog_posts_count', $page_id);
$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;
header("Content-Type: text/html");
$args = array(
'suppress_filters' => true,
'post_type' => 'post',
'posts_per_page' => $ppp,
'paged' => $page,
);
$loop = new WP_Query($args);
$out = '';
if ($loop -> have_posts()) : while ($loop -> have_posts()) : $loop -> the_post();
$out .= get_template_part('loop/latest-post-item');
endwhile;
endif;
wp_reset_postdata();
die($out);
}
add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');
add_action('wp_ajax_more_post_ajax', 'more_post_ajax');
加载产品 Ajax:https ://codeshare.io/5NBJrJ
function load_products() {
$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;
$producer_id = (isset($_POST['producer_id'])) ? $_POST['producer_id'] : 0;
$cats = ( isset( $_POST['categories'] ) ) ? $_POST['categories'] : false;
$colors = ( isset( $_POST['product_colors'] ) ) ? $_POST['product_colors'] : false;
$price_range = ( isset( $_POST['price_range'] ) ) ? $_POST['price_range'] : false;
header("Content-Type: text/html");
$args = array(
'suppress_filters' => true,
'post_type' => 'products',
'posts_per_page' => 6,
'paged' => $page,
);
$loop = new WP_Query($args);
$out = '';
if ($loop -> have_posts()) : while ($loop -> have_posts()) : $loop -> the_post();
$out .= get_template_part( 'loop/product', 'grid' );
endwhile;
endif;
wp_reset_postdata();
die($out);
}
add_action('wp_ajax_nopriv_load_products', 'load_products');
add_action('wp_ajax_load_products', 'load_products');
这是漏洞 ajax.php 文件:https ://codeshare.io/21QXjB
我无法解决这个问题,请帮助我找到问题。
解决方案
在您的main.js
文件中查找load_products_all_products_page()
功能并更改以下行:
$('.list-products').html($data);
与下面的一个:
$('.list-products').append($data);
推荐阅读
- python - Pyomo:如何施加决策变量必须是特定整数的倍数的约束?
- php - 如何使用带有特殊字符、连字符的 strpos
- python - 在 Pandas 中查找和运行总计
- python - 如何在没有访问令牌的情况下获取 Instagram 帐户信息
- unity3d - GameObject获取相对于祖父母的位置
- html - 如何使表格行可编辑以更新 Angular 中的值?
- java - Spring:从 XML 配置创建 bean 时的 NPE
- node.js - 在我的 mongodb 更改流中获取 'Unrecognized expression '$or''/“Unknown top level operator $or”
- laravel - 使用 Laravel echo 和 Laravel mix
- prestashop - “---请做出选择---” prestashop 表格