wp_insert_postでスラッグ(post_name)が設定できない場合の対処法

wp_insert_postでスラッグ(post_name)が設定できない場合の対処法



国内最速・高安定の高性能レンタルサーバー【ConoHa WING】

WordPressでテーマ初期実行時に予め固定ページを作成したいと思い、wp_insert_postを使用したのですがスラッグ(post_name)を反映してくれませんでした。

そのような際に対処する方法を考えました。

通常は

$page_title = 'お問い合わせ';
$page_name  = 'contact';
$check      = get_page_by_title( $page_title );
if ( ! isset( $check->ID ) ) {
	$post_ary = array(
		'post_title'   => $page_title,
		'post_name'    => $page_name,
		'post_status'  => 'publish',
		'post_type'    => 'page',
		'post_content' => '',
	);
	wp_insert_post( $post_ary );
}

と書くことになろうと思います。
しかし、この記述だとスラッグにはページタイトルが入り、post_nameで指定した設定値は反映されませんでした。
そもそもpost_nameも参考サイトによっては「こうするんだよ!」と出てくるだけで、ドキュメントの方にその設定項目は見当たりません。

そこで、以下のように一旦ページを作成した後にwp_update_postで改めて再設定することで対処できました。

$page_title = 'お問い合わせ';
$page_name  = 'contact';
$check      = get_page_by_title( $page_title );
if ( ! isset( $check->ID ) ) {
	$post_ary = array(
		'post_title'   => $page_title,
		'post_name'    => $page_name,
		'post_status'  => 'publish',
		'post_type'    => 'page',
		'post_content' => '',
	);
	$new_page_id = wp_insert_post( $post_ary );
	wp_update_post( array(
		'ID'        => $new_page_id,
		'post_name' => $page_name,
	) );
}
今日はここまで

コメントを残す

メールアドレスが公開されることはありません。