Главная
Wordpress
Как получить ссылку на текущую страницу WordPress?
  • 71
  • 0
  • Рубрика: Wordpress

Как получить ссылку на текущую страницу WordPress?

ссылку на текущую страницу WordPress

Доброго времени суток. 🙂

Это небольшая статья об одном интересном моменте что относится к WordPress. Когда-то я задался вопросом о том как вывести в WordPress ссылку на текущую страницу. Казалось бы, простой вопрос для системы управления сайтом как WordPress, должно быть элементарно, но не все так просто. Сейчас рассмотрим вместе с вами, как это можно сделать используя разные варианты. Если честно, такой простой вопрос имеет традицию собирать вокруг себя шаманов с бубнами. Лично мне, не понятно почему до сих пор нет единой функции способно на то, чтобы вывести ссылку текущей страницы.

Кто то из вас, сразу же может возразить и вспомнить про функцию get_permalink(), ведь она как раз и выводит ссылку на текущую запись. Да вы правы, но в том и дело что она выводит только ссылку на запись, то бишь статью. Данная функция работает только внутри цикла записи, а значить страницы рубрики, главная, теги, архивы и тд отпадают. Нам же надо универсальная функция. Недавно я вновь столкнулся с этим вопросом, конечно же у меня были наработки, но хотелось проверить, есть ли новое решение этой задачи. Ниже я опишу все способы что я нашел, хороши ли они и каким пользуюсь я.

Проведя несколько часов в поисках и изучив данный вопрос повторно, оказалось что ничего так и не поменялось. Общего, наилучшего решения так и не было. Поэтому представляю вам то, что я нашел и мне понравилось. Начнем и с самого распространенного и довольно простого способа.

Способ №1 $_SERVER

В то место где должна появится ссылка в виде текста, просто добавьте такой код:

<?php echo bloginfo( 'url' ); echo $_SERVER['REQUEST_URI']; ?>

Он рассчитан на добавление в среду HTML, если же у вас PHP, то удалите теги PHP <?php ... ?>. Суть данного метода очень проста. Сначала мы вызываем функцию bloginfo, с параметром url - она выведет домен вашего сайта. Далее мы просто выводим массив $_SERVER, который и выводит остальной путь но без домена. В сумме эти два элемента и образовывают ссылку на текущую страницу.

Данный метод довольно прост, но используя его я обнаружил один момент, который заставил отказаться от этого способа. Если вы примените его на обычном сайте, то есть его домен будет http://site.com/ то все хорошо, но если, например у вас будет какой-то сайт, который будет расположен в папке расположенной на этом домене, то бишь путь будет, например http://site.com/sub/ то данный метод начнет ломать путь, потому как массиву $_SERVER все равно и он выводит путь исключая только домен, но не остальной путь. В итоге если ваш настоящий путь будет таким - http://site.com/sub/page.html, то данный способ выведет ссылку так - http://site.com/sub/sub/page.html. Думаю, вы поняли что в пути присутствует дублирование папки. В итоге если вы расположите какой-то тестовый сайт или еще что и попытаетесь воспользоваться данным методом. он вас подведет. Если это вам не помеха, то данный способ отлично подойдет.

Способ №2 функция

Второй способ, который мне понравился и я не нашел в нем явных проблем, это использование одной небольшой функции. Его суть проста, вам надо добавить код в файл пользовательских функций - function.php. Если не знакомы с этим файлом и не разбираетесь в его коде, то добавляете в самый конец перед закрывающим тегом PHP ?>. Если его нет, то просто в самый конец.

Перед изменением function.php, обязательно сохраните его копию, чтобы в дальнейшем, в случаи ошибки, вернуть все как было.

function page_current_url() {
	$current_url  = 'http';
	$server_https = $_SERVER["HTTPS"];
	$server_name  = $_SERVER["SERVER_NAME"];
	$server_port  = $_SERVER["SERVER_PORT"];
	$request_uri  = $_SERVER["REQUEST_URI"];
	if ($server_https == "on") $current_url .= "s";
	$current_url .= "://";
	if ($server_port != "80") $current_url .= $server_name . ":" . $server_port . $request_uri;
	else $current_url .= $server_name . $request_uri;
	return $current_url;
}

Далее в том месте где хотите увидеть ссылку в виде текста, просто вызовите функцию page_current_url(). Делается это так:

<?php echo page_current_url(); ?>

Способ рабочий, по своему интересный. Требует немного больше движений, но вполне заслуживает право на жизнь. Использовать ли его - решать вам.

Способ №3 add_query_arg

Данный способ очень часто встречается на просторах интернета, но я так и не понял почему его используют, потому как у меня он выводил совсем не то что мне нужно. Это не странно ибо он работает именно так, как он задуман, возможно его создателю нужно было так.

Его суть проста, добавляется в нужное для вас место небольшой код:

<?php			
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );
echo $current_url;
?>	

Сначала вызывается глобальная переменная, после создается новая переменная и выводится. Новая переменная задается функцией add_query_arg(). Данная функция добавляет заданные параметры GET запроса в текущий или указанный URL. В нашем случаи в текущий. Как вы понимаете тут есть текущая ссылка но к ней добавляется новый параметр запроса.

Предположим, ваша текущая страница имеет ссылку http://site.com/page_name.html, то данный метод выведет ссылку с запросом - http://site.com/page_name.html?name=page_name. Это не странно, потому как задан параметр - $wp->query_string. Его конечно же можно удалить, но тогда отпадает смысл в использовании add_query_arg(). Это меня и привело к тому. чтобы переделать данный метод и получить 4 способ.

Способ №4 home_url

Данный способ вытекает из предыдущего, будет он использовать функцию home_url() с указанием параметра. По умолчанию данная функция выводит ссылку на главную страницу. С доработками она выглядит так:

<?php			
global $wp;
$current_url = home_url( $wp->request );
echo $current_url;
?>	

Данная функция выведет ссылку на любую текущую страницу сайта на WordPress. Данную функцию часто использую и я. Проблем с ней не возникало ни разу, поэтому могу рекомендовать к использованию и ее.

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

На этом все, спасибо за внимание. 🙂




Если Вам был полезным мой труд, можете поддержать сайт :)


Оцените статью
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 2, в среднем: 5 из 5

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

Заполните поля ниже. Ваш e-mail не будет опубликован. Обязательные поля помечены *

Уважаемые пользователи! При добавлении комментариев на сайт Вам следует соблюдать правила указанные под формой отправки комментариев.

Соблюдайте добавления комментариев

Это не спам *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Нажмите, чтобы добавить код в комментарий
X

Привет дорогой друг

У тебя установлено расширение AdBlock или подобное. Добавь мой сайт в белый список, и тем самым внесешь свой вклад в его развитие. Инструкция как отключить AdBlock Хочу такое же окошко