如何获取帖子类型信息?

时间:2015-09-28 作者:bo-oz

因此,我正在进行一些主题和插件集成,并偶然发现了我的面包屑中的一些问题。基本上,我的主题有一个功能,可以检查某些帖子类型,然后相应地填充面包屑。

我的一些插件对于主题来说是未知的,所以现在我正在手动将这些帖子类型添加到breadcrumb方法中。问题是,当查看某个页面时,我有时不知道使用哪个条件是\\u singular()、是\\u post\\u type\\u archive(),以及某个插件的post类型的实际名称。

我想知道Wordpress中是否有某种(调试)函数可以告诉我请求的元数据。

1 个回复
SO网友:Pieter Goosen

我有时不知道使用哪个条件是\\u singular()、是\\u post\\u type\\u archive(),以及某个插件的post类型的实际名称

is_singular() 将在任何单个帖子页面上返回true

此条件标记检查是否显示单数post,当以下其中一项返回true时即为这种情况:is_single(), is_page()is_attachment(). 如果$post_types 参数时,该函数将另外检查查询是否针对指定的帖子类型之一is_post_type_archive() 当查看自定义帖子类型的srchive页面时,将返回true

-检查查询是否针对给定帖子类型的存档页。

至于代码,您始终可以使用$post global,然后使用它检查给定帖子的帖子类型。在存档页上,$post 应始终包含查询中最后一篇帖子的帖子对象。

类似以下的操作将起作用:

global $post;
// Get all the custom post types
$args = [
   \'public\'   => true,
   \'_builtin\' => false
];
$post_types = get_post_types( $args ); 

$single_post_type = $post->post_type;

// For single post pages
if ( is_single() ) { // Or you can use is_singular()
    // Only display post type name if post type is not build in type
    if ( in_array( $single_post_type, $post_types ) ) {
        echo $single_post_type;
    }
}

// For single post type archives
if ( is_post_type_archive ) { 
    echo $single_post_type;
}

相关推荐