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

WordPress多站点自定义课程URL重写及获取course-id参数求助

解决WordPress多站点下自定义课程URL优化问题

你已经找对了方向,但问题出在重写规则没有关联到你的模板页面,而且多站点环境下需要处理跨站点查询课程数据的逻辑。我帮你梳理下完整的解决方案:

1. 修正重写规则与查询变量

首先,你的代码需要明确指向作为模板的那个course页面,否则WordPress不知道该加载哪个页面来展示内容。更新后的代码如下:

// 注册自定义查询变量,让WordPress能识别course-name参数
add_filter('query_vars', 'my_course_query_vars', 10, 1);
function my_course_query_vars($vars) {
    $vars[] = 'course-name';
    return $vars;
}

// 添加自定义重写规则
add_action('init', 'my_course_rewrite_rules');
function my_course_rewrite_rules() {
    // 匹配 /course/课程slug 的路径,指向slug为course的模板页面,并传递course-name参数
    add_rewrite_rule(
        '^course/([^/]+)/?$',
        'index.php?pagename=course&course-name=$matches[1]',
        'top'
    );
}

把这段代码添加到你当前站点的主题functions.php里,或者更稳妥的方式是创建一个简单的自定义插件来存放(避免主题更新导致代码丢失)。

2. 刷新重写规则

代码添加后,登录WordPress后台,进入设置 → 固定链接,不需要修改任何设置,直接点击「保存更改」按钮。这一步会让WordPress自动更新rewrite规则,同时更新.htaccess文件(确保服务器给了.htaccess写入权限,如果没权限,页面会显示需要手动添加的规则,复制粘贴进去就行)。

3. 在模板页面获取course-id

你的目标URL里不需要显示course-id,我们可以通过传入的课程slug(也就是原来的course-name参数),跨站点查询站点1里的course自定义文章类型,从而获取对应的ID。在你的course模板页面里添加以下代码:

// 获取URL中传递的课程slug
$course_slug = get_query_var('course-name');

if ($course_slug) {
    // 切换到course自定义文章类型所在的站点1(把1换成你的站点实际ID)
    switch_to_blog(1);

    // 根据slug查询对应的课程
    $course = get_page_by_path($course_slug, OBJECT, 'course');

    if ($course) {
        $course_id = $course->ID;
        // 这里就可以使用course_id和课程的其他数据了,比如:
        echo '当前课程ID:' . $course_id;
        echo '<h2>' . $course->post_title . '</h2>';
        echo '<div>' . apply_filters('the_content', $course->post_content) . '</div>';
    } else {
        echo '抱歉,未找到该课程';
    }

    // 切换回当前站点,避免后续操作出错
    restore_current_blog();
}

关键注意事项

  • 确保站点1中的course自定义文章类型设置了publicly_queryable => true,这样才能跨站点查询到它的内容。
  • 如果你的模板页面slug不是course,记得把重写规则里的pagename=course改成实际的页面slug。
  • 多站点环境下必须用switch_to_blog()和restore_current_blog()来切换站点上下文,否则当前站点无法访问其他站点的内容。

内容的提问来源于stack exchange,提问作者Rock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:24:15