覆盖静态主页帖子

时间:2015-07-18 作者:Ben

在函数中。php是否可以动态设置静态主页?

条件可以是任何内容,但例如按域:

if ( $_SERVER[\'HTTP_HOST\'] == \'domain-one.com\' )
  set_front_page_slug(\'domain-one-home\');
else if ( $_SERVER[\'HTTP_HOST\'] == \'domain-two.com\' )
  set_front_page_slug(\'domain-two-home\');
请注意,它不应永久更改WordPress设置中设置的主页,仅针对当前页面加载。我希望不同的访问者看到不同的主页。

欢迎任何可以巧妙覆盖默认主页的方法。

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

这是我能想到的最好的解决方案,满足了基于子域等因素动态设置主页(而不是模板)的需要。

add_action( \'pre_get_posts\', \'dynamic_home\' );
function dynamic_home( $query ) {
  if ( is_front_page() && $query->is_main_query() ) {
    $query->set( \'post_type\' , \'my-cpt\' );
    $query->set( \'name\' , \'a-slug\' );
    $query->set( \'p\' , null );
    $query->set( \'page_id\' , null );
  }
}
在上面的一些\\u custom\\u condition()中可能包含逻辑,例如当前URL是否为主页。

此示例使用自定义帖子类型覆盖主页,但如果只使用页面内容类型,则会更简单。

仅设置模板是不够的,并且无法扩展到可能无限数量的主页。这样的情况是,网站的每个用户在自己的子域上都有自己的个性化主页。

SO网友:Ihor Vorotnov

尝试template_include 滤器See the docs 例如,代码示例。

结束

相关推荐

Make a category my homepage

我一直在想方设法,阅读每一篇帖子,想知道如何让我的主页只显示类别。就我而言,我只想展示“旅行”我尝试过另一种方法,即首先将其设置为菜单,然而,该页面不会显示为我的主页,而是显示所有我的帖子,而不是仅从旅行菜单中发布的帖子,除非我单击它有没有办法绕过这一点,因为一步一步都会很棒!