WordPress 自定义帖子类型使用页面而不是 archive.php 模板永久链接问题页面/存档名称冲突

问题描述 投票:0回答:0

我有一个名为项目的自定义帖子类型,有几个类别,我们将使用“教育”来描述问题。

  • 我想要一个“投资组合”的父页面和一个“教育”的子页面,然后是单个项目页面。
  • 我希望 url 看起来像“sitename.com/portfolio/education/project-name”。
  • 我创建了自定义帖子类型并将其称为“cpt_projects”,并重写了“portfolio”。
  • 我还创建了一个名为“投资组合”的页面。和一个名为“教育”的页面。

我正在用我遇到的自定义函数重写 slug,以在 slug 中显示子页面(教育、协作等):

    'rewrite' => array( 'slug' => 'portfolio/%custom_cat%', 'with_front' => true ), 
    'has_archive' => false, 
    function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'cpt_projects' ){
        $terms = wp_get_object_terms( $post->ID, 'custom_cat' );
        if( $terms ){
            return str_replace( '%custom_cat%' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
    }
    add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

这有效但有一个问题:

  • 如果我有一个名为 portfolio 的页面,那么我会遇到页面/存档名称冲突,并且通过将 portfolio 页面名称更改为“all-work”之类的名称,我得到:
    sitename.com/all-work
    sitename.com/all-work/education
    sitename.com/portfolio/single-project-name

我想要得到的:

    sitename.com/portfolio
    sitename.com/portfolio/education
    sitename.com/portfolio/single-project-name

问题 有没有办法实现我在这里想要实现的目标

wordpress custom-post-type permalinks
© www.soinside.com 2019 - 2024. All rights reserved.