Де є правильне місце для реєстрації / опитування сценаріїв та стилів


43

Я вже використовую WordPress 3.1.4. Мені плутають те, де (який гачок) я використовую:

  • зареєструватися та / або запитатись
  • сценарії та стилі
  • на передній і задній сторонах?

Запитання:

  • Які правильні гачки використовувати?
  • Всі сценарії / стилі реєстру / передбудови запису в init?
  • Чому немає admin_print_styles-{xxx}?

Відповіді:


62

Чому реєстрація та черга належним чином має значення

  • це має бути вчасно - раніше, ніж сценарій / стиль готовий для виведення на сторінку, інакше вже пізно;

  • це повинно бути умовно - інакше ви завантажуєте речі там, де вам це не потрібно, і спричиняєте проблеми з продуктивністю та функціональністю, для цього вам потрібне середовище WP, завантажене до пізньої стадії.

Три стадії процесу

  1. зареєструвати - це пояснює деталі WP про сценарій / стиль та змушує зберігати цю інформацію;

  2. enqueue - (часто згуртоване разом з реєстром в одному wp_enqueue_*()дзвінку) - це дозволяє WP додати скрипти / стиль до черги, відповідно до її налаштувань (залежності, завантаження колонтитулу / колонтитулу).

  3. print - це відбувається, коли WP обробляє чергу, намагається завантажити щось конкретне для себе або коли ви явно це робите з wp_print_*()функцією.

Фасадна структура функцій і гачків

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «Це те, що вам потрібно

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

Це йде набагато глибше, але це дуже просто і досить добре для важливих моментів:

  • wp_enqueue_scriptsє найбільш підходящим гаком для реєстрації та встановлення черги сценаріїв та стилів на передній частині, і саме там спеціально для цього;

  • initне має нічого спільного з цим, воно буде працювати, але - минула рекомендація Codex використовувати лише це було неправильно ;

  • ви можете піти зі скриптів черги (не стилів) для колонтитулу в будь-який момент перед wp_print_footer_scripts()викликом;

  • wp_print_*гачки НЕ підходять для реєстрації / черги , вони є пунктами коду, коли вихід вже відбувається. Вони підходять для виводу вручну / користувацького сценарію / стилю.

А що з адміністратором?

Ну, а функціонал там ще складніший, складніший і вкладений.

  • для початківців просто використовуйте admin_enqueue_scriptsгачок (він стає $hook_suffixглобальним для умовних речей ) для всього, це буде добре для більшості випадків;

  • коли вам потрібно щось складне - перегляньте admin-header.phpі звідти викопайте відповідні гачки.

Що з логіном?

Існує конкретний гак з назвою login_enqueue_scripts.


Хм в іншій відповіді на інше питання , мені було рекомендовано admin_print_scripts-{xxx}. Я виявив, що admin_print_scriptsназивався, але не з -{xxx}напр. -edit.phpнаприклад. Наскільки правильна відповідь на запитання admin_print_scripts-xxxі що ви рекомендуєте замість цього - припустимо, я хочу включити сценарії / стилі на сторінку користувальницького типу додавання / редагування (для метабокса)
JM на роботі

5
@JM на роботі, як вище моєї особистої думки - тримайтеся подалі від *print*гачків, якщо ви дійсно не знаєте, навіщо вони вам потрібні. І загалом вони для друку , а не черги . admin_enqueue_scriptsгаки проходять $hook_suffixзмінною, яка є такою ж, як і в тих динамічних гаках.
Рарст

$hook_suffixНа моєму сторінці портфоліо редагування виглядає як post.php, чому це? Я думав, що це було також edit.php, як я можу визначити, чи редагую / розміщую портфоліо та не є звичайною публікацією?
JM на роботі

@JM at Works чесно, що змінна дещо неприємна :) У власному плагіні з цим легше впоратися (повернення add_*_page()функції), але на рідних екранах WP це можуть бути різні речі.
Рарст

На жаль, коли я змінюю гачок з wp_footer на wp_enqueue_scripts або admin_print_scripts, CSS зникає і не з’являється ніде у вихідному коді. Це код, який я використовую: addgery ('wp_enqueue_scripts', 'addCSS'); Що НЕ працює, це НЕ працює надбудовою ('wp_enqueue_scripts', 'addCSS'); крім цього, очевидно, додає CSS до колонтитулу. Що я роблю неправильно?
Талон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.