建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

WordPress 导出全静态化网站(WordPress不用插件实现文章阅读计数及热门文章)

GG网络技术分享 2025-03-18 16:13 0


WordPress 导出全静态化网站


Wordpress做为世界上流行的博客建站软件,不管是从界面还是功能上来说都非常成熟,不过有一点比较遗憾,Wordpress建立的主要是动态网站页面,其性能消耗比较大,用Wordpress建立较大的网站,对服务器端资源占用较多,而很多时候,我们需要的是一个完全静态的网站。

完全静态的网站只有html文件,对服务器资源消耗极低,很多地方提供免费托管静态网站的服务,因此静态网站运行成本非常低,此外,静态网站安全性很好,几乎没有什么可攻击的漏洞,相比动态网站来说,不必过于操心安全问题,在访问上,即时访问量非常大,静态网站也可以很好地支撑,基本上不会有什么性能问题。

 那么,如何将一个Wordpress网站完全静态化呢?下面我就讲一下方法。

在Wordpress的“设置”-“固定连接”里,将固定链接设置为“自定义结构”,文章的标题结尾增加.html,这样文章页面显示出来就和静态页面一样,但是目录和标签还是动态页面。

之后,关闭Wordpress的评论功能,在“设置”-“讨论”里,选择“自动关闭发布 1 天后的文章上的评论功能”。

如果Wordpress内的文章数目小于1000,可以安装一个名为Simply Static插件即可在短时间内生成静态网站,并提供下载,这很简单,无需多说。

不过,如果文章数目大于 5000 篇,比如数万篇文章,那么,使用Simply Static插件生成html的时候,通常会报错,因为一般的网站服务器会在php上设置了超时和内存限制,我们通常的解决办法是,在本地搭建一个php环境,修改php超时时间和内存大小,例如对于Windows系统来说,可以选择安装一个名为“宝塔面板”的软件,快速配置一个WAMP环境,安装好了后,修改环境里php超时时间和内存大小,这时候使用Simply Static插件就不会报错了。

即时如此,对于文章数过万的WordPress来说,Simply Static插件生成网站的速度过慢,几乎要好几个小时,这里我们推荐使用另一个静态化插件:WP2Static插件。

在WP2Static插件里,修改Crawl Increment的数量为 100 以上的数值,可以有效提高页面生成速度,不过我在使用WP2Static插件的时候,也发现一些问题,通过多次调试才生成成功。

经过这些处理后,我们就在最终目录下得到了一个完全静态的网站的html文件,然后我们将这些html文件发布到目标网站,就可以得到一个完全静态的网站,这个静态网站不需要WordPress的其他php代码,能支撑大流量访问,基本没有安全隐患和漏洞,除了更新麻烦之外,其他方面和原有WordPress几乎完全一样,是一个低成本高质量部署网站的好方法。

著作权归作者所有。

来源:站长之家

WordPress不用插件实现文章阅读计数及热门文章

作为WordPress使用者,能不使用插件就尽量不安装插件,作为WordPress主题制作者,就更不应该让主题依赖插件了。文章阅读计数和热门文章列表是常见的需求,实现起来其实也并不复杂。

设置文章阅读数量函数:

function bzg_set_post_views() {global $post;if( ! isset( $post->ID ) || ! is_singular()  ) return;$cookie_name = \\\'views_\\\' . $post->ID;if( isset( $_COOKIE[$cookie_name] ) ) return;$post_views = (int) get_post_meta( $post->ID, \\\'views\\\', true );if( empty( $post_views ) ) {$post_views = 1;} else {$post_views = $post_views + 1;}update_post_meta( $post->ID, \\\'views\\\', $post_views );setcookie( $cookie_name, \\\'yes\\\', ( current_time( \\\'timestamp\\\' ) + 86400 ) );}add_action( \\\'get_header\\\', \\\'bzg_set_post_views\\\' );

代码中86400是指同一浏览器访问24小时内不计数,这样就能一定程度上避免刷阅读数。

读取文章阅读数量函数:

function bzg_post_views($post_ID = \\\'\\\') {global $post;$post_id = $post_ID;if( ! $post_id ) $post_id = $post->ID;if( ! $post_id ) return;$post_views = (int) get_post_meta( $post_id, \\\'views\\\', true );if( empty( $post_views ) ) $post_views = 0;return $post_views;}

以上代码放到主题文件functions.php中,在需要显示文章阅读数的地方调用:

<?php echo bzg_post_views(); ?>

获取阅读数最多的文章:

function bzg_get_most_viewed( $limit = 10 ) {$args = array(\\\'posts_per_page\\\' => $limit,\\\'order\\\' => \\\'DESC\\\',\\\'post_status\\\' => \\\'publish\\\',\\\'orderby\\\'    => \\\'meta_value_num\\\',\\\'meta_key\\\' => \\\'views\\\',\\\'date_query\\\' => array(array(\\\'after\\\'  => \\\'-360day\\\',)),);$str = implode(\\\'&\\\', $args);$postlist = wp_cache_get(\\\'hot_post_\\\' . md5($str), \\\'beizigen\\\');if(false === $postlist) {$postlist = get_posts( $args );wp_cache_set(\\\'hot_post_\\\' . md5($str), $postlist, \\\'beizigen\\\', 86400);}foreach ( $postlist as $post ) {echo \\\'<li><a href=\\\"\\\' . get_permalink($post->ID) . \\\'\\\" rel=\\\"bookmark\\\">\\\' . $post->post_title . \\\'</a></li>\\\';}wp_reset_postdata();}

注意函数中的-360day,是指输出360天内的文章,函数调用方法:

<ul><?php bzg_get_most_viewed(8); ?></ul>

标签:

提交需求或反馈

Demand feedback