自定义帖子类型帖子未显示在类别中

时间:2017-03-30 作者:Kristina Bressler

我创建了几个自定义帖子类型,还创建了一个类别。我为该类别分配了几个自定义帖子,并尝试调用它在主页中显示帖子,但它没有显示任何内容,即使它显示的是wp仪表板菜单中的帖子。

这是我在模板主页中调用帖子的代码。php

<?php 
    $args = array (
        \'cat\'              => 3,
        \'posts_per_page\'         => 3
    );

     $the_query = new WP_Query( $args ); ?>
            <?php if ( $the_query->have_posts() ) : ?>

        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> 
           /* Display code */
        <?php endwhile;  ?>

    <?php endif; ?>
这也是我自定义的帖子类型之一,TV in函数。php:

// Register Custom Post Type
function tvs_post_type() {

    $labels = array(
        \'name\'                  => _x( \'TV\', \'Post Type General Name\', \'text_domain\' ),
        \'singular_name\'         => _x( \'TV\', \'Post Type Singular Name\', \'text_domain\' ),
        \'menu_name\'             => __( \'TV\', \'text_domain\' ),
        \'name_admin_bar\'        => __( \'Post Type\', \'text_domain\' ),
        \'archives\'              => __( \'Item Archives\', \'text_domain\' ),
        \'parent_item_colon\'     => __( \'Parent TV:\', \'text_domain\' ),
        \'all_items\'             => __( \'All TVs\', \'text_domain\' ),
        \'add_new_item\'          => __( \'Add New Post\', \'text_domain\' ),
        \'add_new\'               => __( \'Add New Post\', \'text_domain\' ),
        \'new_item\'              => __( \'New Item\', \'text_domain\' ),
        \'edit_item\'             => __( \'Edit Post\', \'text_domain\' ),
        \'update_item\'           => __( \'Update Post\', \'text_domain\' ),
        \'view_item\'             => __( \'View Post\', \'text_domain\' ),
        \'search_items\'          => __( \'Search Posts\', \'text_domain\' ),
        \'not_found\'             => __( \'No posts found\', \'text_domain\' ),
        \'not_found_in_trash\'    => __( \'Not posts 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 item\', \'text_domain\' ),
        \'uploaded_to_this_item\' => __( \'Uploaded to this item\', \'text_domain\' ),
        \'items_list\'            => __( \'Items list\', \'text_domain\' ),
        \'items_list_navigation\' => __( \'Items list navigation\', \'text_domain\' ),
        \'filter_items_list\'     => __( \'Filter items list\', \'text_domain\' ),
    );
    $args = array(
        \'label\'                 => __( \'TV\', \'text_domain\' ),
        \'description\'           => __( \'tv information pages\', \'text_domain\' ),
        \'labels\'                => $labels,
        \'supports\'              => array( \'title\', \'editor\', \'excerpt\', \'author\', \'thumbnail\', \'comments\', \'custom-fields\', ),
        \'taxonomies\'            => array( \'category\', \'post_tag\' ),
        \'hierarchical\'          => false,
        \'public\'                => true,
        \'show_ui\'               => true,
        \'show_in_menu\'          => true,
        \'menu_position\'         => 5,
        \'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\',
    );
    register_post_type( \'tv\', $args );

}
add_action( \'init\', \'tvs_post_type\', 0 );
然而,当我将一些帖子分配到该类别并尝试调用它们时,我仍然不明白为什么它没有显示出来。我所知道的是,当我将帖子分配到类别时,它能够从wp仪表板的“帖子”菜单中显示帖子,但不能从我创建的自定义帖子类型中显示。。。

1 个回复
最合适的回答,由SO网友:Abdul Awal Uzzal 整理而成

添加post_type 到第一个$args

<?php 
    $args = array (
        \'cat\'              => 3,
        \'post_type\'        => \'tv\',
        \'posts_per_page\'   => 3
    );

     $the_query = new WP_Query( $args ); ?>
            <?php if ( $the_query->have_posts() ) : ?>

        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> 
           <?php the_title(); ?>
        <?php endwhile;  ?>

    <?php endif;
     wp_reset_postdata();
    ?>