将子类别孙子包含在鼻涕虫中

时间:2019-10-23 作者:BobGCA

我有父亲、儿子、孙子的类别和子类别:

-father
--son
---grandson
创建帖子并仅在孙子类别中标记时,会生成正确的slug:www.example.com/father/son/grandson/post-title

如果我在儿子和孙子类别中标记帖子,生成的slug是www.example.com/father/son/post-title, 从url中排除孙子类别。

我希望这只鼻涕虫有个孙子。或者至少从/father/son/post-title/father/son/grandson/post-title

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

问题不在于WordPress,它确实生成了适当的永久链接,而只是分配给grandsonsonfather. 只是对于后者,“选定”类别可以是sonfather, 但不是两者都有——如果是son (具有父类别),则permalink将具有/father/son/ 而且不仅仅是/father/.

但是你想要的结构是可能的

编辑帖子时,通过手动干预可以更好地实现这一点,您需要为帖子选择一个主要类别。

在我的回答中,我很少建议使用3个rd派对插件,但这次,我想你应该知道plugin 这对你有帮助。Yoast SEO也有类似的功能,但不确定它如何/是否适用于永久链接。。

或者,如果您想以编程/手动方式(无需任何花哨的UI)进行操作,那么一种简单的方法是:

使用标准custom fields editor 并添加一个名为primary_category 使用slug类(例如。grandson 如您的示例所示)作为字段的值。

使用post_link_category 钩子过滤/设置WordPress在生成具有%category% 在结构中:(此代码将放在主题函数文件中)

add_filter( \'post_link_category\', function ( $cat, $cats, $post ) {
    if ( $post && ( $slug = get_post_meta( $post->ID, \'primary_category\', true ) ) ) {
        $term = get_category_by_slug( $slug );
        $cat = $term ? $term : $cat; // use $term if it\'s valid
    }
    return $cat;
}, 10, 3 );
注:该代码用于标准类别分类法。您必须根据自定义分类法对其进行相应的调整。:)