Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
теми
Уроки
Хакі

У процесі розробки теми або плагіна часто потрібно додавати URL в код. Наприклад, у плагіні може знадобитися посилання таблицю, а темі – URL у хедері сайту.

Але в цих випадках не варто використовувати URL так само, як і на статичному сайті. Не варто вставляти повні посилання в код, який починається з http://. І з сьогоднішнього керівництва ви дізнаєтеся чому, а також дізнаєтеся, які функції краще використовувати для цього.

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Дивіться також:

Чому не потрібно використовувати прямі URL-адреси в темах і плагінах

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

  • для зміни адреси домену
  • для переміщення сайту після розробки на live-server
  • для релізу теми у публічному доступі або під час використання її іншими розробниками
  • при використанні теми як основа для іншої теми

Коли сайт знаходиться в піддиректорії кореневого каталогу, але WordPress використовує кореневу директорію для URL-адреси, то жорстко запрограмовані URL-адреси можуть вказувати на неправильне розташування. Якщо ж не редагувати адреси у вищевказаних випадках, посилання не працюватимуть.

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

Але знову таки, є ймовірність того, що посилання перетворяться на биті:

  • якщо плагін потрібно буде перенести в інший каталог, у цьому випадку будь-яке посилання перетвориться на биту
  • якщо плагін встановити на сайті, який знаходиться на мультисайтовій платформі та використовує стару версію WordPress
  • якщо плагін встановити на сайті, який використовує структуру директорій, відмінну від тієї, яку ви використовуєте для URL-адреси

Може статися так, що плагін взагалі перестане працювати.

Так що ж робити, щоб уникнути використання прямих URL-адрес на WordPress?

Функції, що замінюють вставку повних URL-адрес на WordPress

Існує досить багато функцій, які можна використовувати, щоб уникнути жорсткого використання URL-адрес на WordPress. Їх можна розподілити на п'ять категорій:

  • функції для отримання стартової сторінки сайту
  • функції для вилучення інших фронтенд посилань (включаючи записи, сторінки, вкладення та архіви)
  • функції для вилучення URL-адрес для панелі адміністратора
  • функції для вилучення URL-адрес для файлів у плагіні та директоріях тем
  • функції для вилучення CSS таблиць та JS скриптів

Почнемо з функцій для отримання посилання на стартову сторінку.

Вилучення URL-адреси домашньої сторінки

Наступні функції допоможуть отримати URL-адресу домашньої сторінки вашого сайту:

  • bloginfo( 'url' ) — відображає посилання на стартову сторінку, як зазначено у налаштуваннях адмінки
  • get_bloginfo( 'url' ) — витягує URL-адресу сайту без її відображення
  • home_url() - Витягує посилання на домашню сторінку без її відображення. Щоб відобразити її, використовуйте echo esc_url(home_url('/')); із завершальним слешем. В цьому випадку потрібні два параметри: $шлях, якщо потрібно додати посилання на вказану сторінку або додати завершальний слєш, а також $scheme для уточнення схеми URL-адреси (http, https та relative)
  • get_home_url() — Виймає URL-адресу домашньої сторінки та підтримує мультисайт: можна ввімкнути ID блогу як параметр.
  • site_url() - Вказує посилання на розташування сайту WordPress. Якщо ваша установка WordPress знаходиться в піддиректорії, посилання на нього буде виглядати наступним чином http://mysite.com/wordpress
  • get_site_url() - Витягує посилання на сайт, але не виводить її. Цей тег також може використовуватися з параметрами для виведення URL сайту на мультисайтовій платформі з використанням певної схеми
  • network_home_url() - Витягує посилання на основного сайту на мультисайтовій платформі. Функція буде корисна, якщо потрібно додати посилання до основного сайту у футер кожного сайту
  • network_site_url() — Витягує URL-адресу основного сайту в мультисайтовій мережі

Можна використовувати одну з цих функцій для отримання посилання на стартову сторінку в активній темі (або плагіні), наприклад, якщо логотип сайту веде на неї.

Вилучення інших URL з фронтенду

