Як правильно включити ефекти jquery-ui на wordpress


25

Я намагався включити jquery ui ефекти (точніше ефект тремтіння) на свою тему wordpress. Поки що я міг включити лише сценарій jQuery, але в мене справді немає поняття, де розмістити сценарії ui та як їх запхнути.

Це код, який у мене є. Це, очевидно, не працює:

    <?php wp_enqueue_script("jquery"); ?>
<?php wp_enqueue_script("jquery-ui-core"); ?>
<?php wp_head(); ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_url'); ?>" />
<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
        $j("#manita-imagen").mouseover(function(){
            //$j(this).animate({ opacity: "hide" })
            // alert('asd');
            $j(this).effect("shake", { times:3 }, 300);
        });
    });

 </script>

Спасибі за вашу допомогу!


5
Одне зауваження: вам не потрібно запускати jquery, тому що його вже вказано як залежність jquery-ui-core.
goldenapples

Відповіді:


36

У той час як WordPress включає бібліотеки інтерфейсу jQuery, він не включає бібліотеку UI / Effects. Ця бібліотека є окремою та окремою. Вам потрібно буде включити копію файлу Effects.core.js і запустити її окремо.

Зауважте, що вам слід назвати його jquery-effects-core, коли ви ставите його в чергу, для іменування послідовності.

Ви можете включити його так:

wp_enqueue_script("jquery-effects-core",'http://example.com/whatever/effects.core.js', array('jquery'), '1.8.8');

Редагувати : Ця відповідь була написана перед WordPress 3.3, який тепер включає різні бібліотеки ефектів як частину ядра. Ви можете просто привласнити фрагменти бібліотеки ефектів, які вам зараз потрібно використовувати.

Список слижів для цих файлів можна знайти в wp-include / script-loader.php, але ядром слугу є jquery-effects-core.

wp_enqueue_script("jquery-effects-core");

1
Будьте в курсі, що для дійсного ефекту (сліпий, відскоклий, зникаючий, ..) вам слід явно впливати на цей ефект. Як для 'fade':wp_enqueue_script( 'jquery-effects-fade' );
SunnyRed

Користувач повинен розмістити свій власний Javascript у окремому файлі, а потім запустити цей файл і перерахувати необхідні йому залежності. Таким чином, WordPress (та плагіни продуктивності) знають порядок, необхідний для завантаження цих сценаріїв, і розмістять їх у правильному порядку на сторінці.
Дейв Хілдіч

8

@dabito,

Ви не завантажуєте свої сценарії правильно ... Не дзвоніть wp_enqueue_script()у файл шаблону теми (це виглядає так header.php). Цю функцію потрібно викликати з окремого гачка.

У functions.phpфайлі теми розмістіть такий код:

function my_add_frontend_scripts() {
        wp_enqueue_script('jquery');
        wp_enqueue_script('jquery-ui-core');
}
add_action('wp_enqueue_scripts', 'my_add_frontend_scripts');

