Как использовать относительные ссылки на моих страницах?

23 февр. 2011 г., 01:18:21
Просмотры: 38.9K
Голосов: 8

На моих веб-страницах я хочу использовать относительные ссылки вместо абсолютных.

Однако страницы не позволяют использовать PHP-код внутри них, поэтому я не могу создавать URL-адреса относительным способом.

Как получить относительные URL-адреса внутри страниц WordPress, чтобы изменение доменных имен не влияло на ссылки?

0
Все ответы на вопрос 8
0

В WordPress есть встроенная функция для удаления протокола и домена из абсолютных URL — wp_make_link_relative, расположенная в файле /wp-includes/formatting.php:

function wp_make_link_relative( $link ) {
    return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
}

Чтобы применить эту функцию к (например) постоянным ссылкам, просто добавьте фильтр следующим образом:

add_filter( 'the_permalink', 'wp_make_link_relative' );

Deluxe Blog Tips показывает, как применить это к различным типам ссылок, убедившись, что ссылки на ленты и карты сайта не затрагиваются:

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    // Ничего не делать, если:
    // - Это лента
    // - Это карта сайта от плагина WordPress SEO
    if ( is_feed() || get_query_var( 'sitemap' ) )
        return;
    $filters = array(
        'post_link',
        'post_type_link',
        'page_link',
        'attachment_link',
        'get_shortlink',
        'post_type_archive_link',
        'get_pagenum_link',
        'get_comments_pagenum_link',
        'term_link',
        'search_link',
        'day_link',
        'month_link',
        'year_link',
    );
    foreach ( $filters as $filter )
    {
        add_filter( $filter, 'wp_make_link_relative' );
    }
}
6 сент. 2012 г. 18:56:48
0
$my_url = 'my/relative/url.php';
echo site_url($my_url);

Функция site_url() при использовании без параметров возвращает абсолютный путь к вашему блогу. Но если вы добавите аргумент, как в моем примере выше, она добавит абсолютный путь перед вашим относительным путем. Убедитесь, что ваш URL не начинается со слеша (например: /это/может/не/сработать).

Наконец, если ваш WordPress установлен в корне сервера, вы можете использовать путь относительно сервера (в этом случае используется начальный слеш для указания корня сервера). Например, если ваш блог установлен по адресу http://www.me.com/blog, то вы можете безопасно обращаться к относительным ссылкам с помощью /blog/my_link.php.

13 мая 2011 г. 23:05:30
Комментарии

здесь говорится только о постоянных ссылках, но не о том, как использовать относительные URL вместо абсолютных

pdeva pdeva
23 февр. 2011 г. 02:53:39

Прокрутите вниз на этой странице или лучше перейдите по http://codex.wordpress.org/Linking_Posts_Pages_and_Categories#Absolute_versus_Relative_Links

Bainternet Bainternet
23 февр. 2011 г. 03:07:29
0

Раньше я использовал шорткод с get_bloginfo для относительных путей внутри содержимого поста. Я собирался превратить это в полноценный плагин, но мне казалось, что ребята из Automatic уже выпустили подобное решение, которое я сейчас не могу найти. Вот простой пример того, как это работает (мой вариант я сейчас не могу найти, так как больше не использую его), возможно, разработчики из Automatic тоже пришли к этому выводу, как и Bainternet в своем посте.

Простая функция шорткода, которая возвращает базовый URL вашего сайта:

function my_relative_post_image_link() {
$linky = get_bloginfo('wpurl');
echo $linky;
}
add_shortcode('posty', 'my_relative_post_image_link');

Если ваш сайт example.com, то использование шорткода [posty] в содержимом вернет example.com в виде текста.

Для практического использования вам потребуется настроить функцию, используя дополнительные параметры из get_bloginfo, и обернуть результат в необходимые HTML-теги. http://codex.wordpress.org/Function_Reference/get_bloginfo

25 мар. 2011 г. 04:17:29
0

используйте стандартную опцию создания ссылок в WordPress, удалите доменное имя и начните с /, например

https://example.com/posts/post10

преобразуется в

/posts/post10

11 нояб. 2020 г. 22:53:07
0

Эта функция должна быть добавлена в файл functions.php вашей темы. Она сделает все постоянные ссылки относительными.

// делаем ссылки относительно корня
function make_href_root_relative($input) {
    return preg_replace('!http(s)?://' . $_SERVER['SERVER_NAME'] . '/!', '/', $input);
}
function root_relative_permalinks($input) {
    return make_href_root_relative($input);
}
add_filter( 'the_permalink', 'root_relative_permalinks' );

Изображения в контенте должны использовать абсолютные ссылки ЕСЛИ эти изображения будут использоваться в RSS-ридерах. Если изображения используют относительные ссылки, ридеры попытаются загрузить изображения со своих собственных доменов.

Также есть небольшое влияние на производительность при использовании относительных ссылок для изображений. С относительными постоянными ссылками это, кажется, не имеет значения.

На некоторых серверах может потребоваться добавить базовый href с корнем вашего сайта, чтобы ссылки работали корректно.

6 мая 2011 г. 08:37:08
0

Я думаю, что существует плагин Absolute Relative Links, который заменит все ссылки на ваших страницах на относительные. Он работает достаточно хорошо, что означает, что вам не придется возвращаться и исправлять старые ссылки, которые остались абсолютными.

25 авг. 2011 г. 18:04:25
1
-2

В этом руководстве показан базовый способ изменения постоянных ссылок записей на относительные. Я также улучшил этот метод, чтобы сделать все ссылки в WordPress относительными. Окончательный код доступен здесь.

23 февр. 2011 г. 03:16:29
Комментарии

Голые ссылки не помогают. Добавьте хотя бы пояснение.

fuxia fuxia
24 апр. 2011 г. 11:44:46