JS personnalisé pour chaque page ou article de WordPress

Parfois, il peut être nécessaire d’ajouter du javascript, JS, aux articles ou aux pages que vous publiez avec WordPress.
Les possibilités permettant cela sont multiples.

Il est possible d’ajouter cette portion de code dans le fichier functions.php de votre thème graphique. N’oubliez pas, lorsque vous changerez de thème, de modifier le fichier correspondant du thème nouvellement activé.

Cette fonctionnalité peut être implémentée avec Code Snippet.

//Custom JS Widget
add_action('admin_menu', 'custom_js_hooks');
add_action('save_post', 'save_custom_js');
add_action('wp_head','insert_custom_js');
function custom_js_hooks() {
    add_meta_box('custom_js', 'Custom JS', 'custom_js_input', 'post', 'normal', 'high');
    add_meta_box('custom_js', 'Custom JS', 'custom_js_input', 'page', 'normal', 'high');
}
function custom_js_input() {
    global $post;
    echo '<input type="hidden" name="custom_js_noncename" id="custom_js_noncename" value="'.wp_create_nonce('custom-js').'" />';
    echo '<textarea name="custom_js" id="custom_js" rows="5" cols="30" style="width:100%;">'.get_post_meta($post->ID,'_custom_js',true).'</textarea>';
}
function save_custom_js($post_id) {
    if (!wp_verify_nonce($_POST['custom_js_noncename'], 'custom-js')) return $post_id;
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
    $custom_js = $_POST['custom_js'];
    update_post_meta($post_id, '_custom_js', $custom_js);
}
function insert_custom_js() {
    if (is_page() || is_single()) {
        if (have_posts()) : while (have_posts()) : the_post();
            echo '<script type="text/javascript">'.get_post_meta(get_the_ID(), '_custom_js', true).'</script>';
        endwhile; endif;
        rewind_posts();
    }
}

Vous aurez alors, une nouvelle Méta Box située sous votre zone de rédaction de l’article, ou de la page, vous permettant d’ajouter du javascript à votre contenu.

L’origine de cette astuce : http://digwp.com/2010/02/custom-css-per-post/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *