Я создал дочерний элемент темы WordPress, и теперь я пытаюсь вставить собственный JavaScript на домашнюю страницу, изменив functions.php дочернего элемента. Однако мой сценарий не загружается, и я не знаю почему. Я вставил операторы echo в код php, и кажется, что

add_action( 'wp_enque_scripts', 'video_bg', 10);

Не может позвонить

video_bg()

Вот functions.php моего ребенка:

<?php


add_action( 'after_setup_theme', 'post_theme_setup' );

if ( !function_exists( 'post_theme_setup' )):
function post_theme_setup(){

    function video_bg() {
        wp_enque_script( 'myVideo', get_stylesheet_directory_uri() . '/JS/filmScript.js', array('jquery'), '1.0.0', false );
        echo '<script>console.log("Script added?")</script>';
    }

    add_action( 'wp_enque_scripts', 'video_bg', 10);
    echo '<script>console.log("Loop Entered")</script>';

}
endif;

И вот что мне говорит консоль:

Loop Entered                                      (index):1 
JQMIGRATE: Migrate is installed, version 1.4.1    jquery-migrate.min.js?ver=1.4.1&nocache=1:2 

Может ли кто-нибудь сказать мне, почему video_bg () никогда не вызывается? Или проблема в другом?

0
Enmerkar 25 Ноя 2017 в 09:22

1 ответ

Лучший ответ

Если функция не вызывается при добавлении некоторого add_action, есть 2 возможных случая: 1. Вы ввели неправильное имя действия / фильтра. 2. Ваша загруженная страница не запускает эту ловушку.

В этом случае вы сделали первое. Не существует ловушки wp_enque_scripts, нет функции wp_enque_scripts. Измените их на wp_enqueue_scripts.

add_action( 'wp_enqueue_scripts', 'video_bg', 10);
add_action( 'after_setup_theme', 'post_theme_setup' );

if ( !function_exists( 'post_theme_setup' )):
function post_theme_setup(){

    function video_bg() {
        wp_enqueue_scripts( 'myVideo', get_stylesheet_directory_uri() . '/JS/filmScript.js', array('jquery'), '1.0.0', false );
        echo '<script>console.log("Script added?")</script>';
    }

    add_action( 'wp_enqueue_scripts', 'video_bg', 10);
    echo '<script>console.log("Loop Entered")</script>';

}
endif;

Вы также можете оптимизировать свой код следующим образом:

add_action( 'after_setup_theme', 'post_theme_setup' );

if ( !function_exists( 'post_theme_setup' )):
function post_theme_setup(){
    add_action( 'wp_enqueue_scripts', 'video_bg', 10);
    echo '<script>console.log("Loop Entered")</script>';

}
endif;

  function video_bg() {
        wp_enqueue_scripts( 'myVideo', get_stylesheet_directory_uri() . '/JS/filmScript.js', array('jquery'), '1.0.0', false );
        echo '<script>console.log("Script added?")</script>';
    }
1
Elvin Haci 25 Ноя 2017 в 07:28