WordPressで固定ページを自動生成する方法

WordPressで自作テーマを作成している。
自作テーマを導入したら自動で任意の固定ページが自動生成される仕組みにしたい。
本記事ではこのような悩み解決。
実装方法について解説します。
functions.phpにコードを記述
//-----------------------------------------------------
// 固定ページを自動生成する方法
//-----------------------------------------------------
function create_pages_and_setting() {
// 作成したい固定ページのタイトル名・スラッグを入れる。
$pages_array[] = array('title'=>'テスト', 'name'=>'test', 'parent'=>'');
foreach ($pages_array as $value) {
setting_pages($value);
}
}
function setting_pages( $val ) {
//親ページ判別
if(!empty($val['parent'])){
$parent_id = get_page_by_path($val['parent']);
$parent_id = $parent_id->ID;
$page_slug = $val['parent'] . "/" . $val['name'];
}else{
$parent_id = "";
$page_slug =$val['name'];
}
if ( empty(get_page_by_path( $page_slug ))) {
//固定ページがなければ作成
$insert_id = wp_insert_post(
array(
'post_title' => $val['title'],
'post_name' => $val['name'],
'post_status' => 'publish',
'post_type' => 'page',
'post_parent' => $parent_id,
'post_content' => '',
)
);
}else{
//固定ページがすでにあれば更新
$page_obj = get_page_by_path( $page_slug );
$page_id = $page_obj->ID;
$base_post = array(
'ID' => $page_id,
'post_title' => $val['title'],
'post_name' => $val['name'],
);
wp_update_post( $base_post );
}
}
add_action('after_setup_theme', 'create_pages_and_setting');
上記をfunctions.phpに記述します。
create_pages_and_setting関数内のpages_array変数に自動生成したい固定ページを配列で設定。
以下任意のパラメータを設定します。
title
作成する固定ページのタイトル名。
name
作成する固定ページのスラッグ名。
parent
親ページを設定したい場合は親スラッグを入れる
setting_pages関数で固定ページを自動生成する条件・内容が定義されてます。
固定ページを自動で生成するにはwp_insert_post関数を使います。
既に自動生成したい固定ページが既存である場合、wp_update_post関数で固定ページを更新。
それ以外はwp_insert_post関数で固定ページを自動生成する内容になります。
最後にadd_action関数で、after_setup_themeを設定。
テーマがセットアップされる前にcreate_pages_and_setting関数が実行されるようにします。
以上で設定した固定ページが自動で生成されます。
まとめ
WordPressで固定ページを自動生成する方法について紹介しました。
以上で解説を終わります。