场景描述

网站首页本是默认显示最近文章的列表,后来做了个页面,并希望将其设置为主页。

解决方案

这个问题在网上的答案大多是在后台“设置-阅读”中设置“一个静态页面”,再选择主页之类的,我甚至跑去安装了个Custom Front Page插件,但是你可能和我一样,发现这么设置并没有用!

wordpress主页文章横排代码 wordpress页面设置_静态页面

探索了一个多礼拜,终于意识到很有可能是主题的问题,我大致梳理下逻辑与大家共享,有不足之处欢迎补充。

1、页面调用

首先,wordpress自带的设置主页功能依赖于主题中的几个文档,我当时无论如何修改wordpress配置,永远都只会调index.php中的内容。front-page.php, home.php, page.php, index.php文件的关系可参考如下:

  • 如果,front-page.php 存在,无论选择 "您的最新文章" 还是 "一个静态页面" 作为首页展示,都是采用 front-page.php 作为模板,没有其他三个文件啥事情。
  • 如果,front-page.php 不存在,并且选择了 "您的最新文章" 作为首页展示,则会以 home.php 作为模板。另外,如果 posts page 也设定了页面,也会用到 home.php.
  • 如果,front-page.php 不存在,并且选择了 "一个静态页面" 作为首页展示,则会使用 page.php 模板。模板的优先级为 page-{id}.php, page-{slug}.php, page.php, index.php
  • 如果,选择了 "您的最新文章" 作为首页展示,并且 home.php 不存在,则会以 index.php 为模板。或者,front page 设置了页面,但是 page.php 不存在,也会使用 index.php 作为模板。

 看来front-page.php优先级最高,而index.php就是个最可靠的备胎。

 

2、修改.php

我们可以在主题下新建一个front-page.php文件——当然你也可以选择其他策略新建home.php, page.php等。为了全站风格统一,我这边是将index.php的内容直接拷贝到front-page.php,稍作修改并加上以下两行代码:

$page_id =页面的ID;
include('article-normal.php');
//article-normal.php是我的文章格式