web-dev-qa-db-ja.com

子テーマにjqueryスクリプトがエンキューされていない

次の問題について、ここで少し洞察が必要ですか。次のように拡張しようとしている 'test_child'という名前の子テーマを作成しました。

これは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' );

?>

次に、これが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

Test_child/header.phpの中に、私はどこかの行を見ることができます:

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

私は「本によって」それをやっていると思います(そして私は他の似たような質問を勉強しました)。

あなたは新しい一組の目を貸してもらえますか。

4
Mpampirina

私が対処したい質問には2つの部分があります。

  1. アクションが複数形のフォームを使用しているのでうまくいきませんでした:wp_enqueue_scriptsではなくwp_enqueue_script。私はこれが起こったと思います、なぜならあなたがここで使用しなければならない関数が - wp_enqueue_script() - しない単数形を使用します)。

  2. 関数wp_enqueue_script()をそれほど多くのパラメータと一緒に使用しないでください。

    登録 スクリプトを早く、 エンキュー 遅く。

    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' );
    

    その理由は柔軟性です。 4 エンキューアクションがあります。

    • wp_enqueue_scripts
    • admin_enqueue_scripts
    • customize_controls_enqueue_scripts
    • login_enqueue_scripts

    スクリプトを早めに登録すると、あなたや他の誰かが他のアクションの一つでそれをエンキューすることができ、 衝突を避けることができます となります。 jQueryアドオンの命名規則 についてはこちらのスレッドも参照してください。

3
fuxia

get_stylesheet_directory_uri()は、現在の子テーマディレクトリuriを開きます。したがって、子テーマであるため、指定されたファイルは取得されません。

ファイルを取得するにはget_template_directory_uri()を使用してディレクトリパスを取得します。これにより、style.cssで指定したテンプレートディレクトリが取得されます。

Template:your_parent_theme_folder_name
0
Prashant Jain