检查是自定义帖子类型

时间:2016-01-07 03:06:29

标签: wordpress

我有自定义帖子类型:

// Custom posttype Events
$labels = array(
    'name' => _x('Events', 'Post Type General Name'),
    'singular_name' => _x('Events', 'Post Type Singular Name'),
    'menu_name' => __('Events'),
    'parent_item_colon' => __('Events:'),
    'all_items' => __('All Items'),
    'view_item' => __('View Item'),
    'add_new_item' => __('Add New Event'),
    'add_new' => __('Add New'),
    'edit_item' => __('Edit Item'),
    'update_item' => __('Update Item'),
    'search_items' => __('Search Item'),
    'not_found' => __('Not found'),
    'not_found_in_trash' => __('Not found in Trash'),
);
$args = array(
    'labels' => $labels,
    'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'comments', 'trackbacks', 'custom-fields',),
    'taxonomies' => array('post_tag'),
    'hierarchical' => false,
    'rewrite' => array('slug' => __('events')),
    'public' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'show_in_nav_menus' => true,
    'show_in_admin_bar' => true,
    'menu_position' => 10,
    'menu_icon' => 'dashicons-images-alt2',
    'can_export' => true,
    'has_archive' => false,
    'exclude_from_search' => false,
    'publicly_queryable' => true,
    'capability_type' => 'post',
);
register_post_type('events', $args);

自定义帖子类型事件的分类:

// Add new "Type" taxonomy to Events
    register_taxonomy('type-events', 'event', array(
        'hierarchical' => true,
        'labels' => array(
            'name' => _x( 'Types', 'taxonomy general name', 'my_theme' ),
            'singular_name' => _x( 'Types', 'taxonomy singular name', 'my_theme' ),
            'search_items' =>  __( 'Search Type', 'my_theme' ),
            'all_items' => __( 'All Types', 'my_theme' ),
            'parent_item' => __( 'Parent Type', 'my_theme' ),
            'parent_item_colon' => __( 'Parent Type:', 'my_theme' ),
            'edit_item' => __( 'Edit Type', 'my_theme' ),
            'update_item' => __( 'Update Type', 'my_theme' ),
            'add_new_item' => __( 'Add New Type', 'my_theme' ),
            'new_item_name' => __( 'New Type', 'my_theme' ),
            'menu_name' => __( 'Types', 'my_theme' ),
        ),
        // Control the slugs used for this taxonomy
        'rewrite' => array(
            'slug' => 'type-events', 
            'with_front' => false, 
            'hierarchical' => true
        ),
    ));

在Dashboard Admin中,我创建了两个分类法类型事件: Taxonomies

自定义帖子类型和分类使用相同的模板。

在文件模板中,我想检查它是邮寄类型还是分类。 目前,我使用is_post_type_archive()进行检查,但两者都返回true。这不是我需要的。

如何检查这是自定义帖子类型还是分类?

3 个答案:

答案 0 :(得分:0)

如果您想检查帖子是否是循环中的自定义帖子类型events,您可以使用此功能:

<?php if ( get_post_type() === 'events' ) { 
    /* Do Stuff */ 
} ?>

如果这不在循环中,则需要将帖子ID传递给get_post_type()

<?php if ( get_post_type( $post_id ) === 'events' ) { 
    /* Do Stuff */ 
} ?>

修改

您可以通过以下方式测试多种自定义帖子类型:

<?php if ( get_post_type() === 'events' || get_post_type() === 'promos' || get_post_type() === 'courses' ) { 
    /* Do Stuff */ 
} ?>

答案 1 :(得分:0)

这有点复杂,也许最好的方法是在加载模板之前检查is_post_type_archive()is_tax(),但在您的情况下,您可以尝试使用 get_queried_object()

Codex - get_queried_object

如果这是分类法,则返回的对象将具有属性taxonomyterm_idterm_taxonomy_id

所以也许你可以使用像get_queried_object()->taxonomy这样的东西来确定这是否是分类法并获得它的名称,get_queried_object()->query_var用于custom_post_type。

if ( isset( get_queried_object()->taxonomy ) {
   //do taxonomy work ...
}
if ( property_exists( get_queried_object()->query_var ) {
   //post things 
}

答案 2 :(得分:-1)

function custom_post_type() {
    $singular="Car";
    $plural="cars";  

    $labels = array(
        'name'                  => _x( $plural, 'Post Type General Name', 'text_domain' ),
        'singular_name'         => _x( $singular, 'Post Type Singular Name', 'text_domain' ),
        'menu_name'             => __( $plural, 'text_domain' ),
        'name_admin_bar'        => __( $singular, 'text_domain' ),
        'archives'              => __( '$singular Archives', 'text_domain' ),
        'attributes'            => __( $singular.' Attributes', 'text_domain' ),
        'parent_item_colon'     => __( 'Parent '.$singular.':', 'text_domain' ),
        'all_items'             => __( 'All '.$plural, 'text_domain' ),
        'add_new_item'          => __( 'Add New '.$singular, 'text_domain' ),
        'add_new'               => __( 'Add New', 'text_domain' ),
        'new_item'              => __( 'New '.$singular, 'text_domain' ),
        'edit_item'             => __( 'Edit '.$singular, 'text_domain' ),
        'update_item'           => __( 'Update '.$singular, 'text_domain' ),
        'view_item'             => __( 'View '.$singular, 'text_domain' ),
        'view_items'            => __( 'View '.$singular, 'text_domain' ),
        'search_items'          => __( 'Search '.$singular, 'text_domain' ),
        'not_found'             => __( 'Not found', 'text_domain' ),
        'not_found_in_trash'    => __( 'Not found in Trash', 'text_domain' ),
        'featured_image'        => __( 'Featured Image', 'text_domain' ),
        'set_featured_image'    => __( 'Set featured image', 'text_domain' ),
        'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
        'use_featured_image'    => __( 'Use as featured image', 'text_domain' ),
        'insert_into_item'      => __( 'Insert into '.$singular, 'text_domain' ),
        'uploaded_to_this_item' => __( 'Uploaded to this '.$singular, 'text_domain' ),
        'items_list'            => __( $singular.' list', 'text_domain' ),
        'items_list_navigation' => __( $singular.' list navigation', 'text_domain' ),
        'filter_items_list'     => __( 'Filter '.$singular.' list', 'text_domain' ),
    );
    $supports =array('title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats');
    $texonomies =array('category', 'post_tag');
    $args = array(
        'label'                 => __( $singular, 'text_domain' ),
        'description'           => __( $singular.' Description', 'text_domain' ),
        'labels'                => $labels,
        'supports'              => $supports,
        'taxonomies'            => $texonomies,
        'hierarchical'          => false,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 8,
        'show_in_admin_bar'     => true,
        'show_in_nav_menus'     => true,
        'can_export'            => true,
        'has_archive'           => true,
        'exclude_from_search'   => false,
        'publicly_queryable'    => true,
        'capability_type'       => 'page',
        'menu_icon'             => 'dashicons-video-alt'`enter code here`
    );
    register_post_type( 'post_type', $args );

}
add_action( 'init', 'custom_post_type');