wp_insert_post
を使用して作成されたこのページに使用するページテンプレートを設定するにはどうすればよいですか。 template-blog.php
を使いたい
これが私の現在の機能です。
add_action( 'admin_init', 'mytheme_admin_init' );
function mytheme_admin_init() {
if ( get_option( 'mytheme_installed' ) != true ) {
$new_page = array(
'slug' => 'blog',
'title' => 'Blog',
'content' => ""
);
$new_page_id = wp_insert_post( array(
'post_title' => $new_page['title'],
'post_type' => 'page',
'post_name' => $new_page['slug'],
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_content' => $new_page['content'],
'post_status' => 'publish',
'post_author' => 1,
'menu_order' => 0
));
update_option( 'mytheme_installed', true );
}
}
wp_insert_post()
のドキュメント から、page_template
引数は次のようになります。
page_template:post_typeが 'page'の場合、ページテンプレートを設定しようとします。失敗すると、関数はWP_Errorまたは0を返し、最後のアクションが呼び出される前に停止します。 post_typeが「page」ではない場合、パラメータは無視されます。 「_wp_page_template」のキーでupdate_post_meta()を呼び出すことによって、ページ以外のページテンプレートを設定できます。
そのため、wp_insert_post()
を使用してページを挿入し、page_template
引数を使用してページテンプレートを割り当てる必要があります。
add_action( 'admin_init', 'mytheme_admin_init' );
function mytheme_admin_init() {
if ( ! get_option( 'mytheme_installed' ) ) {
$new_page_id = wp_insert_post( array(
'post_title' => 'Blog',
'post_type' => 'page',
'post_name' => 'blog',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_content' => '',
'post_status' => 'publish',
'post_author' => get_user_by( 'id', 1 )->user_id,
'menu_order' => 0,
// Assign page template
'page_template' => 'template-blog.php'
) );
update_option( 'mytheme_installed', true );
}
}
または、他の投稿タイプに "ページテンプレート"を設定したい場合は、
add_action( 'admin_init', 'mytheme_admin_init' );
function mytheme_admin_init() {
if ( ! get_option( 'mytheme_installed' ) ) {
$new_page_id = wp_insert_post( array(
'post_title' => 'Blog',
'post_type' => 'my_custom_post_type',
'post_name' => 'blog',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_content' => '',
'post_status' => 'publish',
'post_author' => get_user_by( 'id', 1 )->user_id,
'menu_order' => 0
) );
if ( $new_page_id && ! is_wp_error( $new_page_id ) ){
update_post_meta( $new_page_id, '_wp_page_template', 'template-blog.php' );
}
update_option( 'mytheme_installed', true );
}
}