【问题标题】:Wordpress Rewrite Rule for URL with tag带有标签的 URL 的 Wordpress 重写规则
【发布时间】:2016-03-31 19:41:17
【问题描述】:

在 WordPress 中,我有以下页面:

Formation: http://mysite.dev/formation/12345
Messages: http://mysite.dev/formation/12345/messages
Report: http://mysite.dev/formation/12345/report

12345 是一个动态值,表示编队的 id,实际上是一个查询字符串。我添加了这样的重写规则:

function formation_add_rewrite() {
    add_rewrite_tag( '%frm_id%', '([^&]+)' );
    add_rewrite_rule( 'formation/([^&]+)/?', 'index.php?pagename=formation&frm_id=$matches[1]', 'top' );
}
add_action( 'init', __NAMESPACE__ . '\\formation_add_rewrite' );

当我访问页面http://mysite.dev/formation/12345 时,这工作正常,我可以使用$wp_query->get( 'frm_id' ) 检索查询变量属性,但它不适用于 URL 中 id 后面的内容。

只是我的重写规则有问题,还是根本无法工作?

谢谢!

【问题讨论】:

    标签: php wordpress .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    你只需要学习一下 php regex。这可能会起作用(我还没有测试过)

      add_rewrite_rule( '^formation/([0-9]*)/([a-z]*)', 'index.php?pagename=formation&frm_id=$matches[1]&SOMETHING=$matches[2]', 'top' );
    

    注意我已经将第二个条件匹配到SOMETHING=$matches[2]

    基本上运营商在这里有所作为:

    • ^ 表示完全匹配

    • ([0-9]*) = 匹配条件,匹配任意长度的数字

    • ([a-z]*) = 匹配条件,匹配任意长度的单词

    【讨论】:

    • 非常感谢,如果没有您的帮助,我不会找到它。这是最终规则: add_rewrite_rule( '^formation/([0-9]*)/([a-z]*)', 'index.php?pagename=formation/$matches[2]&frm_id=$matches[1]' , '最佳' );其他页面是“编队”的子页面,所以这是我放置 $matches[2] 条件的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2020-11-25
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多