Written by Kasumi

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で固定ページを自動生成する方法について紹介しました。

以上で解説を終わります。

目次

関連記事

WordPress プログラミング

WordPress投稿ページ内の関連・その他記事一覧で現在のページを除外する方法【wp_query】

2022.04.20
3273
WordPress

トップやアーカイブの記事一覧で1ページ目と2ページ目以降で条件分岐する方法

更新日:2019.11.28
647
WordPress

投稿タイプのカテゴリーページでURLから categoryを削除する方法【ワードプレス】

更新日:2019.11.28
1566
WordPress

【簡単】WordPressで編集するテンプレートファイルを一目で確認する方法

2022.09.07
697