您完全可以通过new_to_auto-draft
行动这是因为wp_insert_post
刚刚从post数组中获取模板并更新meta以反映这一点。基本上,您将在设置后立即覆盖数据库中的该值。下面是一个示例:
function my_project_change_default_template( $post ) {
if ( ! strpos( $_SERVER[\'REQUEST_URI\'], \'wp-admin/post-new.php\' ) ) {
return;
}
if ( \'page\' === get_post_type( $post ) ) {
update_post_meta( $post->ID, \'_wp_page_template\', \'new-template.php\' );
}
}
add_action( \'new_to_auto-draft\', \'my_project_change_default_template\' );
您还可以通过
wp_insert_post
行动,因为(如回答所述)这是在同一时间调用的,但在
wp_insert_post
. 见下文:
function my_project_change_default_template( $post_id, $post, $update ) {
if ( $update ) {
return;
}
if ( wp_is_post_revision( $post_id ) ) {
return;
}
if ( \'page\' === get_post_type( $post ) ) {
update_post_meta( $post_id, \'_wp_page_template\', \'new-template.php\' );
}
}
add_action( \'wp_insert_post\', \'my_project_change_default_template\', 10, 3 );
请注意:这是在WordPress 5.1中测试的。