logo blackCitron Noir
Contact

Sélection du template Oxygen builder avec Meta Box

Ce Snippet permet la synchronisation dynamique des templates d'Oxygen Builder avec Metabox, permettant aux utilisateurs de sélectionner et d'appliquer les templates Oxygen depuis une liste Metabox. Cela est particulièrement utile pour laisser la possibilité au rôle "editeur" de choisir le template, sans accéder à Oxygen Builder.

Partager : 

Code personnalisé

Conseil : Ajouter ce code personnalisé à l'aide du plugin Code Snippet

// Synchroniser la sélection du template Oxygen dans la metabox Metabox
add_filter( 'rwmb_meta_boxes', 'cn_register_oxygen_templates_dropdown' );
function cn_register_oxygen_templates_dropdown( $meta_boxes ) {
    $meta_boxes[] = array(
        'title'      => 'Changer de Template - Citron Noir',
        'post_types' => 'page',  // Modifier si nécessaire
        'fields'     => array(
            array(
                'id'          => 'oxygen_template',
                'name'        => 'Template Oxygen',
                'type'        => 'select',
                'options'     => cn_get_oxygen_templates(),
                'std'         => cn_get_current_oxygen_template(),
            ),
        ),
    );

    return $meta_boxes;
}

function cn_get_current_oxygen_template() {
    global $post;
    // Utiliser la clé 'ct_other_template' pour lire la sélection actuelle
    $current_template = get_post_meta( $post->ID, 'ct_other_template', true );
    return $current_template ? $current_template : '';
}

function cn_get_oxygen_templates() {
    $options = array(
        '' => 'Site par défaut', // Cette option permet de respecter le comportement par défaut d'Oxygen lors de la création d'une nouvelle page
    );
    $args = array(
        'post_type'      => 'ct_template',
        'posts_per_page' => -1,
    );
    $templates = get_posts($args);
    foreach ($templates as $template) {
        $options[$template->ID] = $template->post_title;
    }
    return $options;
}

add_action( 'save_post', 'cn_apply_oxygen_template_selection' );
function cn_apply_oxygen_template_selection( $post_id ) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    // Vérifiez si 'Site Default' est sélectionné et ignorez si c'est le cas
    if (isset($_POST['oxygen_template']) && $_POST['oxygen_template'] !== '') {
        // Mettre à jour la métadonnée 'ct_other_template' avec la nouvelle sélection
        update_post_meta($post_id, 'ct_other_template', $_POST['oxygen_template']);
    }
}

Explications du snippet : Synchroniser le choix du template d'Oxygen Builder avec Meta Box


Ce Snippet permet la synchronisation dynamique des templates Oxygen au sein d'une liste déroulante personnalisée Metabox, offrant aux utilisateurs la possibilité de sélectionner et d'appliquer différents templates Oxygen aux pages directement depuis l'administration WordPress.

  • La fonction register_oxygen_templates_dropdown : Ajoute une liste déroulante Metabox personnalisée dans l'administration WordPress pour la sélection des templates Oxygen, pré-remplie avec le template actuel et une liste de tous les templates Oxygen disponibles.
  • La fonction get_current_oxygen_template : Récupère le template Oxygen actuellement appliqué au post, assurant que la liste déroulante Metabox reflète avec précision l'état actuel du post.
  • La fonction get_oxygen_templates : Compile une liste de tous les templates Oxygen disponibles, fournissant les données nécessaires pour remplir la liste déroulante Metabox.
  • La fonction apply_oxygen_template_selection : Met à jour le template Oxygen du post en fonction de la sélection de l'utilisateur dans la liste déroulante Metabox, garantissant que le template choisi est appliqué au post.

Remarques :

  • L'option "site par défaut" permet de laisser la priorité du template d'Oxygen Builder lors de la création d'une nouvelle page
  • Il est possible d'ajouter des conditions de type 'allcaps' et 'caps' pour afficher la metabox selon le rôle de l'utilisateur. OU d'accorder l'accès à tous les utilisateurs mais de bloquer l'accès à Oxygen builder depuis Oxygen > Settings > Client Controle

Les autres Snippets