web-dev-qa-db-fra.com

script jQuery non mis en file d'attente dans le thème de l'enfant

J'ai besoin d'un peu de perspicacité ici avec le problème suivant? J'ai créé un thème enfant appelé 'test_child' que j'essaie d'étendre de la manière suivante:

Voici le fichier test_child/functions.php:

<?php

function load_flaticon() {
    wp_enqueue_script(
            'flaticon', get_stylesheet_directory_uri() . '/js/flaticon.js', array('jquery')
    );
}
add_action( 'wp_enqueue_script', 'load_flaticon' );

?>

Ensuite, voici le fichier test_child/js/flaticon.js:

jQuery(document).ready(function($) {
    $("a[href$='.pdf']").addClass('flaticon-pdf19');
    $("a[href$='.ppt']").addClass('flaticon-ppt');
    $("a[href$='.pptx']").addClass('flaticon-pptx2');
    $("a[href$='.doc']").addClass('flaticon-doc2'); 
    $("a[href$='.docx']").addClass('flaticon-docx'); 
    $("a[href$='.xls']").addClass('flaticon-xls1');
    $("a[href$='.xlsx']").addClass('flaticon-xlsx');  
});
// by the way have already tried the " .ready(function() { " version

À l'intérieur de test_child/header.php, je peux voir quelque part la ligne:

<!-- wp_head() -->
<?php wp_head();?>

Je crois que je le fais "à la livre" (et j'ai étudié d'autres questions similaires), mais encore une fois, il doit y avoir quelque chose qui me manque, car le script n'est pas mis en file d'attente après tout ...

Pourriez-vous s'il vous plaît prêter une nouvelle paire d'yeux?

4
Mpampirina

Je veux aborder la question en deux parties:

  1. Cela n’a pas fonctionné car l’action utilise une forme plurielle: wp_enqueue_scripts, pas wp_enqueue_script. Je suppose que cela s’est produit, car la fonction que vous devez utiliser ici - wp_enqueue_script() - fait utilise un singulier.

  2. Vous ne devez pas utiliser la fonction wp_enqueue_script() avec autant de paramètres.

    Inscrivez-vous vos scripts au début, mettez en file d'attente les en retard.

    function register_flaticon() {
        wp_register_script(
            'flaticon',
            get_stylesheet_directory_uri() . '/js/flaticon.js',
            array('jquery')
        );
    }
    function enqueue_flaticon() {
        wp_enqueue_script( 'flaticon' );
    }
    
    add_action( 'wp_loaded',          'register_flaticon' );
    add_action( 'wp_enqueue_scripts', 'enqueue_flaticon' );
    

    La raison en est la flexibilité. Il y a quatre actions de mise en file d'attente:

    • wp_enqueue_scripts
    • admin_enqueue_scripts
    • customize_controls_enqueue_scripts
    • login_enqueue_scripts

    Si vous enregistrez votre script suffisamment tôt, vous ou une autre personne pouvez le mettre en file d'attente puis sur l'une des autres actions. Collisions peut être évité , car WordPress n'enregistrera pas un script avec le même descripteur deux fois. Voir aussi ce fil sur la convention de nommage pour les addons jQuery .

3
fuxia

get_stylesheet_directory_uri() ouvrira le répertoire de thème enfant actuel, URI. Par conséquent, il n'obtiendra pas le fichier spécifié car il s'agit d'un thème enfant.

Pour obtenir le fichier, utilisez get_template_directory_uri() pour obtenir le chemin du répertoire. Le répertoire de modèle que vous avez spécifié dans style.css est indiqué ci-dessous.

Template:your_parent_theme_folder_name
0
Prashant Jain