自定义帖子类型不显示在自定义wp查询循环中

时间:2017-07-06 11:47:35

标签: wordpress wordpress-theming custom-post-type custom-wordpress-pages

我正在努力不重复已经被问到的问题,但到目前为止我还没有调试过这个问题 - 我确信这是一件我不想要的小事!

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

在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();
?>

有人能发现问题吗?这已经困扰了我几天! 一切顺利

2 个答案:

答案 0 :(得分:0)

更改

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

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

快速修改:

使用WP_Query类进行查询,然后调用the_post方法时,在关闭while语句后使用wp_reset_postdata

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

答案 1 :(得分:0)

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

<?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);
?>