Custom Posts on homepage

时间:2014-02-09 作者:alexwc_

我只是在创建一个自定义的帖子类型(已经启动并运行了),这让我大吃一惊。我想在我的主页上显示CPT和其他帖子。。。我一辈子都想不出来。我希望在我脱发之前,有人能看到我的错误。我肯定这是新手犯的错误,我盯着屏幕看的时间可能有点太长了。。。任何帮助都将不胜感激!

我还看到一些文章建议,pre\\u get\\u posts不是一个好主意。

我正在使用Woothemes画布子主题

有一个名为主页的页面,该页面使用Canvas杂志模板

所以

 function review_post() {

$labels = array(
      \'name\'=> _x( \'Reviews\', \'Post Type General Name\', \'text_domain\' ),
      etc....

);

    $rewrite = array(
        \'slug\'=> \'review\',
    etc...

);

$args = array(
     \'label\'               => __( \'post_review_key\', \'text_domain\' ),
    \'description\'         => __( \'Posts for Review Snippets\', \'text_domain\' ),
    \'labels\'              => $labels,
    \'supports\'            => array( \'title\', \'editor\', \'thumbnail\', \'revisions\', ),
    \'taxonomies\'          => array( \'reviews\'),
    \'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\'           => \'/review-star-16x16.jpg\',
    \'can_export\'          => true,
    \'has_archive\'         => true,
    \'exclude_from_search\' => false,
    \'publicly_queryable\'  => true,
    \'rewrite\'             => $rewrite,
    \'capability_type\'     => \'page\',

);
    register_post_type( \'post_review_key\', $args );

}

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

}
然后

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\', \'review_post\' ) );
return $query;
}

2 个回复
SO网友:Brad Dalton

用这两个代码段替换您的代码,它就会工作。

add_action( \'pre_get_posts\', \'add_custom_post_types_to_loop\' );

function add_custom_post_types_to_loop( $query ) {
if ( is_home() && $query->is_main_query() )
    $query->set( \'post_type\', array( \'post\', \'reviews\' ) );
return $query;
}
review是您的CPT slug not review\\u帖子的名称

Note: 我重新编写了代码,并将名称和slug改为reviews。

此外,您使用的函数名review\\u post与post\\u类型相同,这可能会导致问题。您还添加了一个名为

以下是有效的代码:

add_action( \'init\', \'new_post_type\' );
function new_post_type() {

register_post_type( \'reviews\',
    array(
        \'labels\' => array(
            \'name\'          => __( \'Reviews\', \'wpsites\' ),
            \'singular_name\' => __( \'Review\', \'wpsites\' ),
        ),
\'label\'               => __( \'Reviews\', \'text_domain\' ),
\'description\'         => __( \'Posts for Review Snippets\', \'text_domain\' ),
\'labels\'              => $labels,
\'supports\'            => array( \'title\', \'editor\', \'thumbnail\', \'revisions\', ),
\'taxonomies\'          => array( \'review-type\' ),
\'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\'           => \'dashicons-images-alt2\',
\'can_export\'          => true,
\'has_archive\'         => true,
\'exclude_from_search\' => false,
\'publicly_queryable\'  => true,
\'rewrite\'      => array( \'slug\' => \'reviews\', \'with_front\' => false ),
\'capability_type\'     => \'page\',

));

}
enter image description here

上述代码位于函数的自定义函数部分。用于画布主题的php文件或子主题函数文件。

该代码已经在画布主题上进行了测试,并且还在主贴子页面循环中显示单个CPT。

SO网友:Abhik

试试这个,应该可以:

function add_my_post_types_to_query( $query ) {
    if ( ( is_home() || is_front_page() ) && $query->is_main_query() ) {
        $query->set( \'post_type\', array( \'post\', \'post_review_key\' ) );
    }
}
add_action( \'pre_get_posts\', \'add_my_post_types_to_query\' );

结束

相关推荐