путь к изображению WordPress меняется в зависимости от файла - PullRequest
0 голосов
/ 29 сентября 2011

У меня проблемы с путями к моей первой теме WordPress. Публикация изображений и материалов, не связанных с css, находится в wordpress_folder/blog-images/ и в index.php, когда я ссылаюсь на изображения и использую этот путь: blog-images/img.jpg

Проблема теперь в том, что когда я хочу сделать ссылку на то же изображение из другого файла (не index.php), в этом случае single.php, который отображает одно сообщение в блоге, правильный путь теперь ../../../blog-images/img.jpg

Это вызывает проблемы во включаемых файлах, таких как боковая панель и т. Д. Sidebar.php отлично работает при вызове из index.php, но путь к изображениям изменяется, если sidebar.php вызывается из single.php.

Кто-нибудь знает, что происходит?

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Если вы создаете эти ссылки из сценариев php, я бы предложил использовать функцию site_url(), чтобы получить URL для вашей установки WordPress, а затем добавить путь к изображениям в конце этого.Если вы редактируете статические файлы темы, такие как css, то вам следует использовать /wordpress_folder/blog_images/img.jpg.

Что-то вроде <img src="<?php echo site_url() ?>/blog_images/img.jpg" /> должно быть достаточно из файлов темы.

Причина, по которойпути изменяются потому, что если вы находитесь в wordpress_folder, то путь blog_images/img.jpg разрешается до wordpress_folder/blog_images/img.jpg, но если вы находитесь в сообщении с URL-адресом yoursite.com/wordpress_folder/2011/09/category/my_great_post, то путьприведет к wordpress_folder/2011/09/category/blog_images/img.jpg, что, очевидно, неверно.

По этой причине вы должны попытаться использовать абсолютный путь или полный URL-адрес, чтобы независимо от того, из какого файла / папки / URL-адреса вы ссылались, путь всегда будетбудьте верны.

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

Также проверьте справочную страницу site_url () ,внизу перечислены некоторые другие полезные функции, которые могут быть вам полезны.

1 голос
/ 29 сентября 2011

Я думал, что это было немного неясно из ответа Дрю, поэтому я добавляю немного больше в отдельный ответ.Его совет обоснован, и я согласен с ним.

Если вы добавите URL-адрес с /, он будет перемещаться в зависимости от URL вашего сайта.Без косой черты он использует относительную навигацию.

Итак, вот несколько примеров для www.mydomain.com

//always shows the image located at http://www.mydomain.com/myfolder/pic.png
//no matter what the url is
<img src="/myfolder/pic.png" />

//shows the image located relative to the current path
//if current url is http://www.mydomain.com/posts/ then the image will come from
//http://www.mydomain.com/posts/myfolder/pic.png
<img src="myfolder/pic.png" />

Если вы создаете ссылки динамически со стороны php, тогда вы захотите использовать site_url().

Если вы создаете ссылки на папку каталога вашей темы, вы можете использовать bloginfo('template_directory')

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