Крім посилань на стартову сторінку сайту, може виникнути необхідність закодувати посилання і на інші сторінки сайту. Наприклад, сторінки, записи, вкладення або типи постів користувача. Для цього варто використовувати такі функції:

  • post_permalink() — виводить посилання на запис із зазначенням ID сторінки як параметр
  • get_page_link() — витягує, але не виводить постійне посилання на сторінку з ID сторінки як параметр
  • get_category_link() — витягує посилання на архів категорії із зазначенням ID категорії як параметр
  • get_tag_link() — витягує URL-адресу на архівну сторінку тега разом з ID як параметр
  • get_post_type_archive_link() — витягує посилання на архів запису з типом посту як параметр
  • get_term_link() - Витягує посилання на таксономію термів і як параметр використовує таксономію
  • the_attachment_link() — виводить посилання на вкладення із зазначенням ID як параметр. Щоб визначити розмір зображення, і чи веде посилання сам файл чи сторінку вкладення, необхідно використовувати інші параметри
  • get_attachment_link() — витягує URL-адресу на медіа-вкладення, використовуючи ID вкладення як параметр
  • wp_get_attachment_link() — також витягує посилання на вкладення та додатково дозволяє вивести зображення у заданому розмірі, якщо вкладення є зображенням
  • get_search_link() - Витягує посилання на сторінку пошуку. Можна визначити запит як параметр, або залишити як є. Тоді буде використано поточний запит

Вилучення URL-адміністрації в адмін-частині

Під час створення плагіна або теми з панеллю керування в адмінці WordPress може знадобитися посилання на неї.

Знову ж таки, не потрібно використовувати повні URL, а краще використовувати одну з функцій:

  • admin_url() - Витягує (але не виводить) URL в адмінці. Потрібно вказати шлях до URL як параметра і за необхідності включити схему. Наприклад, щоб вивести на екран URL для створення нового запису, необхідно використовувати echo admin_url('post-new.php');
  • get_admin_url() - схожий на admin_url(), але підтримує мультисайти: можна вказати ID блогу як параметр
  • edit_post_link() — Показує посилання на редагування сторінки запису. Можна використовувати в циклі або поза циклом із зазначенням ID як параметр
  • get_edit_post_link() — Витягує URL-адресу для редагування запису, використовуючи ID запису як параметр

Вилучення URL-файлів у папках плагінів і тем

Розглянемо функції для файлів тим:

  • get_stylesheet_directory() - Витягує абсолютний шлях для активної директорії теми. Найчастіше використовується для увімкнення файлів, а не для виведення посилань.
  • get_stylesheet_directory_uri() — Виймає URL-адресу нещодавно активованої теми без завершального слеша. Він використовується у файлах шаблону для отримання ресурсів, що знаходяться в папці теми. Наприклад, щоб вивести зображення з папки теми, потрібно використовувати
    <img src=" /images/logo.jpg">
  • get_bloginfo( 'stylesheet_directory' ) — Виймає URL-адресу на нещодавно активовану тему. Найкраще використовувати get_stylesheet_directory_uri()
  • get_template_directory_uri() - схожий на get_stylesheet_directory_uri(), але при використанні дочірньої теми він витягне посилання на батьківську тему. Так само, get_template_directory() працює як get_stylesheet_directory(), але для батьківської теми

Також є функції, які можна використовувати у файлах плагінів:

  • plugins_url() - Витягує абсолютний нехай до директорії плагінів (без завершального слеша). Він включає два параметри: шлях для додавання після URL, а також плагін, на який має вести URL
  • plugin_dir_url() — витягує URL-адресу на файл, який знаходиться всередині директорії

Нижче наведено приклади кожного з них. Спочатку вилучаємо URL на файл у директорії плагіна:

plugins_url( 'includes/myfile.php', __FILE__ );

А щоб витягти цю ж URL-адресу, використовуючи plugin_dir_url():

plugin_dir_url( __FILE__ ). 'includes/myfile.php' ;

Зверніть увагу, що у другому прикладі слід повторити шлях після функції. І не забудьте, що другий повертає завершальний сліш, а перший ні.

Вилучення URL-ів CSS таблиць та JS скриптів

