Wordpress启用主题或插件时自动创建页面或文章
Wordpress在启用主题或者启用插件时,自动创建一个文章或页面,并可指定模板和别名。
/**
* https://yangjunwei.com/3161.html
* Wordpress启用主题或插件时自动创建页面或文章,并可指定模板和别名
* $title 字符串 页面标题
* $slug 字符串 页面别名
* $page_template 字符串 模板名
* $post_content 内容,如短标签
* 示例创建页面: yjw_add_one_page('用户中心', 'ucenter', 'pages/page_null.php', '[MEMBER_UCENTER]'); // 固定URL的用户中心
* 无返回值
**/
if( !function_exists('yjw_add_one_page') ){
function yjw_add_one_page($title, $slug, $page_template='', $post_content=''){
$allPages = get_pages();//获取所有页面
$exists = false;
foreach( $allPages as $page ){
//通过页面别名来判断页面是否已经存在
if( strtolower( $page->post_name ) == strtolower( $slug ) ){
$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_content,
'post_status' => 'publish',
'post_author' => 1,
'menu_order' => 0
)
);
//如果插入成功 且设置了模板
if($new_page_id && $page_template!=''){
//保存页面模板信息
update_post_meta($new_page_id, '_wp_page_template', $page_template);
}
}
}
}
大概的调用形式
/* 主题设置页面时调用 */
add_action( 'load-themes.php', 'yjw_add_pages' );
function yjw_add_pages(){
global $pagenow;
//判断是否为激活主题页面
if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){
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');
}
}
/* 插件注册激活时调用 */
register_activation_hook( __FILE__, 'yjw_plugin_activation' );
function yjw_plugin_activation(){
/* 创建页面 */
if( !function_exists('yjw_add_one_page') ){
yjw_add_one_page('积分榜', 'top-month', 'pages/page-toplist.php', '');
}
}