如何为自定义帖子类型中的分类术语创建存档页面

时间:2014-12-12 作者:anselscamera

我需要创建一个存档页面自定义分类术语,这些术语位于自定义帖子类型中。它设置为CPT>自定义分类法>分类法术语。

我有一个称为“项目”的自定义帖子类型,在创建帖子时,用户需要为列表选择一种项目类型(即构建、维护等)。但是,我需要为各个术语创建归档页面。我已经通过反复试验寻找和研究了几个小时,只是不断地把头撞到墙上。

3 个回复
SO网友:edwardr

有一个example in the WP Codex 这应该适合您:

请为分类术语存档模板尝试以下命名约定:

taxonomy-{taxonomy}-{term}.php
因此,假设您有一个名为“项目”的CPT,一个名为“维护”的分类法,以及分类法中名为“专业”的术语那么您的命名约定是:

taxonomy-maintenance-professional.php

SO网友:tfrommen

首先,WordPress不提供任何内置解决方案来显示特定帖子类型和特定分类术语的帖子。我说的是get_term_archive_link_for_post_type( $term, $post_type ) ...左右

所以你必须自己做。

当然,您可以创建一个页面,将其命名为Construction Projects,为其提供一个新的页面模板,在该模板中设置自定义查询并精确显示所需内容。但这甚至没有必要。

WordPress可以处理多个查询变量—其中之一是您的分类法创建的。

假设您有一个带有slug的自定义Post类型projects.
然后您有一个自定义的分类法,其中包含slugproject_type.<你有一个关于鼻涕虫的术语construction 在这个分类学中。

然后访问?post_type=projects&project_type=construction 将显示(至少)将构造设置为项目类型的所有项目的存档。

WordPress会将此查询解释为术语存档,然后根据您的永久链接设置重写URL,并将帖子类型作为查询变量附加到URL。在通常的情况下,这将导致/project_type/construction?post_type=projects.

注意:您可以显式更改自定义分类法的查询变量。在这种情况下,使用taxonmy slug作为查询变量(例如。,project_type=construction) 不会再工作了。您必须使用使用显式定义的查询变量register_taxonomy 那么

下面是为特定分类法的所有术语设置链接列表的一些示例:

