Comment affecter le modèle de page parent à ses pages enfants de manière dynamique?
Collez le code suivant dans le functions.php
de votre thème:
add_action('save_post','changeTemplateOnSave');
function changeTemplateOnSave(){
global $post;
$curr_tmp = get_post_meta($post->ID, '_wp_page_template', true);
$parent_tmp = get_post_meta($post->post_parent, '_wp_page_template', true);
if($post->post_parent)
update_post_meta($post->ID,'_wp_page_template',$parent_tmp,$curr_tmp);
}
Cela forcera WordPress à remplacer le modèle de page par son modèle parent lors de l'enregistrement.
Non testé mais devrait fonctionner.
Une petite correction à la solution de Max Yudin:
add_action('save_post','changeTemplateOnSave');
function changeTemplateOnSave(){
global $post;
$curr_tmp = get_post_meta($post->ID, '_wp_page_template', true);
if($post->post_parent){
$parent_tmp = get_post_meta($post->post_parent, '_wp_page_template', true);
update_post_meta($post->ID,'_wp_page_template',$parent_tmp,$curr_tmp);
}
}
Encore une petite correction si vous vous souciez des avertissements php en arrière-plan.
Lors de la création d'un nouvel article/d'une nouvelle page, l'avis suivant était en cours d'affichage.
Remarque: tentative d'obtention d'une propriété d'erreur non-objet
Corrigé ceci en s'assurant que $ post existe ou n'est pas vide.
add_action('save_post','changeTemplateOnSave');
if ( ! function_exists( 'changeTemplateOnSave' ) ) {
function changeTemplateOnSave() {
global $post;
if ($post) {
$curr_tmp = get_post_meta( $post->ID, '_wp_page_template', true );
if ( $post->post_parent ) {
$parent_tmp = get_post_meta( $post->post_parent, '_wp_page_template', true );
update_post_meta( $post->ID, '_wp_page_template', $parent_tmp, $curr_tmp );
}
}
}
}