Якщо обидва сценарії зареєстровані належним чином, це повинно завантажувати їх просто добре (додавши відповідні <script />теги в заголовок. Тоді ваш інший код JavaScript повинен працювати.

Якщо ви хочете додати сценарії до адміністративної сторони речей, admin_enqueue_scriptsзамість цього додайте свої дії .


1
Не зовсім правда. Поки він телефонує їм до виклику wp_head (), це повинно працювати добре. Вони не повинні бути зачеплені, і все одно їх не слід зачепити. Якщо ви збираєтесь зачепити їх кудись, підключіть їх до гачка дій 'wp_enqueue_scripts'. Ось для чого це.
Отто

1
@Otto Те, що ви сказали, звучить логічно. Але чи є у вас пояснення, чому в кодексі написано те, що написав @EAMann - "Використовуйте дію init для виклику цієї функції". І його приклад взято звідти ... codex.wordpress.org/Function_Reference/wp_enqueue_script
Леа Коен

Кодекс місцями є випадковим. Найкраща дія для цього - 'wp_enqueue_scripts' для переднього кінця, або 'admin_enqueue_scripts' на задньому. Підключення до init спрацює, але це зайве зачеплення сценарію на всьому сайті.
Отто

Я відповідно оновив свій фрагмент коду. Спочатку це була швидка, кишкова реакція, заснована на довідці Кодексу ... використання wp_enqueue_scripts, безумовно, кращий спосіб піти і уникає необхідності додаткової is_admin()перевірки.
EAMann

Це також неправильний спосіб - плагіни продуктивності повинні знати залежності. Автор повинен написати власний .js-файл і переписати його та назвати залежності - WordPress буде працювати з рештою.
Дейв Хілдич

7

Ви також можете передавати весь інтерфейс jQuery безпосередньо від Google. Ось як я це роблю:

wp_enqueue_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js', array('jquery'), '1.8.6');

А оскільки jQuery вказаний як залежність для інтерфейсу jQuery, вам не потрібно його вручну запускати. WordPress зробить це автоматично для вас.


3
Ви навіть можете завантажити всі бібліотеки jQuery з CDN Google замість власного сайту.
Ян Фабрі

Я б дуже не відштовхувався від завантаження сценаріїв з іноземних джерел. Я робив це досить давно, і траплялося (рідко), що хост був знищений, тому у багатьох клієнтів виникли проблеми зі своїми сторінками відразу.
Джуліан Ф. Вайнерт

1
@ JulianF.Weinert це меч з двома краями, з хорошим cdn означає нижчу затримку, але відсутність контролю, якщо він не вдається. Однак, якщо Google cdn знизиться, половина Інтернету вийде з ладу, тож ваш не буде єдиним. Шанси, що він буде знищений і не кешований у веб-переглядачі користувачів, невеликі. Для більшості ситуацій використання cdn - це користь.
Алекс

Правда. Я не говорив про повноцінний CDN, що, звичайно, тут було б абсолютно добре, оскільки він розроблений саме для цього використання. Завантаження сценаріїв з будь-якого сайту john-doe.com є дещо ризикованим, я думаю
Julian F. Weinert

3

Здається, що для цієї бібліотеки jQuery не існує завантаження за замовчуванням (повний список тут ), тому, ймовірно, доведеться зареєструвати скрипт, перш ніж запустити його.


1
Я подумав, що ти можеш мати рацію (іноді імена WP реєструє сценарії під різними, ніж стандартні імена), але в цьому випадку реєстрація 'jquery-ui-core' повинна працювати. Його вказано в core.trac.wordpress.org/browser/branches/3.0/wp-includes/…
goldenapples

Влучне зауваження! Я припускав, що він хоче завантажити лише цю бібліотеку jQuery, і в такому випадку завантаження решти буде трохи кричущою.
редактор

3

Лише невеликі поради. Коли ви додаєте свій скрипт, він охоплює весь сайт, включаючи панель адміністратора. Якщо ви не хочете, щоб скрипт на панелі адміністратора, ви можете включити їх лише для веб-сайту у передній частині.

function my_add_frontend_scripts() {
    wp_enqueue_script('jquery');
    wp_enqueue_script('jquery-ui-core');
}

add_action( 'wp_enqueue_scripts', 'my_add_frontend_scripts');

4
Не слід використовувати гачок init для зачісування. Використовуйте гачок wp_enqueue_scripts лише для переднього кінця або гачок admin_enqueue_scripts для заднього кінця.
Отто

Не знав, що wp_enqueue_scriptsдія лише для переднього кінця. Дякую :)
Tareq

0

Усі відповіді, хоча вони працюють, технічно невірні.

Правильний спосіб включення jquery-ui та інших бібліотек - це включення їх як залежностей від вашого власного сценарію.

Це важливо, оскільки інструменти продуктивності можуть перевірити ці залежності, щоб змінити порядок завантаження сценаріїв для оптимізації сайту.

Отже, якщо ви хочете використовувати jquery та jquery-ui, створіть свій власний файл сценарію .js і додайте його так, з переліченими залежностями - не потрібно окремої команди enqueue для кожної бібліотеки, яку ви використовуєте:

wp_enqueue_script('your-script-handle', 
 plugins_url('your-script-file.js', __FILE__), 
 array('jquery', 'jquery-effects-core', 'jquery-ui-core')
);

Ви можете знайти список усіх доступних сценаріїв, які можна додати як залежність тут: https://developer.wordpress.org/reference/functions/wp_enqueue_script/


1
Ви маєте це право. Використання залежностей у власних викликах wp_enqueue_script є правильним способом включення jquery / jquery-ui / тощо. Немає необхідності їх піддавати окремо.
Michae Pavlos Michael

І якщо ви запускаєте їх окремо, коли ваш скрипт залежить від них, ваш сценарій може / порушиться на сайтах, що оптимізують продуктивність - наприклад, якщо сценарії поєднуються в один сценарій для прискорення завантаження, або якщо вони відкладені або мінімізовані (залежить від мініфкації, але порядок може змінюватися). Якщо ви не сказали WordPress, що ваш скрипт залежить від інших сценаріїв, ви не можете гарантувати порядок завантаження.
Дейв Хілдич
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.