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

WordPress自定义URL重写规则配置求助:实现日历URL结构

嘿,你已经走对路子啦!咱们把这个自定义日历URL结构的方案补全,确保它能完美跑起来:

实现自定义日历URL的完整步骤

1. 优化并重写规则

你写的基础规则没问题,但可以让正则更精准(只匹配4位年份和2位月份,避免错误匹配),同时补全钩子参数:

function custom_rewrite_rule() {
    // 用\d{4}匹配4位年份,\d{2}匹配2位月份,更严谨
    add_rewrite_rule(
        '^calendar\/(\d{4})\/(\d{2})\/?$',
        'index.php?page_id=305&calyear=$matches[1]&calmonth=$matches[2]',
        'top'
    );
}
// 把规则挂载到init钩子,优先级10是默认值
add_action('init', 'custom_rewrite_rule', 10);

2. 注册自定义查询变量

WordPress默认会过滤掉calyear和calmonth这类自定义参数,得告诉它允许这两个变量通过:

function custom_query_vars($vars) {
    $vars[] = 'calyear';
    $vars[] = 'calmonth';
    return $vars;
}
add_filter('query_vars', 'custom_query_vars');

这一步绝对不能少,不然页面根本拿不到年月参数。

3. 刷新重写规则缓存

写完代码后,一定要去WordPress后台的「设置」→「固定链接」页面,随便选一个固定链接结构(比如「文章名」),然后点击「保存更改」。这一步是让WordPress刷新重写规则缓存,新添加的规则才会生效。

4. 在页面模板中获取并使用参数

现在你可以在ID为305的页面模板里,轻松获取年月参数了:

// 获取自定义查询变量
$cal_year = get_query_var('calyear');
$cal_month = get_query_var('calmonth');

// 可以加个简单验证,确保参数有效
if ($cal_year && $cal_month) {
    // 在这里处理日历逻辑,比如渲染2019年4月的日历内容
}

额外小提示

  • 如果遇到404错误,先检查固定链接是否保存过,再核对正则表达式有没有写错;
  • 不要把flush_rewrite_rules()放在init钩子里(会每次加载页面都刷新规则,拖慢性能),如果需要手动刷新,可以临时在函数里加一次,刷新后删掉就行;
  • 确保page_id=305的页面已经正确关联了你要用来展示日历的模板。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:33