Как правильно инициализировать Fancybox в WordPress с помощью отдельного файла. js? - PullRequest
0 голосов
/ 07 мая 2020

Я провел поиск и нашел этот метод здесь с использованием wp_add_inline_script. И это работает.

Но что, если бы я хотел сохранить свой сценарий инициализации в другом. js файле? Это то, чего я хотел сначала. Как я могу правильно загрузить? Я пробовал это, но загрузка моего init-fancybox должна быть слишком ранней, потому что я получаю сообщение об ошибке.

(мой init-fancybox скрипт не является проблемой, потому что он работает, когда он загружен правильно, используя wp_add_inline_script)

function fancybox_enqueues() { 

    wp_register_script( 'fancybox', get_theme_file_uri( '/assets/js/jquery.fancybox.min.js' ), array('jquery'), '3.5.7', true);
    wp_register_script( 'init-fancybox', get_theme_file_uri( '/assets/js/init-fancybox.js' ), array('jquery','fancybox'), '1.0', true);
    wp_register_style( 'fancybox-css', get_theme_file_uri( '/css/jquery.fancybox.min.css' ), '1.0');

    if ( is_singular( 'item' ) ) {
        wp_enqueue_script( 'jquery');
        wp_enqueue_script( 'fancybox' );
        wp_enqueue_script ('init-fancybox');
        wp_enqueue_style( 'fancybox-css' );
    }
}
add_action( 'wp_enqueue_scripts', 'fancybox_enqueues');

Вот ошибка, которую я получаю TypeError: $ is not a function

А вот init-fancybox. js

$('[data-fancybox="single-item__gallery"]').fancybox({
    buttons : [ 
        "zoom",
        "share",
        //"slideShow",
        "fullScreen",
        //"download",
        "thumbs",
        "close"
    ],
    thumbs : {
      autoStart : false
    }
  });

1 Ответ

0 голосов
/ 07 мая 2020

Кажется, что jQuery не загружается к моменту выполнения вашего кода. Попробуйте добавить вокруг него следующую функцию, чтобы убедиться, что jQuery существует до запуска вашего кода:

jQuery(document).ready(function ($) {

  // Your function goes here:
  $('[data-fancybox="single-item__gallery"]').fancybox({
    buttons: [
      "zoom",
      "share",
      //"slideShow",
      "fullScreen",
      //"download",
      "thumbs",
      "close"
    ],
    thumbs: {
      autoStart: false
    }
  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...