Вывод permalink без 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.
Как предложил @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(.), но принцип должен быть понятен.
Другой вариант манипуляции — использование функций PCRE (Perl Compatible Regular Expressions) в PHP, здесь используется 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>';
используйте get_permalink вместо the_permalink и обрабатывайте ссылку как вам угодно с помощью PHP.