【问题标题】:WordPress - Cannot get add_rewrite_rule() to workWordPress - 无法让 add_rewrite_rule() 工作
【发布时间】:2016-04-14 15:40:27
【问题描述】:

我正在尝试在我的 WordPress 网站的页面上设置重写规则。

我有一个名为 latest 的页面,有一个自定义模板,它的 ID 为 10

目前,我正在根据查询字符串发出几个动态请求,如下所示:

example.com/latest/?type=instagram

我想要的是:

example.com/latest/instagram/

这是我迄今为止尝试过的。

functions.php

function custom_rewrite_tag() {
    add_rewrite_tag('%type%', '([^&]+)');
}

add_action('init', 'custom_rewrite_tag', 10, 0);

function custom_rewrite_rule() {
    add_rewrite_rule('^latest/([^/]*)/([^/]*)/?','index.php?page_id=10&type=$matches[1]', 'top');
}

add_action('init', 'custom_rewrite_rule', 10, 0);

我按照此处找到的指南进行操作: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

为了我的一生,我无法让它发挥作用。它只是转发到我的 404 页面或尝试查找标题某种与类型参数匹配的帖子并重定向我。

关于我做错了什么的任何线索?我也刷新了永久链接。

【问题讨论】:

  • 对于你想要做的事情,你实际上想要add_rewrite_endpoint
  • @cale_b 谢谢 - 有没有使用这个的例子?

标签: php wordpress url-rewriting


【解决方案1】:

原来,我在重写规则中多了一条路径。

应该是:'^latest/([^/]*)/?' 而不是:'^latest/([^/]*)/([^/]*)/?'

我在functions.php的新工作功能如下:

function custom_rewrite_rule() {
    add_rewrite_tag('%type%', '([^&]+)');
    add_rewrite_rule('^latest/([^/]*)/?', 'index.php?page_id=10&type=$matches[1]', 'top' );
}

add_action('init', 'custom_rewrite_rule', 10, 1);

希望这对将来的人有所帮助!

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多