首先,不要这样做:
add_action(\'init\', \'flush_rewrite_rules\');
每次加载WordPress时,都会刷新重写规则。您只需执行一次即可确保您的重写显示出来。
第二add_rewrite_tag
只接受两个参数,标记和正则表达式。如果要直接指定查询变量,需要执行以下操作:
<?php
global $wp_query;
$wp_query->add_rewrite_tag(\'%gallery%\',\'([^/]+)\', \'gallery=\');
$wp_query->add_rewrite_tag(\'%album%\',\'([^/]+)\', \'album=\');
在您的情况下,这并不重要:您使用的是与标记相同的查询变量。
最后,您的正则表达式中有一些错误。你需要从胡萝卜开始,我不会用(.*)
第二部分。您还需要指定的第三个参数add_rewrite_rule
这告诉WP将重写放在突出位置的位置。你想要的top
告诉WordPress这个规则应该在内置规则之前。
这项工作:
<?php
add_action( \'init\', \'wpse41778_add_rewrite\' );
function wpse41778_add_rewrite()
{
add_rewrite_tag(\'%gallery%\',\'([^/]+)\');
add_rewrite_tag(\'%album%\',\'([^/]+)\');
add_rewrite_rule(
\'^galleries/([^/]+)/?$\',
\'index.php?pagename=galleries&album=1&gallery=$matches[1]\',
\'top\'
);
}
前提是刷新重写规则。如果将规则放入插件中,则可以使用
register_activation_hook
冲洗它们。
<?php
register_activation_hook( __FILE__, \'wpse41778_flush_rewrite\' );
function wpse41778_flush_rewrite()
{
wpse41778_add_rewrite();
flush_rewrite_rules();
}
获取
gallery
或
album
查询变量您可以执行以下操作:
$gallery = get_query_var( \'gallery\' );
$album = get_query_var( \'album\' );
根据您的重写,您的用法可能是这样的:
<?php
if( get_query_var( \'album\' ) )
{
$gallery = get_query_var( \'gallery\' );
// do stuff with $gallery
}
下面是重写部分
a plugin.