$args = array(
    \'orderby\'    => \'name\', 
    \'order\'      => \'ASC\',
    \'hide_empty\' => TRUE, 
    \'fields\'     => \'all\', 
); 
$terms = get_terms( \'project_type\', $args);

if (
    ! is_wp_error( $terms )
    && ! empty( $terms )
) {
    echo \'<ul>\';

    foreach ( $terms as $term ) {
        $url = get_term_link( $term );
        if ( is_wp_error( $url ) ) {
            continue;
        }

        $url = add_query_arg( \'post_type\', \'projects\', $url );
        printf(
            \'<li><a href="%s">%s</a></li>\',
            $url,
            $term->name
        );
    }

    echo \'</ul>\';
}

SO网友:Thomas Fellinger

我想为tfrommen的(正确的)答案举一个不同的例子,因为这个主题在网络上没有太多可以找到的。

  $post_type = get_post_type();

  if ( is_post_type_archive() ) {
    $taxonomies = get_object_taxonomies($post_type);
    $related_terms = get_terms(array(
      \'taxonomy\' => $taxonomies
    ));
  }
。。。

  if ( !empty($related_terms) && !is_wp_error($related_terms) ) {
    foreach ( $related_terms as $related_term ) {
      $term_url = get_term_link($related_term);

      if ( is_post_type_archive() ) {
        $term_url = add_query_arg( \'post_type\', $post_type, $term_url );
      }
?>
  <a href="<?php echo esc_url($term_url); ?>"><?php echo $related_term->name; ?></a>
<?php    }
  }

结束

相关推荐

显示Archives.php中的所有自定义帖子类型

我该怎么做?archive.php 只有以下内容:wp_get_archives(\'type=monthly\'); 以及wp_get_archives() 没有显示所有帖子类型的参数。我也认为archive-[post_type].php 不是我要找的,因为我希望所有帖子类型都显示在一个归档页面中。谢谢W

如何为自定义帖子类型中的分类术语创建存档页面 - 小码农CODE - 行之有效找到问题解决它

如何为自定义帖子类型中的分类术语创建存档页面

时间:2014-12-12 作者:anselscamera

我需要创建一个存档页面自定义分类术语,这些术语位于自定义帖子类型中。它设置为CPT>自定义分类法>分类法术语。

我有一个称为“项目”的自定义帖子类型,在创建帖子时,用户需要为列表选择一种项目类型(即构建、维护等)。但是,我需要为各个术语创建归档页面。我已经通过反复试验寻找和研究了几个小时,只是不断地把头撞到墙上。

3 个回复
SO网友:edwardr

有一个example in the WP Codex 这应该适合您:

请为分类术语存档模板尝试以下命名约定:

taxonomy-{taxonomy}-{term}.php
因此,假设您有一个名为“项目”的CPT,一个名为“维护”的分类法,以及分类法中名为“专业”的术语那么您的命名约定是:

taxonomy-maintenance-professional.php

SO网友:tfrommen

首先,WordPress不提供任何内置解决方案来显示特定帖子类型和特定分类术语的帖子。我说的是get_term_archive_link_for_post_type( $term, $post_type ) ...左右

所以你必须自己做。

当然,您可以创建一个页面,将其命名为Construction Projects,为其提供一个新的页面模板,在该模板中设置自定义查询并精确显示所需内容。但这甚至没有必要。

WordPress可以处理多个查询变量&mdash;其中之一是您的分类法创建的。

假设您有一个带有slug的自定义Post类型projects.
然后您有一个自定义的分类法,其中包含slugproject_type.<你有一个关于鼻涕虫的术语construction 在这个分类学中。

然后访问?post_type=projects&project_type=construction 将显示(至少)将构造设置为项目类型的所有项目的存档。

WordPress会将此查询解释为术语存档,然后根据您的永久链接设置重写URL,并将帖子类型作为查询变量附加到URL。在通常的情况下,这将导致/project_type/construction?post_type=projects.

注意:您可以显式更改自定义分类法的查询变量。在这种情况下,使用taxonmy slug作为查询变量(例如。,project_type=construction) 不会再工作了。您必须使用使用显式定义的查询变量register_taxonomy 那么

下面是为特定分类法的所有术语设置链接列表的一些示例:

$args = array(
    \'orderby\'    => \'name\', 
    \'order\'      => \'ASC\',
    \'hide_empty\' => TRUE, 
    \'fields\'     => \'all\', 
); 
$terms = get_terms( \'project_type\', $args);

if (
    ! is_wp_error( $terms )
    && ! empty( $terms )
) {
    echo \'<ul>\';

    foreach ( $terms as $term ) {
        $url = get_term_link( $term );
        if ( is_wp_error( $url ) ) {
            continue;
        }

        $url = add_query_arg( \'post_type\', \'projects\', $url );
        printf(
            \'<li><a href="%s">%s</a></li>\',
            $url,
            $term->name
        );
    }

    echo \'</ul>\';
}

SO网友:Thomas Fellinger

我想为tfrommen的(正确的)答案举一个不同的例子,因为这个主题在网络上没有太多可以找到的。

  $post_type = get_post_type();

  if ( is_post_type_archive() ) {
    $taxonomies = get_object_taxonomies($post_type);
    $related_terms = get_terms(array(
      \'taxonomy\' => $taxonomies
    ));
  }
。。。

  if ( !empty($related_terms) && !is_wp_error($related_terms) ) {
    foreach ( $related_terms as $related_term ) {
      $term_url = get_term_link($related_term);

      if ( is_post_type_archive() ) {
        $term_url = add_query_arg( \'post_type\', $post_type, $term_url );
      }
?>
  <a href="<?php echo esc_url($term_url); ?>"><?php echo $related_term->name; ?></a>
<?php    }
  }

相关推荐

Display an archives name

我想显示当前存档文件的名称,因此对于下面的url,我可以这样做<h1><?php echo \"answer\" ?></h1> 输出如下内容<h1>News</h1> 或者更好<h1>News: supplierName</h1> http://www.site.com/suppliers/news/?supplierstax=supplierName