专栏首页许都博客WordPress在激活主题的时候自动新建页面

WordPress在激活主题的时候自动新建页面

如果你制作了一个主题,需要新建很多页面才能够完美工作,那么在使用者激活主题的时候自动新建页面将会给主题的使用省略很多设置步骤。 创建文章使用的函数为wp_insert_post();使用方法如下

点击查看完整内容

<?php
$post = array(
  'ID'             => [ <post id> ] //Are you updating an existing post?
  'menu_order'     => [ <order> ] //If new post is a page, it sets the order in which it should appear in the tabs.
  'comment_status' => [ 'closed' | 'open' ] // 'closed' means no comments.
  'ping_status'    => [ 'closed' | 'open' ] // 'closed' means pingbacks or trackbacks turned off
  'pinged'         => [ ? ] //?
  'post_author'    => [ <user ID> ] //The user ID number of the author.
  'post_category'  => [ array(<category id>, <...>) ] //post_category no longer exists, try wp_set_post_terms() for setting a post's categories
  'post_content'   => [ <the text of the post> ] //The full text of the post.
  'post_date'      => [ Y-m-d H:i:s ] //The time post was made.
  'post_date_gmt'  => [ Y-m-d H:i:s ] //The time post was made, in GMT.
  'post_excerpt'   => [ <an excerpt> ] //For all your post excerpt needs.
  'post_name'      => [ <the name> ] // The name (slug) for your post
  'post_parent'    => [ <post ID> ] //Sets the parent of the new post.
  'post_password'  => [ ? ] //password for post?
  'post_status'    => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | 'custom_registered_status' ] //Set the status of the new post.
  'post_title'     => [ <the title> ] //The title of your post.
  'post_type'      => [ 'post' | 'page' | 'link' | 'nav_menu_item' | 'custom_post_type' ] //You may want to insert a regular post, page, link, a menu item or some custom post type
  'tags_input'     => [ '<tag>, <tag>, <...>' ] //For tags.
  'to_ping'        => [ ? ] //?
  'tax_input'      => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) ) ] // support for custom taxonomies. 
);
wp_insert_post( post, wp_error );
?>

步骤一:添加页面的函数

需要注意,页面的模板信息保存在_postmeta表中,以字段形式保存,字段名为_wp_page_template,所以要保存页面模板信息,使用update_post_meta函数

点击查看完整内容

