Remove Custom Taxonomy Base

时间:2011-01-05 作者:Carson

我在WordPress 3.0.4中使用自定义分类法

我想知道是否有人知道如何从URL中删除分类库?

我见过一些插件,它们可以对类别和标记执行此操作,但不能对自定义分类法执行此操作。

例如,我有一个名为“城市”的自定义分类法。我希望我的URL结构是mydomain。com/newyork而不是mydomain。com/城市/纽约

是否有我可以使用的功能或东西?

3 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

我认为这是可能的,但您需要关注重写规则的顺序。为了帮助你,我推荐a plugin I wrote to analyze the rewrite rules (很快将在存储库中提供,但您可以download a pre-release).

首先,这些规则非常通用,因此应该放在规则列表的末尾。默认操作是将它们放在顶部,因此我们防止出现默认情况,并自己添加它们。我们已经在底部有了通用页面规则,因此我们应该使它们显式化,并通过启用详细页面规则将它们移到顶部。当你有很多页面时,这是没有效率的,但我认为现在没有其他方法可以做到这一点。

add_action( \'init\', \'wpse6342_init\' );
function wpse6342_init()
{
    // Register your taxonomy. `\'rewrite\' => false` is important here
    register_taxonomy( \'wpse6342\', \'post\', array(
        \'rewrite\' => false,
        \'label\' => \'WPSE 6342\',
    ) );

    // Enable verbose page rules, so all pages get explicit and not generic rules
    $GLOBALS[\'wp_rewrite\']->use_verbose_page_rules = true;
}

add_action( \'generate_rewrite_rules\', \'wpse6342_generate_rewrite_rules\' );
function wpse6342_generate_rewrite_rules( &$wp_rewrite )
{
    // This code is based on the rewrite code in `register_taxonomy()`

    // This rewrite tag (%wpse6342%) is just a placeholder to use in the next line
    // \'wpse6342=` should be the same as the `query_var` when registering the taxonomy
    //    which is the name of the taxonomy by default
    // `(.+?)` works for a hierarchical taxonomy
    $wp_rewrite->add_rewrite_tag( \'%wpse6342%\', \'(.+?)\', \'wpse6342=\' );
    // This will generate the actual rewrite rules, and put the at the end of the list
    $wp_rewrite->rules += $wp_rewrite->generate_rewrite_rules( $wp_rewrite->front . \'%wpse6342%\', EP_NONE );
}

SO网友:Noel Tock

在分类法注册中重写slug(->为空)将不起作用,因此我不确定WordPress中还有哪些其他选项。您可能需要修改.htaccess 直接满足您的需求。

然而,要注意的是,permalink设置;奥托在这里很好地描述了这个问题:http://ottopress.com/2010/category-in-permalinks-considered-harmful/ .

干杯

诺埃尔

SO网友:WordPressed

我尝试了插件作者提到的WP No Taxonomy Base插件,但它对我不起作用。起初我很乐观,这会起到作用,但后来我注意到所有网站permalinks都继续保留着基本段塞。只有在导航到其中一个链接目的地后,基本段塞才被删除,但它在所有站点永久链接中仍然存在,这有点违背了目的。

我听说有些人已经成功地使用WP htaccess Control 插件。其作者列出了以下特性:

自定义WordPress生成的htaccess文件

  • Removing any custom taxonomy\'s slug base 来自permalinks定制作者永久链接库
  • 维护模式;
  • wp-login.php重定向,这也会起作用。
    • 我个人在两次尝试时都遇到了让插件保存新设置的问题。它想在保存时连接到“https”而不是“http”,并且在无法连接时会抛出错误。不过,也许您会有更好的运气!

    结束

    相关推荐