首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress在激活主题的时候自动新建页面

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

作者头像
许都博客
修改2021-06-27 15:13:14
4850
修改2021-06-27 15:13:14
举报
文章被收录于专栏:许都博客许都博客许都博客

如果你制作了一个主题,需要新建很多页面才能够完美工作,那么在使用者激活主题的时候自动新建页面将会给主题的使用省略很多设置步骤。 创建文章使用的函数为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了,当使用者激活你的主题的时候,可以默认创建一些必要的页面。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤一:添加页面的函数
  • 步骤二:通过hook执行创建页面函数。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档