You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:12:08