У жодному разі не можна використовувати прямі посилання для таблиць та скриптів у файлах або плагінах. Натомість потрібно використовувати функцію і прикріпити її до правильного хуку. Так можна уникнути проблем із перенесеними файлами та переконатися, що ви використовуєте правильні скрипти без дублікатів.

Щоб отримати посилання на таблицю стилів, потрібно використовувати wp_register_style() и wp_enqueue_style() у функції та прикріпити її до хука wp_enqueue_scripts. За допомогою наведеної нижче функції можна зробити це в плагіні:

<?php
function register_my_styles() {
    wp_register_style( 'my-styles', plugins_url( '/css/style.css', __FILE__ ) );
    wp_enqueue_style( 'my-plugin' );
}
add_action( 'wp_enqueue_scripts', 'register_my_styles' );
?>

Врахуйте, що тут використаний __FILE__. Це свідчить, що шлях до таблиці належить до поточного файлу.

Те саме і зі скриптом. Тільки у функції потрібно використовувати wp_register_script() и wp_enqueue_script (), і прикріпити їх до хука wp_enqueue_scripts. Це показано на прикладі нижче:

function register_my_scripts() {
    wp_register_script( 'my_script', plugins_url( '/js/script.js', __FILE__ ) );
    wp_enqueue_script( 'my_script' );
}
add_action( 'wp_enqueue_scripts', 'register_my_scripts' );

Якщо скрипт пов'язаний з WordPress, наприклад jQuery, то не потрібно його реєструвати, а залишити його наступним чином:

function register_my_scripts() {
    wp_enqueue_script( 'my_script', plugins_url( '/js/script.js', __FILE__ ), 'jquery', , 'true' );
}
add_action( 'wp_enqueue_scripts', 'register_my_scripts' );

Висновок

Сподіваємося, ми переконали вас не використовувати прямі URL-адреси на WordPress, оскільки це може погано закінчитися, та й не дуже ефективно. Натомість WordPress пропонує альтернативні функції для безпечного вилучення посилань на ту чи іншу сторінку сайту.

Джерело: code.tutsplus.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, який спеціалізується на створенні сайтів на WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 5

Олександр:

Доброго дня, підкажіть, не можу розібратися, активував мультисайт, потім створив дочірні сайти як підкатегорії:
site.ru/ua
site.ru/en
Але коли заходжу на сайт мене переадресовує на сайт зі слешем наприкінці
site.ru/ru/ site.ru/en/
Люди прямо вписують посилання site.ru/en і після цього переадресація їх перебирає на посилання зі слеш в кінці. Через це втрачається швидкість сайту, на pingdom затримка в 3-5 секунд. Допоможіть! Дякую.
ps Ваш сайт мій коханий

Олександр:

Вітаю! get_term_link() не працює. У чому може бути причина?

ildar r. khasanshin:

*Щоб отримати посилання на таблицю стилів, потрібно використовувати wp_register_style() та wp_enqueue_style() у функції та прикріпити її до хука wp_enqueue_scripts*

тут помилка наприкінці
д.б. wp_enqueue_style

Tuo_Max:

А як бути у такому разі із зверненнями до БД? Щоб зменшити кількість цих, якраз і використовуємо прямі посилання. Тільки в цьому випадку плагіни та теми оновлювати не можна.

Олександр:

Всі ці функції роблять запит до бд. Підключено у вас 30 скриптів та стилів через ці функції і буде 30 запитів до бд, хай і невеликих, але запитів. В окремих випадках це потрібно, але наприклад якщо у мене блог вже достатньо часу і домен не змінюю і навіщо мені тоді таке bloginfo('charset'), то запит до бд і таких валом. і на місце того можна без будь-яких запитів прописати utf-8. Від цих функцій позбавлятися потрібно, якщо в планах немає бажання змінювати домен. Та й взагалі, замість них моно прописати в окремому файлі, в тому ж конфізі, константи. І навіть якщо змінив домен, то просто заліз у свій файл із константами і поміняв урл. Можна зробити різні константи, для домашньої, для шаблону, для директорії плагінів і таке інше. Я завжди так роблю коли вже настрою сайт, стилі та код із шаблонами. Зручно та менше запитів до бд

Додати коментар або відгук