Получение изображений из директории темы на страницах

14 дек. 2015 г., 04:25:47
Просмотры: 81.3K
Голосов: 15

Да, я знаю, что у нас есть get_template_directory_uri(); для ссылки на директорию темы. Это работает, когда я помещаю следующий код внутри index.php или в header.php:

<img src="<?php echo get_template_directory_uri(); ?>/images/sample.png">

Но когда я добавляю изображение внутри страниц при редактировании через текстовый редактор, а не через визуальный, это не работает. Как мне получить изображения из директории images темы на страницах?

Спасибо!

5
Комментарии

Похоже, вы пытаетесь добавить PHP-код через редактор контента?

birgire birgire
14 дек. 2015 г. 04:30:15

@birgire да, я добавляю таким способом. Есть ли другие решения?

ajdeguzman ajdeguzman
14 дек. 2015 г. 04:31:26

Это не сработает по соображениям безопасности. Вы не хотите использовать полный URL изображения? В целом я бы рекомендовал избегать использования тематических изображений в контенте, потому что при смене или удалении старой темы они пропадут. Поэтому я бы рекомендовал использовать /wp-content/uploads/ для изображений в контенте.

birgire birgire
14 дек. 2015 г. 04:33:01

@birgire моя единственная забота - организация директории с изображениями, поэтому я размещаю их внутри директории темы. Возможно ли в wp-contents/uploads организовать папки?

ajdeguzman ajdeguzman
14 дек. 2015 г. 04:35:12

Для небольшого количества изображений я бы просто загрузил их через Медиатеку. Если вам нужно как-то идентифицировать их, то существуют, например, плагины, которые позволяют добавлять теги (категории) к изображениям.

birgire birgire
14 дек. 2015 г. 04:42:32
Все ответы на вопрос 6
2
<img src="<?php echo esc_url( get_template_directory_uri() . '/images/logo.jpg' ); ?>" alt="" >

Попробуйте этот вариант. Он должен работать. Вам нужно объединить результаты из get_template_directory_uri() и путь к вашей папке с изображениями в echo.

24 мар. 2021 г. 11:58:32
Комментарии

Господин Глорфиндел, спасибо за редактирование моего поста. Если вы считаете его правильным, пожалуйста, проголосуйте за него. Это действительно даст мне хороший старт на stackexchange. Заранее спасибо

Kaif Ahmad Kaif Ahmad
25 мар. 2021 г. 14:19:20

Вы должны использовать Security Escape - get_template_directory_ur. [WordPress.Security.EscapeOutput.OutputNotEscaped] Весь вывод должен проходить через функцию экранирования (см. разделы по безопасности в WordPress Developer Handbooks), обнаружено 'get_template_directory_uri'.

Nuno Sarmento Nuno Sarmento
22 апр. 2022 г. 13:35:18
0

Шорткод — это правильный подход. Вот пример (размещается в functions.php или в виде плагина):

// [template_dir image="something.jpg"]
add_shortcode( 'template_dir', function( $atts ){
    return get_template_directory_uri() . '/images/' . $atts['image'];
});
16 февр. 2018 г. 10:58:13
1

Невозможно использовать PHP-код в редакторе. Вы можете использовать изображение с полным путем.

<img src="/wp-content/themes/your-theme/assets/images/1.jpg" />

Вообще, я бы избегал использования изображений, специфичных для темы, в контенте, потому что при смене и удалении старой темы они пропадут. Поэтому я бы рекомендовал использовать /wp-content/uploads/ для изображений контента.

17 мар. 2017 г. 17:07:59
Комментарии

это хорошее решение. <img src="<?php echo get_template_directory_uri().'/images/sample.png'; ?>">

Mohammad Ayoub Khan Mohammad Ayoub Khan
13 июн. 2021 г. 19:50:14
0

Ответ — да. Вы можете запускать PHP-код в редакторе. Но это не самый правильный способ добавления изображений. Вместо этого вам следует создавать шорткоды для получения этих изображений из папки темы или использовать код, подобный приведённому ниже:

<img src="/wp-content/themes/your-theme/assets/images/1.jpg" />

Удаление имени домена может даже улучшить количество HTTP-запросов. Если удаление домена не сработает, вы можете установить плагины для выполнения PHP в WordPress. Существует несколько подобных плагинов. Чтобы узнать больше, вам следует прочитать эту статью. Надеюсь, это поможет решить ваши проблемы :) Удачи в написании кода.

14 дек. 2015 г. 04:50:10
0

Разве Мэтт не объявил, что PHP не будет работать внутри записи WordPress?

13 февр. 2017 г. 14:00:50
0

get_template_directory_uri()

Быстрый поиск по коду ядра WordPress показывает два разных подхода. Эту функцию необходимо экранировать, когда она используется внутри атрибута тега.

<img src="<?php echo esc_url( get_template_directory_uri() . '/images/logo.jpg' ); ?>" alt="" >

При использовании внутри wp_enqueue_style() или wp_enqueue_script() экранирование не выполняется:

wp_enqueue_script( 'theme-customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '', true );

Однако, если посмотреть на саму функцию, перед возвратом значений применяется фильтр, что вызывает подозрения — возвращаемое значение может быть изменено в плагинах, и мы точно не знаем, что будет возвращено. В такой ситуации лучше перестраховаться и всегда применять экранирование.

22 апр. 2022 г. 13:34:32