В WordPress меня всегда расстраивало то, что изображения, файлы, ссылки и т. Д. Вставляются в WordPress с абсолютным URL вместо относительного. Относительный URL-адрес намного удобнее для переключения доменных имен, переключения между http и https и т. Д. Сегодня я обнаружил, что если вы определяете WP_CONTENT_URL с относительным URL-адресом, тогда, когда вы вставляете файлы в сообщения, они используют относительный URL-адрес для src вместо абсолютного URL-адреса. . Как раз то, чего я всегда хотел! Но в официальной документации WordPress говорится, что вы должны использовать полный URI, если вы определяете WP_CONTENT_URL.
Установите WP_CONTENT_URL на полный URI этого каталога (без косой черты в конце), например
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');
Кажется, что все работает нормально, когда я использую относительный URL-адрес, например
define( 'WP_CONTENT_URL', '/my-content-folder');
Но есть ли проблема с использованием относительного URI? Я просто думаю, что должна быть причина, по которой WordPress заявляет, что он должен быть определен с полным URI.
Ответы:
Я думаю, что на этот вопрос может / должен ответить только разработчик ядра. Я исследовал и нашел основной тикет # 17048: URL-адреса, доставляемые браузеру, должны относиться к корневому каталогу . Где мы можем найти причины, объясненные Эндрю Насином, ведущим разработчиком ядра. Он также ссылается на эту ветку [wp-hackers] . По обеим этим ссылкам это ключевые цитаты о том, почему WP не использует относительные URL-адреса:
Основной билет:
[wp-hackers] ветка
И, от себя лично, я неоднократно обнаруживал, что темы и плагины плохо закодированы, которые просто ломаются, когда они
WP_CONTENT_URL
определены.Они не знают, что это можно установить, и предполагают, что это правда: WP.URL / wp-content / WhatEver , и это не всегда так. И что-то сломается по пути.
Плагин Относительные URL (связанные в edse Ответ «ы ), применяет функцию
wp_make_link_relative
в серии фильтров в крюке действийtemplate_redirect
. Это довольно простой код и кажется хорошим вариантом.источник
WP_CONTENT_URL
, похоже, не предназначена (хотя и позволяет) устанавливать относительные URL-адреса, плагин кажется лучшим вариантом. Есть ли тестовый пример, когда плагин ломается при настройке,WP_CONTENT_URL
но работает нормально при использовании?/
а относительные URI (для использования внутри<a>
) никогда не начинаютсяhttp://
.источник
Я согласен с Рупом. Думаю, главная причина - избежать путаницы в относительных путях. Я думаю, что wordpress может работать с нуля с относительными путями, но проблема может возникнуть при использовании нескольких плагинов, при настройке темы и т. Д.
Однажды я использовал этот плагин для относительных путей при работе на тестовых серверах:
источник
WP_CONTENT_URL
родственников, и не поддается никаким ловушкам со своим собственным подходом. Что я хотел бы знать, так это то, есть ли на самом деле известная ловушка при созданииWP_CONTENT_URL
родственников./wp-content/some-file.jpg
является абсолютным, а не относительным путем. Нет никакой путаницы. Именно включение протокола и имени домена в абсолютный URL-адрес делает WordPress бесполезным без всяких на то оснований. Чтобы развернуть сайт WP от разработки до стадии подготовки к работе, мне нужно запустить сценарий поиска и замены для доменных имен в дампе базы данных. Проблема, я думаю, в том, что он предназначен для редактирования контента в процессе производства, который работает для блогов (для чего он предназначен), но не для многих коммерческих веб-сайтов./wp-content/some-file.jpg
ошибаетесь, говоря об абсолютном пути. Для тех, кто прочитает ваш комментарий в будущем, обратите внимание, что относительный веб-путь - это путь, для которого протокол и домен исключены из пути. Таким образом,/wp-content/some-file.jpg
иwp-content/some-file.jpg
являются относительными, причем начало/
в первом примере содержит ссылку на доступный корневой каталог владельца учетной записи или сервера.Я решил это на своем сайте, сделав это в functions.php
Я взял часть одного плагина, разрезал его на части и сделал это. Он заменил ВСЕ ссылки на моем сайте (меню, CSS, скрипты и т. Д.), И все заработало.
источник
В разделе «Настройки» => «Медиа» есть опция «Полный URL-путь для файлов». Если вы установите для него путь к каталогу мультимедиа по умолчанию «/ wp-content / uploads» вместо пустого, он будет вставлять относительные пути, например, «/wp-content/uploads/2020/06/document.pdf».
Я не уверен, делает ли он все ссылки относительными, например, к сообщениям, но, по крайней мере, он обрабатывает медиа, что, вероятно, и беспокоит большинство людей.
источник
следует использовать get_home_url (), тогда ваши ссылки будут абсолютными, но это не повлияет на изменение URL сайта
источник
Я думаю, что вы делаете, когда вы меняете доменные имена, файл дампа sql, который у вас есть, вы можете заменить все экземпляры старого доменного имени новым. Это единственный доступный вариант, поскольку нет плагинов, которые помогут вам в этом.
Это самый быстрый способ ..
источник
Есть простой способ
Вместо
/pagename/
использованияindex.php/pagename/
или, если вы не используете постоянные ссылки, сделайте следующее:Почта
Страница
Категория
Дополнительная информация здесь: http://codex.wordpress.org/Linking_Posts_Pages_and_Categories
источник