自定义 post 类型未在自定义 wp 查询循环中显示

Custom post type not displaying in custom wp query loop

我尽量不重复已经问过的问题,但到目前为止我还无法调试它 - 我确信这是我遗漏的一件小事!

我有一个 project.php 模板,我想包含一个侧边栏,其中包含所有项目自定义 post 类型作为链接。我似乎只得到 'post' post_type,而不是我的自定义 post_type(项目)

注册自定义 post 输入 functions.php

function custom_post_type() {
$labels = array(
'name'                  => _x( 'Project', 'Post Type General Name', 'text_domain' ),
    'singular_name'         => _x( 'Project', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'             => __( 'Projects', 'text_domain' ),
    'name_admin_bar'        => __( 'Projects', 'text_domain' ),
    'archives'              => __( 'Item Archives', 'text_domain' ),
    'attributes'            => __( 'Item Attributes', 'text_domain' ),
    'parent_item_colon'     => __( 'Parent Item:', 'text_domain' ),
    'all_items'             => __( 'All Projects', 'text_domain' ),
    'add_new_item'          => __( 'Add New Item', 'text_domain' ),
    'add_new'               => __( 'Add New', 'text_domain' ),
    'new_item'              => __( 'New Item', 'text_domain' ),
    'edit_item'             => __( 'Edit Item', 'text_domain' ),
    'update_item'           => __( 'Update Item', 'text_domain' ),
    'view_item'             => __( 'View Item', 'text_domain' ),
    'view_items'            => __( 'View Items', 'text_domain' ),
    'search_items'          => __( 'Search Item', '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 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'                 => __( 'Project', 'text_domain' ),
    'description'           => __( 'Spaceworks projects', 'text_domain' ),
    'labels'                => $labels,
    'supports'              => array( ),
    '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'       => 'post',
);
register_post_type( 'project', $args );

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

在 functions.php

中注册自定义分类法
function my_taxonomies_project() {
$labels = array(
'name'              => _x( 'Project Categories', 'taxonomy general name' ),
'singular_name'     => _x( 'Project Category', 'taxonomy singular name' ),
'search_items'      => __( 'Search Project Categories' ),
'all_items'         => __( 'All Project Categories' ),
'parent_item'       => __( 'Parent Project Category' ),
'parent_item_colon' => __( 'Parent Project Category:' ),
'edit_item'         => __( 'Edit Project Category' ), 
'update_item'       => __( 'Update Project Category' ),
'add_new_item'      => __( 'Add New Project Category' ),
'new_item_name'     => __( 'New Project Category' ),
'menu_name'         => __( 'Project Categories' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
);
register_taxonomy( 'project_category', 'project', $args );
}
add_action( 'init', 'my_taxonomies_project', 0 );`

单个项目模板:single-project.php

<?php
get_header();

while ( have_posts() ) : the_post(); ?>

<div class="projects">
<?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
<?php the_content(); ?>
</div>

<?php 
endwhile; 
wp_reset_query();
?>


<div class="col-12 col-lg-3 col-xl-3 hidden-lg-up allProjects">
#project loop for mobile

<?php
$tax_query_args = array(
    array(
        'post_type'         => array('post', 'project'),
     ),
);

$taxQuery = new WP_Query( $tax_query_args ); 

if ($taxQuery->have_posts())
while ($taxQuery->have_posts() ) : $taxQuery->the_post(); 
?>

<div class="projectCard">
<a href="<?php echo get_permalink(); ?>">
<p><?php the_title() ?></p>
</a>
</div>

<?php endwhile; wp_reset_query(); 

get_footer();
?>

有人能发现问题吗?这几天一直困扰着我! 祝一切顺利

改变

$tax_query_args = array(
    array(
        'post_type'         => array('post', 'project'),
     ),
);

$tax_query_args = array(
    'post_type' => array('post', 'project')
);

快速编辑:

当使用WP_Queryclass进行查询,然后调用the_post方法时,在while语句结束后使用wp_reset_postdata

无需重置查询,因为它没有更改。 :)

明智地使用项目类别显示项目

<?php
$project_args=array(
    'type'                     => 'project',
    'child_of'                 => 0,
    'parent'                   => 0,
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => 0,
    'hierarchical'             => 1,
    'exclude'                  => '',
    'include'                  => '',
    'number'                   => '',
    'taxonomy'                 => 'project_category',
    'pad_counts'               => false 
);
$project_my_query = null;
$project_my_query = new WP_Query($project_args);

if( $project_my_query->have_posts() ) 
{
        while ($project_my_query->have_posts()) : $project_my_query->the_post(); 

        ?>
        <div class="projectCard">
        <a href="<?php echo get_the_permalink($post->ID); ?>"><p><?php the_title() ?></p></a>
        </div
        <?php
       endwhile;
}
wp_reset_query($project_my_query);
?>