Почему не нужно вставлять полные URL-ы в коде, и какие функции WordPress лучше использовать для этого

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

Но в данных случаях не следует использовать URL таким же образом, что и на статическом веб-сайте. Не следует вставлять полные ссылки в программный код, которые начинаются с http://. И из сегодняшнего руководства вы узнаете почему, а также узнаете, какие возможности лучше для этого использовать.

Смотрите также:

  • Советы для начинающих разработку веб-сайта на WordPress
  • Куда вставлять этот код в WordPress? Общая структура файлов темы
  • WordPress Codex — ценный помощник разработчика
  • Как обновить URL-ы при переносе WordPress-сайта
  • Перенос WordPress-сайта с сохранением параметров и URL’ов на новый сервер

Почему не необходимо использовать прямые 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( ‘/’)); с завершающим слэшем. В этом случае нужны два параметры: $path, если необходимо добавить ссылку на указанную страницу или добавить завершающий слеш, а также $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=»<?php echo get_stylesheet_directory_uri();?>/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. При помощи нижеприведенной возможности можно легко сделать это в плагине:

<?phpfunction 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *