如何使用2个分类法循环执行1个CPT

时间:2014-10-23 作者:MattM

我有一个CPT(产品),它有两个分类法(行业和部门)

我有一个回路,它提供了一个“按行业划分的产品”,它是有效的

行业1•结果1•结果2

行业2•结果1•结果2

(见下文)

<?php
$post_type = \'products\';
$tax = \'industry\';
$tax_terms = get_terms($tax);

if ($tax_terms) {
    foreach ($tax_terms  as $tax_term) {
        $args=array(
            \'post_type\' => $post_type,
            "$tax" => $tax_term->slug,
            \'post_status\' => \'publish\',
            \'posts_per_page\' => -1,
            \'caller_get_posts\'=> 1
        );

        $my_query = null;
        $my_query = new WP_Query($args);

        if( $my_query->have_posts() ) {
            echo \'<h3>\' . $tax_term->name .\'</h3>\';
            while ($my_query->have_posts()) : $my_query->the_post();
                ?>
                <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
                <?php
            endwhile;
        }
        wp_reset_query();
    }
}
。。。但我想让每个结果都以部门名称作为前缀

ie。

行业1•(部门)结果1•(部门)结果2

行业2•(部门)结果1•(部门)结果2

任何帮助都将不胜感激!

1 个回复
SO网友:John112

您可能想使用wp_get_post_terms().

  • If a product is always associated to only one category &恩达斯;如果分层,则没有子级&ndash;(我从您的示例中理解),在您的while 循环应该这样做(未测试)。

    <?
    $cat = wp_get_post_terms( get_the_ID(), \'department\' );
    echo \'<span>(\' . $cat->name . \')</span>\';
    ?>  
    
  • If however a product can have several categories, 这并不复杂。在上面$cat 必须是$cats &恩达斯;只需添加一个foreach循环即可。在这种情况下,您可能还需要指定wp_get_post_terms(), 默认情况下是数组$wp_gpt_args=array(\'order\' => \'ASC\', \'orderby\' => \'name\', \'fields\' => \'all\'). 您将在上的Codex文章中找到各种选项wp_get_object_terms, 这实际上是wp_get_post_terms() 并分享相同的论点。

    我已经用正确的分类名称修改了上面的代码段,并在第一点中添加了非层次条件。

    由于似乎不需要返回完整的对象,我在代码段中添加了一个参数,以便函数只返回术语的名称。从你的评论中,我可以想象$cat 现在将是一个包含父项和子项的字符串数组。

    only display the top parent terms, 你可以使用建议的技巧here 或其背后的想法,这将给出以下内容:

    <?
    $wp_gpt_args = array( \'fields\' => \'names\' ); 
    $deps = wp_get_post_terms( get_the_ID(), \'department\', $wp_gpt_args );
    $top_dep = $deps[0]; //i.e. the first line of $deps array
    echo \'<span>(\' . $top_dep . \')</span>\';
    ?>  
    

结束

相关推荐

获取Term_id-Taxonomy元数据插件

我一直在到处找,但找不到任何方法来实现这一目标。我正在使用Taxonomy Metadata plugin 我正在尝试显示创建的自定义元数据。为此,我使用:get_term_meta($term_id, \'my_metadata\', TRUE);. 问题是我找不到获取term\\u id的方法。我在循环中的模板页中。以下是我尝试过的:$term = get_term_by(\'name\', \'name\', \'custom_taxonomy\'); $termid = $term->