如何在WordPress的ajax_posts()中添加并传递文章URL至AJAX?
当然可以!给你的AJAX加载更多文章添加文章URL
完全没问题呀!你可以轻松把文章URL加入到传递给AJAX的文章数组里,下面我给你一步步拆解实现方法:
1. 在PHP的ajax_posts()函数中添加文章URL
在你查询文章的循环里,使用WordPress内置的get_permalink()函数获取当前文章的URL,然后把它和你已经在传递的文章数据(比如标题、摘要)一起存入数组即可。示例代码如下:
function ajax_posts() { // 你的文章查询参数,按需调整 $args = array( 'post_type' => 'post', 'posts_per_page' => 2, // 其他参数:比如偏移量、分类筛选等 ); $posts_query = new WP_Query($args); $posts_data = array(); if ($posts_query->have_posts()) { while ($posts_query->have_posts()) { $posts_query->the_post(); // 组装包含URL的文章数据数组 $posts_data[] = array( 'title' => get_the_title(), 'excerpt' => get_the_excerpt(), 'permalink' => get_permalink(get_the_ID()), // 这里就是文章的完整URL // 你需要的其他字段都可以加在这里 ); } wp_reset_postdata(); // 重置查询,避免影响后续操作 } // 以JSON格式返回成功响应 wp_send_json_success($posts_data); } // 注册AJAX动作,兼容登录和未登录用户 add_action('wp_ajax_nopriv_ajax_posts', 'ajax_posts'); add_action('wp_ajax_ajax_posts', 'ajax_posts');
2. 在AJAX的success函数中使用文章URL
当AJAX请求成功拿到数据后,你就可以在拼接HTML的时候直接调用post.permalink来使用这个URL了,比如把文章标题做成可点击的链接:
jQuery(document).ready(function($) { $('#load-more-btn').on('click', function() { $.ajax({ url: ajax_object.ajax_url, // 这是wp_localize_script传递的AJAX地址 type: 'POST', data: { action: 'ajax_posts', // 其他需要传递的参数:比如当前加载的文章数量等 }, success: function(response) { if (response.success) { var posts = response.data; // 循环遍历文章数据,追加到页面容器中 $.each(posts, function(index, post) { var postHtml = ` <div class="single-post"> <h2><a href="${post.permalink}">${post.title}</a></h2> <p>${post.excerpt}</p> </div> `; $('#posts-container').append(postHtml); }); } } }); }); });
小提示
- 如果是自定义文章类型,
get_permalink()同样能正确返回对应的文章URL,无需额外调整; - 记得调用
wp_reset_postdata(),避免后续的文章查询出现数据混乱; - 用
wp_send_json_success()返回数据会自动处理JSON格式,比手动echo JSON更规范。
内容的提问来源于stack exchange,提问作者CyberJ
相关产品推荐
相关产品推荐

