Intereting Posts
Сообщение как кто-то еще Объединить / объединить две функции php для предыдущей и следующей ссылки с миниатюрой С каких причин можно условно добавлять действия? Как изменить заголовок элементов RSS-фида? Добавление короткого кода для обмена сообщениями «paypal accept payment» в моем пользовательском типе почтового типа Получить значение по умолчанию для параметра Customizer с помощью wp.customize API (JS) проверьте наличие короткого кода в сообщениях / страницах И виджетах И файлы шаблонов Многопользовательские сообщения администратора и администратора сети Установить порядок возвращаемых элементов в классе / функции WP_Query () Получать сообщения, связанные с пользовательской таксономией, альтернативно Помощь с MySQL в $ WPDB-запрос Возврат к эхо-короткому коду Добавление описания видео аналогично заголовку изображения В jquery используйте переменную php для выполнения файла enqueued jquery Автоматизация процесса генерации короткого кода в плагине – как это делается?

Хаос в скрипте WordPress Enqueue (jQuery & Foundation.js)

Я уже работаю над созданием темы за последние пару дней, и я столкнулся с стеной. Хотя я изначально включал файл foundation.js в качестве установленного сценария, я не мог вспомнить, почему я его добавил. Сегодня, когда я попытался удалить его (чтобы повысить скорость загрузки страницы) из моего файла functions.php, он испортил все мои плагины jQuery.

После некоторых исследований я обнаружил, что в Foundation уже включен jQuery, поэтому я загружал сразу два экземпляра (я также загружался из папки js темы). Итак, теперь, когда я удалил основание, мои команды файла custom.js не работают, если я не добавлю «jQuery» вместо более простого «$».

Я думаю, что есть часть моей установки WordPress, в которой я сделал ошибку, даже если я сохраняю ссылку на название «Foundation» с ранее выписанным jQuery файлом, тема работает. Это похоже на то, что это имя «Фонда».

Ниже я включил как мои вызовы сценариев, так и мой пользовательский файл js, в надежде, что кто-то сможет мне помочь в диагностике этой проблемы.

Ссылки:

– Сообщение об ошибке консоли Chrome

– показанные загрузки jQuery и плагинов в консоли Chrome

SCRIPT CALLS:

function register_js() { if (!is_admin()) { wp_deregister_script('jquery'); wp_deregister_script('foundation'); wp_register_script('jquery', get_template_directory_uri() . '/js/libraries/jquery-1.7.1.min.js'); wp_register_script('jquery-ui', get_template_directory_uri() . '/js/libraries/jquery-ui-1.8.16.min.js', 'jquery'); wp_register_script('superfish', get_template_directory_uri() . '/js/plugins/jquery.superfish.js', 'jquery'); wp_register_script('supersubs', get_template_directory_uri() . '/js/plugins/jquery.supersubs.js', 'jquery'); //wp_register_script('foundation', get_template_directory_uri() . '/js/plugins/jquery.foundation.js', 'jquery'); wp_register_script('custom', get_template_directory_uri() . '/js/custom.js', array('jquery','jquery-ui') ); wp_enqueue_script('jquery'); wp_enqueue_script('jquery-ui'); wp_enqueue_script('superfish'); wp_enqueue_script('supersubs'); //wp_enqueue_script('foundation'); wp_enqueue_script('custom'); } } add_action('init', 'register_js'); 

CUSTOM JS FILE:

 $(document).ready(function() { /* Menu - Superfish */ $('ul.menu').supersubs({ minWidth: 11, maxWidth: 30, extraWidth: 1 }).superfish({ hoverClass: "sfHover", speed: 'fast', dropShadows: false, delay: 0, autoArrows: false, animation: {height:'show',opacity:'show'} }); /* Blog Tabs */ $('#tab_controls').tabs({ fx: [ {opacity:'toggle', duration:'normal'},{opacity:'toggle', duration:'slow'}] }); }); 

Попробуйте изменить первую строку своего пользовательского JS-файла.

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

jQuery, работающий в WordPress, должен запускаться в режиме совместимости. Эта линия позволяет это, как в пункте № 5 здесь .

Во-первых, если ваша тема предназначена для публичного распространения, не отменяйте регистрацию сценариев , связанных с ядром, и замените их на свой собственный . Это включает jQuery, jQuery UI и несколько других скриптов .

Во-вторых, да: WordPress работает с jQuery no-conflict, что означает, что вы должны учитывать отсутствие конфликтов в своих сценариях. Метод, рекомендованный Кодексом, приведен здесь :

 jQuery(document).ready(function($) { // $() will work as an alias for jQuery() inside of this function }); 

Эти два, вероятно, не имеют ничего общего с вашими проблемами, но это лучшая практика:

  1. Если вы вызываете как wp_register_script() и wp_enqueue_script() в том же контексте / функции, просто опустите wp_register_script() и используйте wp_enqueue_script() .
  2. wp_enqueue_scripts в wp_enqueue_scripts , а не init .