是否可以使用单个定制帖子作为站点首页

时间:2012-02-15 作者:Javier Villanueva

我知道我可以将静态页面设置为主页,但是否可以将单个自定义帖子设置为网站首页?

我创建了一个名为“公文包”的自定义帖子类型,用户可以将他们所做的所有工作添加为帖子,我需要其中一篇帖子显示为主页,就像在阅读设置中设置静态首页一样。

提前感谢!

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

你不想让帖子成为头版,你想让自定义帖子类型成为头版。现在我们掌握了正确的术语,是的,这是可能的。

一位客户曾经让我做同样的事情。他们在头版上显示了自己需要的自定义帖子类型。这样做很简单,只需添加一个过滤器,允许他们从阅读页面中选择一个“堆栈”(他们的自定义帖子类型):

function add_pages_to_dropdown( $pages, $r ){
    if ( ! isset( $r[ \'name\' ] ) )
        return $pages;

    if ( \'page_on_front\' == $r[ \'name\' ] ) {
        $args = array(
            \'post_type\' => \'portfolio\'
        );

        $portfolios = get_posts( $args );
        $pages = array_merge( $pages, $portfolios );
    }

    return $pages;
}
add_filter( \'get_pages\', \'add_pages_to_dropdown\', 10, 2 );
然后,只需设置模板的样式以正确使用数据。

SO网友:Chip Bennett

实现这一点的方法有很多,尽管有些方法比其他方法更先进:

将日志标记为sticky, 然后将每页的帖子设置为1 (Dashboard -> Settings -> Reading)front-page.php 模板,并通过sticky post指定,或通过自定义post meta创建自定义front-page.php 模板,并创建一个动态侧栏(即小部件区域),在其中添加一个小部件以显示有问题的帖子(在此处插入许多其他方法…)why not just put that blog post content in a static Page, and then assign that static Page as the Front Page?

根据您的问题说明编辑:

这是客户的要求,我创建了一个名为“公文包”的自定义帖子类型,他在其中添加了自己所做的所有工作,他只想将其中一篇帖子显示为主页,就像在阅读设置中设置静态首页一样,更新问题。

您需要使用以下方法之一:

过滤page_on_front 下拉列表,正如@EAMann所建议的front-page.php 模板文件,通过自定义帖子元或其他方式查询正确的公文包帖子

SO网友:mor7ifer

不如为“用作主页”设置一个自定义元字段,然后查询该元并获取相关帖子并输出它们。。。当然,所有这些都是front-page.php

SO网友:fiskhandlarn

EAManns的答案很好,但如果数据库中根本没有页面,则不会执行任何操作(因为如果没有创建页面,则会隐藏选择静态首页的选项)。这是我试图解决的问题:

add_filter(\'get_pages\', function ($pages, $r) {
    if (function_exists(\'get_current_screen\') && \'options-reading\' === get_current_screen()->id) {
        $pages = array_merge($pages, get_posts([\'post_type\' => \'area\']));
    }

    return $pages;
}, 10, 2);
(其中“area”应替换为自定义帖子类型的名称。)

SO网友:user1032559

已尝试解决方案EAMann 它起作用了,但是fiskhandlarn 注意到如果根本没有页面,它就不起作用。他的解决方案对我不起作用。因此,我建议另一种解决方案可能过于简单,但它确实有效。

add_filter( \'get_pages\', \'add_pages_to_dropdown\', 10, 2 );
function add_pages_to_dropdown( $pages, $r ){
    if ( ! isset( $r[ \'name\' ] ) ) {
        $r[\'name\'] = \'page_on_front\';
    }
    if ( \'page_on_front\' == $r[ \'name\' ] ) {
        $args = array(
            \'post_type\' => \'device\'
        );
        $portfolios = get_posts( $args );
        $pages = array_merge( $pages, $portfolios );
    }
    return $pages;
}

SO网友:user1032559

您可以创建新的静态页面、为此页面创建新模板以及在模板添加中

header("Location: https://your-site.com/url-of-post-for-main-page/");

结束

相关推荐

Print_r如果放置在侧边栏或single.php中,则显示两个不同的POST->ID

我的网站正在为同一篇文章显示两个不同的ID(如果是print\\r)。如果我问:<?php echo $post->ID;?> 在单曲中。php它给了我一个数字。如果我在侧边栏中做同样的事情,它会给我一个完全不同的结果。这就是我在单曲上打印的内容。phpstdClass Object ( [ID] => 59 [post_author] => 1 [post_date] => 2012-01-01 20:29:18 [post_date_gmt] =