function ashu_add_page(title,slug,
    $allPages = get_pages();//获取所有页面
    $exists = false;
    foreach( allPages as page ){
        //通过页面别名来判断页面是否已经存在
        if( strtolower( page->post_name ) == strtolower( 
            $exists = true;
        }
    }
    if( $exists == false ) {
        $new_page_id = wp_insert_post(
            array(
                'post_title' => $title,
                'post_type'     => 'page',
                'post_name'  => $slug,
                'comment_status' => 'closed',
                'ping_status' => 'closed',
                'post_content' => '',
                'post_status' => 'publish',
                'post_author' => 1,
                'menu_order' => 0
            )
        );
        //如果插入成功 设置模板
        if(new_page_id && 
            //保存页面模板信息
            update_post_meta(new_page_id, '_wp_page_template',  page_template);
        }
    }
}

步骤二:通过hook执行创建页面函数。

有了上面的创建页面函数,则只需要通过钩子调用上面的函数即可创建页面。注意,有的人可能使用init钩子,个人认为这不是很好,init钩子是每次wordpress初始化时都要执行的,但是我们不需要每次执行程序的时候都来一遍这个函数,我们只需要在主题使用者点击激活主题的那一刻,执行一次,以后再也不需要再执行了。所以使用load-themes.php钩子,load-themes.php钩子是后台在设置主题的页面时启用。

function ashu_add_pages() {
    global $pagenow;
    //判断是否为激活主题页面
    if ( 'themes.php' == pagenow && isset( 
        ashu_add_page('ASHU_PAGE','ashu-page','page-ashu.php'); //页面标题ASHU_PAGE 别名ashu-page  页面模板page-ashu.php
        ashu_add_page('PAGE_ASHU','page-ashu','ashu-page.php');
    }
}
add_action( 'load-themes.php', 'ashu_add_pages' );
  1. //需要注意的是模板名称是php文件的文件名哦

好了,这样就OK了,当使用者激活你的主题的时候,可以默认创建一些必要的页面。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WordPress快速建站

    这篇文章将介绍如何使用WordPress建立一个博客、网站和论坛。WordPress是基于PHP的博客架设工具。它提供了一套开源的PHP代码以方便用户在支持PH...

    Vamei
  • WordPress 4.9.8版本正式发布,修复了46个问题

    从 WordPress 4.9.8 发布文章:此维护版本修复了 46 个错误(详情参见发行注记),增强功能和祝福任务,包括更新 Twenty Seventeen...

    明月云服务
  • Code Embed:在WordPress文章和页面中添加Javascript的最佳插件

    自从又开始迷上了WordPress,每天都会花不少时间在WordPress相关的网站上闲逛,这感觉竟然有点像分手复合又陷入了热恋的情人,没事就腻歪在一起,要把之...

    丘壑
  • WordPress安装后必做的18件事

    创建WordPress博客后该做些什么?安装WordPress后,要正确设置和启动网站,还需要做很多事情。在本文中,我们将分享安装WordPress后应该立即做...

    React架构设计
  • 打造个人IP: 开源项目网站构建框架

    您是否正在寻找有关如何创建博客网站: 个人博客 或者 开源项目官网 : Dubbo, Vue.js的构建框架? 在这篇文章我将向您展示如何创建一个美观并且实用的...

    sanshengshui
  • 十条关于 WordPress 安全性的小贴士

    WordPress 本质上并没大家认为的那么危险,而且开发者也在努力工作,以确保危险漏洞能被快速修复。但不幸的是,WordPress 的成功使其成为众矢之的:如...

    Debian中国
  • Duplicator使用教程-备份导入WordPress网站完整数据

    在本地搭建wordpress测试网站,测试完以后想把网站的数据完整的导入到主机上。一般我们会分别把网站程序和数据库文件备份然后再导入,但是这样做遇到一些问题,比...

    晓得博客
  • WP-Rocket配合nginx实现纯静态化加速WordPress

    WP Rocket缓存插件是当前最高效也是最灵活的WordPress静态缓存插件。WP Rocket在性能方面集成了所有最新功能:延迟图像加载,延迟加载java...

    用户7146828
  • 如何在Ubuntu 14.04上保护WordPress免受XML-RPC攻击

    WordPress是一个流行且功能强大的CMS(内容管理系统)平台。它的受欢迎程度可能会以专门针对WordPress网站的恶意流量形式引起不必要的关注。

    一步
  • WordPress你要会用

    WordPress你要会用 虽然是PHP开发的,但不能忽律它的简单化 WordPress介绍 WordPress是一种使用PHP语言开发的博客平台,用...

    Java帮帮
  • 原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)

    双 11 光棍节,我在博客发布了一篇给博客部署一个友好对话框的教程,用了几天感觉非常不错!就进一步折腾了一下,目前这个 js 已实现以下多种功能: 一、功能描述...

    张戈
  • 429 too many requests错误出现在wordpress后台更新及官网的5种解决方法

      从今年10月份开始wordpress服务经常出现429 too many requests错误,包括后台更新和访问wp官网,如下图所示,这是为什么呢?怎么处...

    ytkah
  • 如何使用WP-CLI安装WordPress

    很多人都熟悉WordPress的安装,Wordpress安装起来非常简单,其号称5分钟快速安装。但是,当您需要部署多个Wordpress时,重复的工作会拖慢你大...

    信姜缘
  • WordPress网站安全防护插件

    Nintec.net 防火墙插件一共有2个版本,一共是免费的,一共是付费的,我们今天要讲的是付费版的操作!下面我简单的罗列一下免费版本和付费版本之前的区别:

    回忆大大
  • 如何在Ubuntu 14.04上使用双因素身份验证保护您的WordPress帐户登录

    安全性是运行WordPress网站最重要的方面之一。我们中的许多人都倾向于认为黑客不会打扰我们的网站,但实际上,未经授权的登录尝试是在公共互联网上运行服务器的常...

    彼岸轮回
  • 如何使用LSCache,OpenLiteSpeed和Cyber​​Panel安装WordPress

    OpenLiteSpeed是由LiteSpeed Technologies开发和维护的高性能事件驱动的开源Web服务器。 在这篇文章中,我们将看到我们如何使用C...

    子润先生
  • WordPress 主题开发之激活主题后显示自定义提示信息

    如果你要开发一款WordPress 主题,那么你肯定希望用户在激活主题后能够看到你自定义的提示信息,一般是感谢使用主题之类的话。WordPress 本身在激活主...

    Jeff
  • 骚操作!WordPress流氓主题利用户服务器做肉鸡发动DDos攻击

    WordPress主题供应商Pipdig被发现利用客户的服务器对竞争对手的网站发动DDoS攻击。安全研究人员jem分析了他们的代码后,找到了实锤进行了DDoS攻...

    丘壑
  • WordPress开发人员犯的12个最严重的错误

    原本之前还有篇ruby的,拖得时间有点久了,同时本身没想过去过多接触ruby,所以暂且就不再祸害那篇文章了,有兴趣的可自己去看Creating a Ruby D...

    WindCoder

扫码关注云+社区

领取腾讯云代金券