重写被完全忽略

时间:2015-11-11 作者:Jeroen

我创建了一个小函数来重写get变量。首先,我创建了“下载”页面,并希望将get变量用于file属性。这是一个工作URL:http://example.com/download/?file=file

但当我使用add\\u rewrite\\u规则使url如下所示时:http://example.com/download/file,它不起作用。

功能:

function createRewriteRules() {
    add_rewrite_rule(\'download/([^/]*)\', \'index.php/download/?file=$matches[1]\', \'top\');
}
add_action(\'init\', \'createRewriteRules\');
我还尝试了以下方法:

function createRewriteRules() {
    add_rewrite_rule(\'download/([^/]*)\', \'download/?file=$matches[1]\', \'top\');
}
add_action(\'init\', \'createRewriteRules\');
在这两种情况下,$wp\\u query将“file”作为pagename而不是“download”返回。

更新日期:

function createRewriteRules() {
    add_rewrite_tag(\'%file%\', \'([^&]+)\');
    add_rewrite_rule(\'download/([^/]+)/?$\', \'index.php/?pagename=download&file=$matches[1]\', \'top\');
}
当索引时,再刷新不会在18次方起作用。php/?pagename=下载(&N);file=文件有效。重写规则也被添加到。htaccess文件。

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

您的重新提交规则不正确。应该是(假设download 是页面的名称或slug):

add_rewrite_rule(\'^download/([^/]+)/?$\', \'index.php?pagename=download&file=$matches[1]\', \'top\');
此外,您需要声明file 查询变量A示例和工作代码:

function createRewriteRules() {
    add_rewrite_tag(\'%file%\', \'([^&]+)\');
    add_rewrite_rule(\'^download/([^/]+)/?$\', \'index.php?pagename=download&file=$matches[1]\', \'top\');
}
add_action(\'init\', \'createRewriteRules\');
注意:添加新的重写规则后,不要忘记刷新重写规则。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post