您最好使用WordPress重写API。不需要htaccess。
首先,钩入init
并将重写端点添加到永久链接。这告诉WordPress,当一些访问/category/post-slug/gallery
匹配新端点重写。它还负责为您添加查询变量,这样您就不必这样做了。
<?php
add_action( \'init\', \'wpse27638_add_rewrite\' );
function wpse27638_add_rewrite()
{
add_rewrite_endpoint( \'gallery\', EP_PERMALINK );
}
接下来,我们必须对端点系统进行一些黑客攻击,因为当有人访问时,它不会自动工作
some-permalink/some-endpoint
: 您的新查询变量(
gallery
) 仅在有人访问时才包含值
category/permalink/gallery/something
. 不太好。所以我们
request
. 如果我们的新
gallery
设置查询变量后,我们将使其始终设置为true。
<?php
add_filter( \'request\', \'wpse27638_request\' );
function wpse27638_request( $vars )
{
if( isset( $vars[\'gallery\'] ) ) $vars[\'gallery\'] = true;
return $vars;
}
接下来,我们需要
the_content
. 如果设置了新的查询变量,我们将返回一个库短代码来代替内容。否则,我们将只返回内容。您可以删除
if else
来自的声明
single.php
然后放进去
the_content
取而代之。
<?php
add_filter( \'the_content\', \'wpse27638_content_filter\' );
function wpse27638_content_filter( $content )
{
if( ! is_singular() ) return $content;
if( get_query_var( \'gallery\' ) )
{
return \'[gallery link="file"]\';
}
else
{
return $content;
}
}
我们的插件只做了最后一步。添加新端点并刷新激活时的重写规则。并在停用时再次刷新重写规则。
<?php
register_activation_hook( __FILE__, \'wpse27638_activation\' );
function wpse27638_activation()
{
wpse27638_add_rewrite();
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, \'wpse27638_deactivation\' );
function wpse27638_deactivation()
{
flush_rewrite_rules();
}
以下是作为插件的唯一内容(随时可用):
https://gist.github.com/1191865