不知道大家对wordpress无法生成静态文件有什么想法,但是我帮大家实现了.虽然php7已经可以通过开启opcache与Memcache缓存,大大提升wordpress的速度,但是服务器还会出现卡顿,虚拟主机无法使用等问题.
最近比较忙,先大体说一下,全站生成静态原理,和首页生成代码吧(已经在阿里云阉割版虚拟主机上测试成功,无问题).
现在本静态化功能支持:
1.支持自定义选择要生成静态的页面.
2.支持自定义静态模板文件.
3.支持兼容wordpress内置函数.
4.支持发布文章后自动更新首页及各个分类列表页.
5.分类列表支持系统默认分页功能.
6.支持单页面,文章展示页面生成静态.
7.支持全站搜索功能,建议搜索结果页面不要生成静态.
8.支持文章移除到回收站,删除当前文章已经生成的静态文件并更新首页,各个分类列表的静态文件(包括分页).
9.支持文章从回收站还原,生成当前文章静态文件并更新首页,各个分类列表静态文件(包括分页).
10.支持篇文章选择多个分类,并同时生成静态文件.
11.支持批量生成所有分类列表页面,所有的文章展示页,所有的page单页面,tag页面临时没做,一键删除所有的静态html文件.
12.支持显示生成静态文件所耗时间,生成速度快.
13.支持选错模板或点错批量生成静态文件时,提醒错误功能,防止出现生成静态混乱.
先写这些吧,
原理就是,我们需要制作几个生成静态文件的模板,集成后台控制面板,一键生成静态的html文件,不会出现缓存到期二次生成的问题,
1.我们先在后台添加生成静态的控制面板
主要代码:
add_action('init','create_product_post_type'); function create_product_post_type() { register_post_type('html', array('labels' => array( 'name' => '静态模板', 'singular_name' => '静态模板', 'add_new' => '新建模板', ), 'public' => true, 'has_archive' => true, 'rewrite' => true, // 'hierarchical' => true, 'show_in_rest' => false, //启用古腾堡编辑器 'supports' => array('title','editor','revisions','custom-fields'), 'menu_position' => 22 ) ); } add_action('admin_menu', 'scjt_menu'); function scjt_menu() {//顶级菜单的slug是menus add_submenu_page('edit.php?post_type=html','生成静态','生成静态','administrator','scjt','scjt_page');
<fieldset><legend>选择模板</legend> <?php $html_query = get_posts("post_type=html&numberposts=-1"); // p($html_query); echo '<select class="select">'; echo '<option value="">选择静态模板</option>'; foreach($html_query as $post):setup_postdata($post); echo '<option value="'.$post->ID.'">'.$post->post_title.'</option>'; endforeach; echo '</select>';?> </fieldset><br> <legend>生成静态</legend> <form method="POST" action="" name="index_form"> <input type="hidden" name="index_update" value="update"/> <input type="hidden" name="index_html" value=""/> <div align="center"><input type="submit" class="save-button" name="index_button" value="生成index首页"/></div> </form>
2.制作首页静态模板,部分代码
/** * template name:index_html * template post type:html */ function index_html($sec,$path,$echo=0){ $start = microtime(true); $sec=base64_decode($sec); $path=base64_decode($path); $html_static=get_option('html_static'); if($sec!=$html_static['html_sec']){echo '非法访问,禁止执行';die;} ? > <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> <title>< ? php bloginfo('name');echo ' - ';bloginfo('description');? ></title> < ? php keywords();? >
3.新建一个生成首页静态的页面,模板选择首页的,自定义栏目中添加首页识别标识,标题可以随便起,点发布.
4.在控制面板中选择首页一键生成就可以了.
5.这是批量生成分类列表所用时间
6.这是批量生成文章展示页所用时间
7.从图中可以看出没个文件生成耗时,基本都在毫秒之间,所以使用本静态生成功能,基本不会出现等待很久的时间.今天先到这吧,有问题可以在下面评论,也可以在QQ群交流1105578185
php数据缓存memcached 1.6.6 客户端集成可视化工具 https://www.52pojie.cn/thread-1232090-1-1.html
自己开发的有需要可以试试,集成工具很方便
如果觉得本站内容对你有益,可对本站赞助,本站会不定时发布高质量内容。


jnn6
最近比较忙,本站还未添加本功能,已在测试站适配完毕.
2020-08-01