当前位置: 首页 > 知识库问答 >
问题:

WordPress条件URL重写与多个自定义分类术语

程祯
2023-03-14

我希望有人能帮助我重写WordPress网址...我已经尝试了几个,但到目前为止还没有任何进展。给你一个我在哪里的概述...

我首先注册我的分类法

function curriculum_taxonomy() {
  register_taxonomy(
    'taxonomy_type',  
    'taxonomy',        
    array(
        'hierarchical' => true,
        'show_admin_column' => true,
        'label' => 'taxonomy type', 
        'query_var' => true,
        'rewrite' => array(
            'slug' => 'taxonomy', 
            'with_front' => true,
            'hierarchical' => true
        )
    )
  );
}
add_action( 'init', 'curriculum_taxonomy');

注册taxonomy_type重写了分类法

所以目前URLwww.baseurl/taxonomy

然后我注册相关参数的post_type

    $args = array(
    'capability_type' => 'post',
    'rewrite'         => array('slug' => 'taxonomy/%parent_term%','with_front' => false),
    'taxonomies'      => 'taxonomy_type',
    'query_var' => true,
    'can_export' => true,
    'publicly_queryable' => true,

  );

然后,我通过编程将%parent\u term%替换为术语slug

function filter_taxonomy_link($link, $post) {
    if ($post->post_type != 'taxonomy') {
        return $link;
    }
    if ($cats = get_the_terms($post->ID, 'taxonomy_type')) {
      $linkSlug = array_pop($cats)->slug;
      $link = str_replace('%parent_term%', $linkSlug, $link);
      return $link;
    }
}
add_filter('post_type_link', 'filter_curriculum_link', 10, 2);

所以我的URL目前www.baseurl/taxonomy/[父术语]/分类法是静态的

这给了我90%的正确URL

现在我遇到了问题。。。

此结构存在于www.baseurl/taxonomy/[parent term]/[post_name](例如,post_name可能是关于页面或与该父项相关的页面)。

此结构还存在www.baseurl/taxonomy/[parent term]/content,它是所有子术语的自定义存档。每个父项将存在其中一个。内容是一个静态段塞。

我需要的是仅当[child\u post\u name]有[child term]时才重写www.baseurl/taxonomy/[parent term]/content/[child\u post\u name]。此外,仅当[Grander_post_name]有[Grander_post_name]时,才重写www.baseurl/taxonomy/[parent term]/content/[child_post_name]/[Grander_post_name]。

所以换个说法。。。

如果一个帖子只有一个父术语,网址应该www.baseurl/taxonomy/[父术语]/[post_name]我已经有工作。

但是如果一个帖子有一个子术语,那么它应该www.baseurl/taxonomy/[父术语]/内容/[child_post_name]

最后,如果一篇文章有一个孙子术语,那么它应该是www.baseurl/taxonomy/[parent term]/content/[child\u post\u name]/[grant\u post\u name]

我真的不知道如何在孩子和孙子之间建立这种关系。我的一个想法是让孩子给另一个自定义的帖子类型命名,并对其进行重写,使其符合该结构……但这需要大量的工作,甚至至少某种形式的确认会让我感觉更好。

即使是在正确的方向上,我也会非常感激,因为我被这个问题难住了。

谢谢。

共有1个答案

桂德义
2023-03-14

我能够回答我自己的问题。我想如果其他人有类似的问题,我会回答这个问题。

我的问题实际上在于我的帖子类型的结构及其相应的分类法。我没有使用子孙后代术语,而是将它们分成它们自己的父术语,当我注册我的帖子类型时,我将它的功能类型更改为页面。

我没有把这些术语变成彼此的孩子,而是把帖子本身分等级。这解决了我的URL问题,也使我的内容更有条理。

如果有人需要一个示例,我很乐意发布一个代码示例

 类似资料:
  • 我试图显示自定义分类法中的术语和描述列表。 我有以下代码,它返回所有术语,并按字母顺序描述指定的自定义分类法。然而,我只想展示最近的五个术语,从最新的一个开始。

  • 我已经创建了一个包含多个分类法的自定义查询,在此基础上,我使用进行分页。分类法是通过下拉选择表单来选择的,使用可以过滤帖子,这只是一个临时解决方案,但目前效果良好,值得注意。 分页工作正常,当选择分类术语时,帖子可以正确显示,但是当我离开第一页,比如说我进入第2页,在下拉选择器中选择不同的分类术语时,URL会保留当前页码,并向其中添加选择器ID。我想实现的是,当我在选择器中单击不同的分类法时,新选

  • 我有一个自定义的文章类型(媒体文章),它使用一些自定义字段,有一个自定义分类法(媒体文章类别)和该分类法中的14个术语。我可以使用CPT归档模板输出所有自定义帖子。 我在侧边栏中还有一个菜单,它列出了用于过滤自定义帖子的术语(我使用了一个自定义WP菜单小部件来创建列表)。 我用一个查询设置了一个自定义分类模板。根据args中放置的分类术语,我能够成功地组合或单独显示帖子。因此,如果我不需要使用过滤

  • 我正在尝试创建一个查询,其中我在自定义帖子类型中创建了多个类别(分类法),然后在主页上根据具体的内容进行查询,这样做很好。目前我有3种分类法: 当前特价 meineke-差异 特色 我已经编写了拉动这些的代码。我遇到的问题是,在主页上,当这些帖子也附加到“特色”分类法时,它只需要拉这些帖子。因此,这方面的标准逻辑示例如下: 如果分类法=当前特价商品和特色商品,则成功或失败 但是它所做的是把它们都拉

  • 我已经搜索了又搜索,除了我称之为“hack方法”的方法之外,找不到其他方法将自定义分类添加到自定义管理菜单中。 然后我注册我的帖子类型并确保它们使用 这可以工作,自定义帖子类型显示在我的自定义菜单中。 但是自定义分类法不接受同一属性的字符串,只接受true或false。 因此,要添加它,您必须创建一个子菜单页 这是一种“黑客”方式。 还有别的办法吗?如果不修改WordPress核心,我可以覆盖re

  • 我有一个自定义的帖子类型设置,有许多类别和子类别。 我试图做的是创建一个页面,显示特定类别中的所有帖子,并使用一个菜单列出所有类别子类别,以便可以过滤帖子。 我已尝试复制存档模板并将其重命名为分类法-(我的自定义分类法)。php,如果我转到slug,它会显示某些帖子,并使用