自定义帖子类型不会显示,IS主页&主要查询

时间:2014-03-24 01:54:49

标签: wordpress wordpress-theming

我有一个自定义的帖子类型,之前工作得很好,但现在不行了。我没有安装任何新的插件,我的代码似乎完全有效。其他自定义字段显示(默认发布类型),但我正在谈论的不再是。

以下是代码:

// Show posts of 'post', 'homepage_slider' post types on home page
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'homepage_slider' ) );
    return $query;
}

您可以猜到,homepage_slider是我的自定义帖子类型。我没有调整它的代码,但这里仅供参考:

    function homepage_slider() {

$labels = array(
    'name'                => 'Images',
    'singular_name'       => 'Image',
    'menu_name'           => 'Homepage Slider Images',
    'parent_item_colon'   => 'Parent Image:',
    'all_items'           => 'All images',
    'view_item'           => 'View Image',
    'add_new_item'        => 'Add New Image',
    'add_new'             => 'Add New',
    'edit_item'           => 'Edit Image',
    'update_item'         => 'Update Image',
    'search_items'        => 'Search Image',
    'not_found'           => 'Not found',
    'not_found_in_trash'  => 'Not found in Trash',
);
$args = array(
    'label'               => 'homepage_slider',
    'description'         => 'Homepage Slider',
    'labels'              => $labels,
    'supports'            => array( 'title', 'thumbnail' ),
    // 'taxonomies'          => array( 'category', 'post_tag' ),
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'menu_icon'           => 'myurl',
    'can_export'          => true,
    'has_archive'         => false,
    'exclude_from_search' => true,
    'publicly_queryable'  => true,
    'rewrite'             => false,
    'capability_type'     => 'page',
);
register_post_type( 'homepage_slider', $args );

}

// Hook into the 'init' action
add_action( 'init', 'homepage_slider', 0 );

我已经查询了它确实是主页并且主查询确实正在运行的事实。真的很奇怪。

有什么建议吗?

编辑:我认为add_my_post_types_to_query函数出了问题,因为它不能与另一个自定义帖子类型一起使用。

2 个答案:

答案 0 :(得分:0)

尝试更换:

function add_my_post_types_to_query( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'homepage_slider' ) );
    return $query;
}

使用:

function add_my_post_types_to_query( $query ) {
    if ( $query->is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'homepage_slider' ) );
    return $query;
}

答案 1 :(得分:0)

好的,所以这就是我修复它的方法。不太自然的解决方案,但它完成了这项工作。

我只是创建了一个新的循环,它在必须放置的任何位置运行自定义帖子类型,并重复我在主页上的每个其他自定义字段。

:)