无法在post_type下显示所有类别的列表

时间:2014-05-21 13:21:55

标签: php wordpress custom-post-type categories

我一直在尝试在wordpress上创建一个页面,该页面显示所有类别的图像,标题和特定post_type所有类别的链接。

我已将以下代码添加到我的functions.php文件中:

function show_categories($excl=''){
   $categories = get_the_category($post->ID);
     if(!empty($categories)){
        $exclude=$excl;
        $exclude = explode(",");
        foreach ($categories as $cat) {
            if(!in_array($cat->cat_ID)) {
            echo '<div class="product-category">';
            // echo '<p>' . $cat->category_description . '</p>';
            echo '<a href="' . get_category_link( $cat->term_id ) . '" />';
            echo '<img src="';
            echo z_taxonomy_image_url($cat->term_id, 'products') . '" />';
            echo '</a>';
            echo '<h2><a href="' . get_category_link( $cat->term_id ) . '" class="cat-link"';
            echo '/>' . $cat->cat_name . '</a></h2>';
            echo '<a href="' . get_category_link( $cat->term_id ) . '" class="more-info" >Info</a>';
            echo '</div>';
            }
          }

      }
}

现在的问题是:它只显示最新帖子的类别。如果所有类别都包含最新帖子,则会显示所有类别,否则只会显示与最新帖子相关的类别。

我在文件archive-products.php上调用此函数,如下所示:

<?php show_categories(); ?> 

有什么想法吗?

这是页面:http://giannacamilotti.com/products/

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,下面的代码工作正常!

function show_categories($excl=''){
$args=array(
'post_type' => 'Products'
);
   $categories = get_categories($args);
     if(!empty($categories)){
        $exclude=$excl;
        $exclude = explode(",");
        foreach ($categories as $cat) {
            echo '<div class="product-category ' . $cat->cat_name . ' ">';
            echo '<a href="' . get_category_link( $cat->term_id ) . '" />';
            echo '<img src="';
            echo z_taxonomy_image_url($cat->term_id, 'products') . '" />';
            echo '</a>';
            echo '<h2><a href="' . get_category_link( $cat->term_id ) . '" class="cat-link"';
            echo '/>' . $cat->cat_name . '</a></h2>';
            echo '<a href="' . get_category_link( $cat->term_id ) . '" class="more-info" >Info</a>';
            echo '</div>';
            }

      }
}

如果有人有更好更清洁的解决方案,请告诉我。