启用WordPress主题自动创建特定页面

一直是以 wordpress 主题定制开发为主,从 2017 年 7 月份陆续制作了几套 WordPress 原创中文主题,每个模板都有自己演示数据,当然也有一些特定的页面必须存在,比如:登录页面,注册页面等等。如果用户直接用演示数据然后修改内容,按照我们提供的导入演示数据的方法没有什么问题,但是根据用户的反馈,有部分用户是原来有一个 WordPress 的网站,他们想使用我们新的主题,然后使用他们原来网站的数据库,这样的话,那就还需要重新配置这些必须的页面,用户自己来操作不太现实,因为有的涉及到短代码,有的涉及到自定义字段。所以就想着如何让用户启用主题的时候自动创建主题必须的页面。自己也懒得一点点去研究,就直接百度了。现在将具体方法贴出来供大家使用。

1、添加页面函数

页面的模板信息保存在 _postmeta 表中,以字段形式保存,字段名为 _wp_page_template,所以要保存页面模板信息,使用 update_post_meta 函数。当然,大家只需要把下面的代码放到您主题的 functions.php 文件中就可以了。

  1.     /**  
  2. 
    
  3.     *参数$title 字符串 页面标题  
  4. 
    
  5.     *参数$slug  字符串 页面别名  
  6. 
    
  7.     *参数$page_template 字符串  模板名  
  8. 
    
  9.     *无返回值  
  10. 
    
  11.     **/
  12. 
    
  13.     function ashu_add_page($title,$slug,$page_template=''){
  14. 
    
  15.         $allPages = get_pages();//获取所有页面   
  16. 
    
  17.         $exists = false;
  18. 
    
  19.         foreach( $allPages as $page ){
  20. 
    
  21.             //通过页面别名来判断页面是否已经存在   
  22. 
    
  23.             if( strtolower( $page->post_name ) == strtolower( $slug ) ){
  24. 
    
  25.                 $exists = true;
  26. 
    
  27.             }
  28. 
    
  29.         }
  30. 
    
  31.         if( $exists == false ) {
  32. 
    
  33.             $new_page_id = wp_insert_post(
  34. 
    
  35.                 array(
  36. 
    
  37.                     'post_title' => $title,
  38. 
    
  39.                     'post_type'     => 'page',
  40. 
    
  41.                     'post_name'  => $slug,
  42. 
    
  43.                     'comment_status' => 'closed',
  44. 
    
  45.                     'ping_status' => 'closed',
  46. 
    
  47.                     'post_content' => '',
  48. 
    
  49.                     'post_status' => 'publish',
  50. 
    
  51.                     'post_author' => 1,
  52. 
    
  53.                     'menu_order' => 0
  54. 
    
  55.                 )
  56. 
    
  57.             );
  58. 
    
  59.             //如果插入成功 且设置了模板   
  60. 
    
  61.             if($new_page_id && $page_template!=''){
  62. 
    
  63.                 //保存页面模板信息   
  64. 
    
  65.                 update_post_meta($new_page_id, '_wp_page_template',  $page_template);
  66. 
    
  67.             }
  68. 
    
  69.         }
  70. 
    
  71.     }

2、通过 hook 执行创建页面函数

有了上面的创建页面函数,则只需要通过钩子调用上面的函数即可创建页面。同样,把下面的代码放到你的主题 functions.php 文件中,然后修改成你要创建的页面的具体信息

  1.     function ashu_add_pages() {
  2. 
    
  3.     	global $pagenow;
  4. 
    
  5.     	//判断是否为激活主题页面   
  6. 
    
  7.     	if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){
  8. 
    
  9.     		ashu_add_page('登录页面','login','page-login.php'); //页面标题"登录页面",别名login,页面模板page-login.php   
  10. 
    
  11.     		ashu_add_page('注册页面','register','page-register.php');
  12. 
    
  13.     	}
  14. 
    
  15.     }
  16. 
    
  17.     add_action( 'load-themes.php', 'ashu_add_pages' );
  18. 
    
  19.     //需要注意的是模板名称是php文件的文件名哦

添加上面的代码后,当用户启用主题后,就会创建相应的文章或页面,当然要修改代码中的参数为自己要创建的页面参数。

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/89557

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买