您可以使用save_post
执行此操作。
我认为每次页面加载都检查比其他选项更好,因为它不会影响客户端,也不会每次页面加载都运行。
此外,您需要检查其是否是已保存的post parent,以便更新其孩子。
检查此项:
function set_child_page_template( $post_id, $post, $update ) {
// Check for post type page
if( $post->post_type === \'page\' ) {
// Check if its a child page
if( $post->post_parent !== 0 ) {
// If its child get the post parent template
$parent_template = get_post_meta( $post->post_parent, \'_wp_page_template\', true );
update_post_meta( $post_id, \'_wp_page_template\', $parent_template );
} else {
// If its parent update all his childs
$parent_template = get_post_meta( $post_id, \'_wp_page_template\', true );
$children = get_pages( [\'child_of\'=>$post_id] );
foreach( $children as $child ) {
update_post_meta( $child->ID, \'_wp_page_template\', $parent_template );
}
}
}
}
add_action(\'save_post\', \'set_child_page_template\', 10, 3);