web-dev-qa-db-fra.com

Attribuer dynamiquement le même modèle de page à la page enfant en tant que parent

Comment affecter le modèle de page parent à ses pages enfants de manière dynamique?

3
Krishnendu

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.

1
Max Yudin

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);
    }
}
1
Reza Mamun

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 );
            }
        }
    }
}
0
Jared