эхо-пост-постоянная ссылка без http и www
У меня есть эта строка...
<div class="permalink"><?php the_permalink(); ?></div>
И результат на моей странице выглядит так...
http://mysite.com/whatever/post-or-so
Я думаю, это также может выглядеть так...
http://www.mysite.com/whatever/post-or-so
Однако я хотел бы иметь только mysite.com/whatever/post-or-so
без http://
или www
перед ним.
Какой самый лучший и простой способ сделать это?
Не поймите меня неправильно, это не имеет ничего общего с переписыванием постоянных ссылок или чем-то еще. Просто простое эхо the_permalink()
на моей странице, которое обрабатывается не как ссылка, а как обычное текст. И в этом случае я хотел бы избавиться от http или www.
4 answers
Использовать get_permalink
вместо the_permalink
и манипулируйте им, как хотите, с помощью php.
Как и предположил @milo, вы можете манипулировать возвратом get_permalink()
. Это можно легко сделать с помощью нескольких строковых функций php , здесь используется str_replace()
. Если у вас есть необходимость удалить как http://
, так и https://
, дайте массив игл для str_replace()
.
$permalink = get_permalink();
$find = array( 'http://', 'https://' );
$replace = '';
$output = str_replace( $find, $replace, $permalink );
echo '<p>' . $output . '</p>';
Вышесказанное не касается части www(.)
, но принцип должен быть ясен.
Еще одной возможностью для манипулирования являются php PCRE (Регулярные выражения, совместимые с Perl) функции, используемые здесь preg_replace()
.
$permalink = get_permalink();
$find_h = '#^http(s)?://#';
$find_w = '/^www\./';
$replace = '';
$output = preg_replace( $find_h, $replace, $permalink );
$output = preg_replace( $find_w, $replace, $output );
echo '<p>' . $output . '</p>';
Существует простой метод.
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
вернет абсолютный URL-адрес без http(ов) в начале.
<?php
$find = 'http://';
$replace = '';
$output = str_replace($find,$replace,get_permalink());
$find = 'https://';
$output = str_replace($find,$replace,get_permalink());
echo '<p>' . $output . '</p>';
?>