使用ADD_REWRITE_RULE时丢失原始URL

时间:2013-11-16 作者:wittyhandle

我正在尝试实现一个重写规则,以便在CPT的单页模板中引入一个变量。基本上,我试图在我的CPT的slug名称之间包含“all”work 以及URL中的类别:

http://localhost/work/all/corporate/cognitive-puzzles/
当然,原始URL也应该起作用:

http://localhost/work/corporate/cognitive-puzzles/
以下是我重写的内容:

function wire_alternate_pdp_url() {
    global $wp;
    $wp->add_query_var(\'mode\');
    add_rewrite_rule(\'work/all/([^/]*)/([^/]*)/?\', \'index.php?pagename=$matches[2]&mode=all\', \'top\');
}
这几乎可以解决两个问题。首先,我的浏览器中的URL切换回缺少all/ 路径第二,也是更重要的一点,我什么也得不到mode 在我的单个项目中。php:

<?php 
    $mode = get_query_var(\'mode\');
    echo $mode;
?>
这不会打印出任何内容。

你知道我在这里可能遗漏了什么吗?我觉得我很接近,但有些地方不太对劲。

提前感谢!

编辑:忘了提一下,我正在运行3.6.1

1 个回复
SO网友:wittyhandle

哇,在我的头再次撞到墙上之后,我想到了这个:

add_rewrite_rule(\'work/all/([^/]*)/([^/]*)/?\', \'index.php?post_type=project&name=$matches[2]&mode=all\', \'top\');
有两件事我必须包括post_type=project 零件和变更pagenamename. 如果我删除其中一个,我会得到以前的结果。

我不知道为什么这组值在其他示例没有这个值的情况下有效,但很高兴它有效:)

结束

相关推荐

old permalinks not found

通过Google网站管理员工具查看,我有很多404个永久链接结构为/%年%/%月%/%日%/%postname%的帖子/此后,我将永久链接更改为/%类别%/%postname%。html我原以为Wordpress可以将旧的帖子URL重定向到新的帖子URL,但旧的基于日期的URL正在生成404。我的htaccess文件可写,设置为644。为什么会发生这种情况?谢谢