从CPT中删除了插件,现在如何/在哪里将筛选器挂钩到分类术语存档页面链接?

时间:2012-07-02 作者:sergio

我添加了下面的代码,并成功地更改了分类术语的CPT slug。我的博客permalinks是/article/%postname%,以防您怀疑,我希望保持这种方式,这样就不会与CPT发生冲突。

它工作得很好,我去掉了单个CPT的permalink(“列表”)中的CPT slug。

function listing_type_link_filter_function( $post_link, $id = 0, $leavename = FALSE ) {
    if ( strpos(\'%listing_type%\', $post_link) === \'FALSE\' ) {
      return $post_link;
    }
    $post = get_post($id);
    if ( !is_object($post) || $post->post_type != \'listing\' ) {
      return $post_link;
    }
    $terms = wp_get_object_terms($post->ID, \'listing_type\');
    if ( !$terms ) {
      return str_replace(\'/listing_type\', \'/\', $post_link);
    }
    return str_replace(\'%listing_type%\', $terms[0]->slug, $post_link);
  }

add_filter(\'post_type_link\', \'listing_type_link_filter_function\', 1, 3);
它工作正常,而不是:

mysite.com/listing_types/tours/tour-name (CPT "listing" post)

这些帖子显示为:

mysite.com/tours/tour-name
并且可以正确地找到以下任一项

mysite.com/listing_type/tours/tour-name
mysite.com/listings/tours/tour-name
mysite.com/listing_types/tours/tour-name
mysite.com/listing/tours/tour-name
现在,我需要将相同或类似的过滤器与术语归档链接过滤器挂钩,如果有,我找不到。

因此

mysite.com/cpt_slug/taxonomy_term (存档页)

我会得到

mysite.com/taxonomy_term (存档页)

…因为我的网站中最重要的是那些术语:listing\\u类型(旅游、景点、活动),但我不能让“listings”或“listing\\u类型”显示出来,即使它们是我的列表。

您知道什么钩子,以及我应该如何过滤它以替换术语归档页链接中的listing\\u类型slug吗?

或者更容易将常规permalinks设置页面设置为%term%/%postname%,并让CPT使用它,然后定制常规帖子因为大多数违约都会对CPT有利,而且这些职位没有条款。

谢谢

1 个回复
SO网友:sergio

这对我来说很好,除了上面的整个系统与我的配置(我让我的wp安装多站点)有一些问题,这破坏了所有其他帖子。虽然permalink每次都被正确检索到,但它们都没有找到。

我为另一个问题提出了一个新问题here 因此,您也可以安全地使用上述代码。

  function term_link_filter_function( $termlink, $term, $taxonomy ) {
    if ( strpos(\'listing_type\', $termlink) === \'FALSE\' ) {
      return $termlink;
    } else  return str_replace(\'/listing_type\', \'\', $termlink);
  }

add_filter(\'term_link\', \'term_link_filter_function\', 1, 3);

结束
从CPT中删除了插件,现在如何/在哪里将筛选器挂钩到分类术语存档页面链接? - 小码农CODE - 行之有效找到问题解决它

从CPT中删除了插件,现在如何/在哪里将筛选器挂钩到分类术语存档页面链接?

时间:2012-07-02 作者:sergio

我添加了下面的代码,并成功地更改了分类术语的CPT slug。我的博客permalinks是/article/%postname%,以防您怀疑,我希望保持这种方式,这样就不会与CPT发生冲突。

它工作得很好,我去掉了单个CPT的permalink(“列表”)中的CPT slug。

function listing_type_link_filter_function( $post_link, $id = 0, $leavename = FALSE ) {
    if ( strpos(\'%listing_type%\', $post_link) === \'FALSE\' ) {
      return $post_link;
    }
    $post = get_post($id);
    if ( !is_object($post) || $post->post_type != \'listing\' ) {
      return $post_link;
    }
    $terms = wp_get_object_terms($post->ID, \'listing_type\');
    if ( !$terms ) {
      return str_replace(\'/listing_type\', \'/\', $post_link);
    }
    return str_replace(\'%listing_type%\', $terms[0]->slug, $post_link);
  }

add_filter(\'post_type_link\', \'listing_type_link_filter_function\', 1, 3);
它工作正常,而不是:

mysite.com/listing_types/tours/tour-name (CPT "listing" post)

这些帖子显示为:

mysite.com/tours/tour-name
并且可以正确地找到以下任一项

mysite.com/listing_type/tours/tour-name
mysite.com/listings/tours/tour-name
mysite.com/listing_types/tours/tour-name
mysite.com/listing/tours/tour-name
现在,我需要将相同或类似的过滤器与术语归档链接过滤器挂钩,如果有,我找不到。

因此

mysite.com/cpt_slug/taxonomy_term (存档页)

我会得到

mysite.com/taxonomy_term (存档页)

…因为我的网站中最重要的是那些术语:listing\\u类型(旅游、景点、活动),但我不能让“listings”或“listing\\u类型”显示出来,即使它们是我的列表。

您知道什么钩子,以及我应该如何过滤它以替换术语归档页链接中的listing\\u类型slug吗?

或者更容易将常规permalinks设置页面设置为%term%/%postname%,并让CPT使用它,然后定制常规帖子因为大多数违约都会对CPT有利,而且这些职位没有条款。

谢谢

1 个回复
SO网友:sergio

这对我来说很好,除了上面的整个系统与我的配置(我让我的wp安装多站点)有一些问题,这破坏了所有其他帖子。虽然permalink每次都被正确检索到,但它们都没有找到。

我为另一个问题提出了一个新问题here 因此,您也可以安全地使用上述代码。

  function term_link_filter_function( $termlink, $term, $taxonomy ) {
    if ( strpos(\'listing_type\', $termlink) === \'FALSE\' ) {
      return $termlink;
    } else  return str_replace(\'/listing_type\', \'\', $termlink);
  }

add_filter(\'term_link\', \'term_link_filter_function\', 1, 3);

相关推荐

显示所有类别而不是分配给特定帖子的类别的GET_TERMS

我的自定义帖子类型中有3篇帖子(\'careers\'). 我注册了自定义分类法(\'career_categories\').我创建了3个职位,其中两个职位属于“全职”,一个职位属于“兼职”。我在循环中使用以下代码:$terms = get_terms( \'career_categories\', array( \'hide_empty\' => true, ) ); $html_out .= \'<td class=\"column-\'. $col++ .\'\"&g