如何使用自定义帖子类型作为首页?

时间:2011-10-12 作者:Isaac Lubow

我想将网站的首页设置为自定义帖子类型中的单个帖子。我已经能够使用以下代码将我的头版请求更改为自定义帖子类型存档posted here):

function custom_front_page($wp_query){
    if($wp_query->get(\'page_id\')==get_option(\'page_on_front\')){
        $wp_query->set(\'post_type\',\'album\');
        $wp_query->set(\'page_id\',\'\'); // empty
        // fix conditional functions
        $wp_query->is_page = false;
        $wp_query->is_archive = true;
        $wp_query->is_post_type_archive = true;
    }
}
add_action(\'pre_get_posts\',\'custom_front_page\');
更换

$wp_query->is_archive = true;
$wp_query->is_post_type_archive = true; 
使用

$wp_query->is_single = true;
调用single-album.php 模板,但它仍然返回“相册”类别中的所有帖子,而不是仅返回一篇。

正在添加

$wp_query->set(\'posts_per_page\',1);
没有效果。

我应该怎么做呢?

附加问题:关于如何操纵query 这边走

4 个回复
最合适的回答,由SO网友:Ijaas 整理而成

在首页显示单个帖子的最简单方法是:

global $wp_query;
$wp_query = new WP_Query( array( \'p\' => \'POST ID HERE\' ) );
include( \'single-POSTTYPE.php\' );

SO网友:dwaser

我不得不为一位客户做同样的事情,我找到了两种帮助我的资源:

How do you use a CPT as the default home page?

http://wpquestions.com/question/show/id/2944

SO网友:Marco Panichi

这是对我有效的解决方案:

function add_<MYTPE>_to_dropdown( $pages, $r )
{
    if(\'page_on_front\' == $r[\'name\'])
    {
        $args = array(
            \'post_type\' => \'<MYTYPE>\'
        );
        $items = get_posts($args);
        $pages = array_merge($pages, $items);
    }

    return $pages;
}
add_filter( \'get_pages\', \'add_<MYTPE>_to_dropdown\' );

function enable_front_page_<MYTPE>( $query )
{
    if(\'\' == $query->query_vars[\'post_type\'] && 0 != $query->query_vars[\'page_id\'])
        $query->query_vars[\'post_type\'] = array( \'page\', \'<MYTPE>\' );
}
add_action( \'pre_get_posts\', \'enable_front_page_<MYTPE>\' );
只需更换<MYTYPE> 使用自定义post类型计算机名称

SO网友:lkraav
结束