Loading
0

如何为WordPress主题自动创建特定页面?

根据用户的反馈,有部分用户是原来有一个WordPress的网站,他们想使用我们新的主题,然后使用他们原来网站的数据库,这样的话,那就还需要重新配置这些必须的页面,用户自己来操作不太现实,因为有的涉及到短代码,有的涉及到自定义字段。所以就想着如何让用户启用主题的时候自动创建主题必须的页面。那么如何为WordPress主题自动创建特定页面?

如何为WordPress主题自动创建特定页面?

1、添加页面函数

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

/**

*参数$title 字符串 页面标题

*参数$slug 字符串 页面别名

*参数$page_template 字符串 模板名

*无返回值

**/

function ashu_add_page($title,$slug,$page_template=''){

$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_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);

}

}

}

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

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

function ashu_add_pages() {

global $pagenow;

//判断是否为激活主题页面

if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){

ashu_add_page('登录页面','login','page-login.php'); //页面标题"登录页面",别名login,页面模板page-login.php

ashu_add_page('注册页面','register','page-register.php');

}

}

add_action( 'load-themes.php', 'ashu_add_pages' );

//需要注意的是模板名称是php文件的文件名哦

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