Wordpress 分类术语模板循环

Posted

技术标签:

【中文标题】Wordpress 分类术语模板循环【英文标题】:Wordpress Taxonomy Term template loop 【发布时间】:2015-12-08 12:43:41 【问题描述】:

我在我的网站上设置了 6 个自定义分类,按以下方式注册(示例中的分类名为“主题”):

/* Topic */
add_action( 'init', 'register_taxonomy_topic' );
function register_taxonomy_topic() 

$labels = array( 
    'name' => _x( 'Topics', 'topic' ),
    'singular_name' => _x( 'Topic', 'topic' ),
    'search_items' => _x( 'Search Topics', 'topic' ),
    'popular_items' => _x( 'Popular Topics', 'topic' ),
    'all_items' => _x( 'All Topics', 'topic' ),
    'parent_item' => _x( 'Parent Topic', 'topic' ),
    'parent_item_colon' => _x( 'Parent Topic:', 'topic' ),
    'edit_item' => _x( 'Edit Topic', 'topic' ),
    'update_item' => _x( 'Update Topic', 'topic' ),
    'add_new_item' => _x( 'Add New Topic', 'topic' ),
    'new_item_name' => _x( 'New Topic Name', 'topic' ),
    'separate_items_with_commas' => _x( 'Separate topics with commas', 'topic' ),
    'add_or_remove_items' => _x( 'Add or remove topics', 'topic' ),
    'choose_from_most_used' => _x( 'Choose from the most used topics', 'topic' ),
    'menu_name' => _x( 'Topics', 'topic' ),
);

$args = array( 
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_in_nav_menus' => true,
    'show_ui' => true,
    'show_tagcloud' => true,
    'hierarchical' => true,

    'rewrite' => true,
    'query_var' => true
);

register_taxonomy( 'topic', array('post'), $args );

在这 6 种分类法中,有 2 到 25 个不同的术语。

我正在尝试创建一个动态存档页面,当用户单击该术语的存档页面时,该页面将列出与特定术语相关的正确帖子。该页面需要是动态的,即使用一个模板根据所选术语列出相关帖子,而不是为每个术语创建一个模板文件(这将导致超过 100 个模板!)

以下是我的分类结构的示例:

帖子类型:帖子,分类:主题,术语:一、二、三

我目前正在使用的循环如下,它似乎输出了一个文章列表,但我无法破译这些帖子的来源,其中许多是重复的!我的循环还指定了“主题”,因为我需要它来动态生成内容,而不管正在查看 6 个分类法和 X 个术语中的哪一个。

<?php //start by fetching the terms for the animal_cat taxonomy
$terms = get_terms( 'topic', array(
    'orderby'    => 'count',
    'hide_empty' => 0
) );
?>

<?php
// now run a query for each animal family
foreach( $terms as $term ) 

    // Define the query
    $args = array(
        'post_type' => 'post',
        'topic' => $term->slug
    );
    $query = new WP_Query( $args );

    // output the post titles in a list
    echo '<ul>';

        // Start the Loop
        while ( $query->have_posts() ) : $query->the_post(); ?>

        <li id="post-<?php the_ID(); ?>">
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>

        <?php endwhile;

    echo '</ul>';

    // use reset postdata to restore orginal query
    wp_reset_postdata();

 ?>

非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

您可以使用category.php 来通用显示您的条款。

if ( have_posts() )

    while ( have_posts() )
    
        the_post();

        the_title();
        the_content();
    

您可以查看template hierarchy

【讨论】:

嗨@nozifel,但是循环呢?帖子如何被查询? 使用经典循环(我编辑了我的代码)。模板查询与当前分类术语匹配的帖子

以上是关于Wordpress 分类术语模板循环的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress分类术语还有内容的仪表板页面?

WordPress 根据分类术语显示相关帖子

分类层次结构不起作用 [Wordpress]

php 术语元 - 分类WordPress

PHP Wordpress:逗号分隔的分类术语列表

Wordpress 获取不在自定义分类术语中的帖子