如何更改自定义帖子类型及其分类的固定链接结构?

时间:2011-09-20 作者:Mark

这是我之前提出的一个问题的复述,但我现在想深入了解更多细节,以便能够完全解决这个问题

同样,对于(普通)帖子,更改永久链接就像进入“设置”>“永久链接”并将其更改为您喜欢的任何内容一样简单,例如广泛使用的%category%/%postname%.html. 这一切都有效。如果这对于自定义帖子类型及其分类法来说也一样简单就好了。

这就是我想要完成的。

  1. http://mywordpress.com/portfolio.html - 显示所有类别中的所有帖子
  2. http://mywordpress.com/portfolio/music/ - 显示此类别中的所有帖子
  3. http://mywordpress.com/portfolio/music/trance/ - 显示此(子)类别中的所有帖子
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - 显示帖子

    首先,我创建了custom_post_type 已命名project 和ataxonomy project_category.post_type = project 职位。如何添加。html到页面的永久链接?它现在链接到http://mywordpress.com/portfolio 当我想要的时候http://mywordpress.com/portfolio.html. 这应该解决第一个问题portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. 我仍然停留在这一点上。我想我应该以某种方式将最后一个类别添加到路径中,并沿着project_category, 这将导致分类。php文件,我可以在其中正确处理它%postname%.html 在某物的结尾

我希望我的问题很清楚,希望有勇敢的开发人员帮助我解决这个问题,这个问题已经让我忙了整整四天了!

3 个回复
SO网友:Mark

好吧,我想我可能有一个解决办法。我不知道这是否是实现这一目标的正确方法,但就目前而言,这似乎是唯一可行的方法。

add_filter(\'rewrite_rules_array\', \'mmp_rewrite_rules\');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules[\'portfolio/(.+)/(.+?).html$\'] = \'index.php?project=$matches[2]\';
    $newRules[\'portfolio/(.+)/?$\']          = \'index.php?project_category=$matches[1]\'; 

    return array_merge($newRules, $rules);
}


add_filter(\'request\', \'mmp_rewrite_request\');

function mmp_rewrite_request($vars) {
    if (isset($vars[\'project_category\'])) {
        if (strpos($vars[\'project_category\'], \'/\') !== false) {
            $categories = explode(\'/\', $vars[\'project_category\']);
            $vars[\'project_category\'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}

SO网友:T.Todua

两种不同的方法:

*请参阅本文底部的注释


例如,您希望具有这样的永久链接结构:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-post

At first, 您可能需要将永久链接设置为/%category%/%postname%. 然后




METHOD 1:

创建标准类别(MAIN_CATEGORY, SUB_CAT_1, and etc..) , 并注册自定义帖子,包括以下参数:

\'taxonomies\'    => array(\'category\'..)
并使用此代码更改永久链接:https://wordpress.stackexchange.com/a/195643/33667
然后,在发布自定义帖子(如果附加在类别下)后,URL将为:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



METHOD 2:

(p.s.此方法is not advised 如果您计划发布数百或数千篇帖子)

注册自定义帖子(名为MAIN_CATEGORY), 包括以下参数:

    "supports"      => array(\'page-attributes\'......
    "hierarchical"  => true,
然后,发布如下自定义帖子:
(即发布多个自定义posts, 已命名SUB_CAT_2, SUB_CAT_1... 之后,当您发布另一篇文章,但选择SUB_CAT_2 作为家长。

如果你是新手,复习一下:Register CUSTOM POSTRegistering CUSTOM POST with TAXONOMY
2)如果您需要子级别的搜索功能,请使用custom search query

SO网友:Mohd. Umar

在我头痛了几个小时后,我发现这个插件非常有用。

https://wordpress.org/plugins/custom-post-type-permalinks/

下面是它提供的选项的屏幕截图。

enter image description here

结束

相关推荐

Get taxonomy slug from url

抱歉,我是分类法新手&;努力快速学习。我已经设置了部门并为其分配了一个职位。如果我去邮局,我可以看到网址是www。mydomain。com/扇区/自动/如何从URL获取自动信息?谢谢