web-dev-qa-db-fra.com

Option de backend pour inclure un fichier javascript sur des pages spécifiques?

Je travaille sur un modèle que mes collègues utiliseront pour alimenter le contenu. Sur certaines pages, il y aura un ou plusieurs curseurs, mais sur d'autres, il n'y en aura pas. Pour cette raison, je voudrais créer une option (peut-être une case à cocher ou quelque chose) dans le backend Pages qui leur permettra d'inclure le script de curseur si nécessaire.

Je ne pouvais mettre le script en file d'attente que sur des identifiants de page spécifiques, mais comme ils créeraient bon nombre de ces pages, je préférerais un moyen automatisé d'inclure le code JavaScript au lieu de devoir entrer et ajouter de nouveaux identifiants de page à chaque fois. ils font une nouvelle page qui utilise le Javascript.

De plus, j'aimerais utiliser un seul modèle de page si possible.

Quelle serait la meilleure façon de s'y prendre?

Merci!

2
APAD1

La meilleure façon de procéder consiste à ajouter une méta-boîte au tableau de bord Ajouter/Modifier une page.

Ensuite, lors de la mise en file d'attente des scripts, vous pouvez vérifier les métadonnées de cette publication. S'il est défini, mettez le script en file d'attente.

NOTE: Il y a beaucoup de pièces en mouvement ici. Je vais essayer de le décomposer en morceaux digérables.

Exemple de code. Remarque - vous devrez insérer dans functions.php et modifier votre thème spécifique:

Premièrement, enregistrons la metabox pour qu'elle apparaisse

function slider_script_add_meta_box() {
    add_meta_box(
        'do_script_sectionid',
        'Include Slider Script',
        'slider_script_meta_box',
        'page'
    );
}

add_action( 'add_meta_boxes', 'slider_script_add_meta_box' );

Maintenant, affichons l'option metabox

function slider_script_meta_box( $post ) {
    // Add an nonce field so we can check for it later.
    wp_nonce_field( 'slider_script_action_name', 'slider_script_meta_box_nonce' );
    // Get existing value if set
    $value = get_post_meta( $post->ID, '_do_slider_script', true );
    $checked = ($value) ? ' checked' : '';
    echo '<label for="myplugin_new_field">';
    echo 'Include Slider Script:';
    echo '</label> ';
    echo '<input type="checkbox" id="do_slider_script" name="do_slider_script"' . $checked . ' />';
} 

Ensuite, liez la sauvegarde de la page pour vous assurer que les données sont enregistrées

function myplugin_save_meta_box_data( $post_id ) {
    // Check if our nonce is set and verifies.
    if ( ! isset( $_POST['slider_script_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['slider_script_meta_box_nonce'], 'slider_script_action_name' ) ) {
        return;
    }

    // If this is an autosave, our form has not been submitted, so we don't want to do anything.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
            return;
    }

    // Check the user's permissions.
    if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
        if ( ! current_user_can( 'edit_page', $post_id ) ) {
            return;
        }
    }

    // Finally! Safe for us to save the data now.
    // Sanitize user input.
    $do_script = (isset($_POST['do_slider_script'])) ? 1 : 0;
    // Update the meta field in the database.
    update_post_meta( $post_id, '_do_slider_script', $do_script );
}

add_action( 'save_post', 'myplugin_save_meta_box_data' );

FINALEMENT, ajoutez cette section pour réellement enregistrer/mettre en file d'attente votre script sur les pages appropriées

function enqueue_slider_scripts() {
    global $post;
    $do_script = get_post_meta($post->ID, '_do_slider_script', true);
    if ($do_script) {
        // Alter the path to your script as needed
        wp_enqueue_script('slider_script', get_template_directory_uri() . '/js/example.js');
    }
}

add_action( 'wp_enqueue_scripts', 'enqueue_slider_scripts' );

Encore une fois , tous ces éléments peuvent être collés dans votre fichier functions.php. Alternativement, une manière plus organisée serait de créer un nouveau fichier php dans votre dossier de thèmes et de l'inclure dans le fichier de fonctions. Cela vous permettrait de donner un nom significatif au fichier et de conserver le code "organisé" dans des groupes liés.

3
cale_b