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

时间:2017-07-22 01:58:34

标签: php regex wordpress url-rewriting

我希望有人可以帮我修改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,带有重写的分类标本

所以目前网址是www.baseurl / taxonomy

然后我注册了相关args为

的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_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);

所以我的网址目前是www.baseurl / taxonomy / [parent-term] / ,分类标准是静态的

这为我提供了90%正确的网址

现在,我遇到了问题...

这种结构存在 www.baseurl / taxonomy / [parent-term] / [post_name] (例如post_name可能是一个关于该父术语的关于页面或某些页面。

此结构还存在 www.baseurl / taxonomy / [parent-term] / content ,它是所有子条款的自定义存档。其中一个将按父母一词存在。内容是一个静态的slu。。

我需要的是仅当[child_post_name]有[child-term]时才重写 www.baseurl / taxonomy / [parent-term] / content / [child_post_name] 。仅当[grandchild_post_name]具有[孙子术语]时,还重写 www.baseurl / taxonomy / [parent-term] / content / [child_post_name] / [grandchild_post_name]

所以重新说明......

如果帖子只有一个父词,则网址应该是 www.baseurl / taxonomy / [parent-term] / [post_name] ,我已经有效了。

但如果帖子有子词,那么它应该是 www.baseurl / taxonomy / [parent-term] / content / [child_post_name]

最后,如果帖子有孙子词,那么它应该是 www.baseurl / taxonomy / [parent-term] / content / [child_post_name] / [grandchild_post_name]

我真的不确定如何在child_post_name和grandchild_post_name之间建立这种关系。我有一个想法是让child_post_name成为另一个自定义帖子类型,并在其前面重写,以便它适合于那个结构...但这就是很多工作,甚至至少某种确认会使我感觉好多了。

即使是朝着正确方向的一点,我也会非常感激,因为我很难过。

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

我没有将彼此的条款作为彼此的条款,而是将帖子自己分层。这解决了我的网址问题,也使我的内容更加井井有条。

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