列出自定义帖子类型存档链接,只有它有帖子

时间:2017-09-11 14:03:38

标签: wordpress custom-post-type

这个问题很麻烦。我的每个自定义帖子类型都有一个archive_page,它将显示其下的帖子。我需要显示每个存档页面的链接列表,只有在它下面有帖子。

我可以列出我的所有自定义帖子类型没有问题但是当我尝试检查它是否为空时会中断。我不确定这是否是最好的方法,但一段时间以来一直在努力。谢谢你的帮助。

列出CPT模板

<?php 
    if( have_posts()) :  the_post(); 
        get_template_part('content','weather_alerts');
    endif; ?>   

天气警报

$post_types = get_post_types( array ( '_builtin' => FALSE), 'objects');
    foreach ( $post_types as $post_type => $properties ) {
        if ( $properties->has_archive) {
            /* Doesn't work, nothing shows up(!empty($properties)){ code here }*/
            printf( '<a href="%1$s">%2$s</a><br>',
                    get_post_type_archive_link( $post_type ),
                    $properties->labels->name
                );
        }
     }

1 个答案:

答案 0 :(得分:1)

您要找的是 wp_count_posts Codex Reference

您可以传递帖子类型,它会返回一个对象,其中包含每个潜在状态的帖子数,例如

[publish] => 10
[trash] => 0
[draft] => 1
etc...

要获取帖子类型my-books-cpt的已发布帖子数量,您可以使用:

$count = wp_count_posts("my-cpt");
$published_count = $count->publish;


检查帖子类型的发布计数

要获取 天气警报 php中发布的帖子数:

$post_types = get_post_types( array ( '_builtin' => FALSE), 'objects');
foreach ( $post_types as $post_type => $properties ) {
    if ( $properties->has_archive) {

        // get the count object for this post type
        $count_posts = wp_count_posts( $properties->name);

        // Check if there are any published posts:
        if( isset($count_posts->publish) && ($count_posts->publish > 0)){

            printf( '<a href="%1$s">%2$s</a><br>',
                get_post_type_archive_link( $post_type ),
                $properties->labels->name
            );
        }
    }
 }


在链接中显示帖子计数:

如果您还想显示链接中的帖子数量,请将printf更新为以下内容:

printf( '<a href="%1$s">%2$s (%3$d) </a><br>',
    get_post_type_archive_link( $post_type ),
    $properties->labels->name,
    $count_posts->publish // number of published posts
);

这将显示这样的链接(与书籍主题保持一致):

  

传记(4)

     

犯罪(16)

     

惊悚片(10)