使用代码完成WordPress页面(非文章页)的html伪静态

WordPress中将页面也分成了两种,一种是普通的文章页(post),一种是页面(page)。虽然可能在前台看上去两种页面都是没有什么分别的,但实际上WordPress是有区别对待的。普遍来说,文章偏向于动态的页面,而页面偏向于静态的页面。文章更新较多,而页面比较固定,例如文章可能天天有更新,而页面类似于关于我们之类的,估计很长时间不会更新了。实际的使用上,页面跟文章还是有很大的区别的。好像百度搜索对文章青睐一点,而页面的收录索引就非常的慢了。

页面对应的模版是page.php ,而文章对应的模版是single.php 。文章可以有不同的形式,例如标准、日志、图像、视频等等,而页面没有的。文章同样可以加入到分类目录,打上标签,而页面是不具备的。此外也发现某些sitemap的插件,生成网站地图的时候,仅针对了文章,而没有包含页面。所以建议一般情况下,使用文章页比较多。

图1.WordPress后台上的文章与页面

前期固定链接格式的改进节省页面载入时间的方法 – 程门立学 有提到把固定链接进行修改的操作,实际是比较简单的,在后台设置固定链接中即可进行设置。但这里的设置仅仅是针对文章页的设置,而没有把页面、分类目录等设置成html格式。而使用别名加上.html的话,WordPress会非常“人性化”的话.html改成-html的,依然不是一个静态的页面。

图2.重新设置WordPress设置的固定链接格式

而这两天使用页面加入了magic keyboard这个好玩有趣的页面,由于需要加载的东西相对多一点,而且几乎不会再做什么改动了,所以需要有其他的方法希望能把页面全部伪静态,同时也方便使用CDN进行缓存,降低服务器的压力。

WordPress的优点之一就是有很成熟的解决方案,一个问题会有很方便的解决办法,但同时,需要你了解相应的原理,需要折腾。这不将页面缓存静态化的代码有很多的,简单测试后,采用了如下代码:

aadd_action('init', 'html_page_permalink', -1);
function html_page_permalink() {
global $wp_rewrite;
if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')){
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
}
}

这个代码需要添加在当前使用主题的functions.php中,或者使用其他的方式进行调用。然后重新保存一下固定链接的选项即可。

改了代码之后,同时也需要将页面进行一个301的跳转。好在页面本身的链接也是比较少,就3个,所以跳转也非常快做好了。

图3.后台对页面链接做好301跳转

到此,基本就完成了操作。最后别忘记了把固定链接重新再保存一次,否则可能出现404.