现在的主题功能越来越强大,很多主题会创建很多辅助页面,比如用户注册登录等等。当页面过多的时候,手动创建就不是那么的灵活,并且很多代码引用就更加麻烦,所以我们需要自动创建页面。
以前很多用户给我反应了DMD主题为什么不自动创建页面,用户手动创建很麻烦的问题。我之所以不愿意使用自动创建,是因为手动更灵活,希望用户把它玩儿转,而不是只知道用鼠标点点点。
废话不多说了,下面是WordPress启用主题自动创建页面的代码,加在functions.php中就行了。
复制
//https://www.daimadog.org/6684.html //WordPress启用主题自动创建页面 function ashu_add_page($title,$slug,$parent_slug,$page_template=''){ $allPages = get_pages();//获取所有页面 $post_parent=0; $exists = false; foreach( $allPages as $page ){ //通过页面别名来判断页面是否已经存在 if( strtolower( $page->post_name ) == strtolower( $slug ) ){ $exists = true; } //获取父页面ID if($parent_slug!=""){ if(strtolower( $page->post_name ) == strtolower( $parent_slug ) ){ $post_parent=$page->ID; } } } if( $exists == false ) { if($post_parent!=0){ $parma= array( 'post_title' => $title, 'post_type' => 'page', 'post_name' => $slug, 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_content' => '', 'post_status' => 'publish', 'post_parent'=>$post_parent, 'post_author' => 1, 'menu_order' => 0 ); }else{ $parma= 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 ); } $new_page_id = wp_insert_post($parma); //如果插入成功 且设置了模板 if($new_page_id && $page_template!=''){ //保存页面模板信息 update_post_meta($new_page_id, '_wp_page_template', $page_template); } } }
简单使用
在切换主题时自动检查创建页面,代码如下:
复制
//https://www.daimadog.org/6684.html //WordPress启用主题自动创建页面 add_action( 'after_switch_theme', 'create_tb_page' ); function create_tb_page(){ ashu_add_page("用户中心","member","","pages/member.php"); ashu_add_page("修改密码","password","member","pages/member-password.php"); ashu_add_page("修改资料","info","member","pages/member-info.php"); ashu_add_page("积分","level","member","pages/member-level.php"); }
对after_switch_theme
钩子不清楚的,请看这篇文章:WordPress主题启用时的动作钩子after_switch_theme
评论 (0)