Я использую файл attachment.php, чтобы показать большие версии изображений, которые были нажаты в другом месте. Я хотел бы вытащить замещающий текст изображения в качестве подписи под изображением с помощью javascript, но замещающий текст не включается, когда используется wp_get_attachment_image_src(). Я не думаю, что в WP есть функция для его извлечения, поэтому мне нужна моя собственная. Чтобы написать эту функцию, мне нужно знать… Где хранится замещающий текст для изображения?
На моей странице вложений используется wp_get_attachment_image_src()
, который не включает замещающий текст.
<div class = "entry">
<?php
if ( wp_attachment_is_image( $post->id ) ) :
$att_image = wp_get_attachment_image_src( $post->id, "large");?>
<a href="<?php echo wp_get_attachment_url($post->id); ?>"
title="<?php the_title(); ?>"
rel="attachment">
<img class="attached_img"
src="<?php echo $att_image[0];?>"
width="<?php echo $att_image[1];?>"
height="<?php echo $att_image[2];?>"
class="attachment-medium"
alt="<?php $post->post_excerpt; ?>" />
</a>
} <?php endif;?>
</div>
Это показывает:
<div class = "entry">
<a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg"
title="My_Photo_Title"
rel="attachment">
<img class="attached_img"
src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg"
width="393"
height="500"
class="attachment-medium"
alt="" />
</a>
</div>
Я знаю, что $post->post_excerpt
вызывается в приведенном выше коде, но я не уверен, чем его заменить, чтобы получить атрибут alt изображения.
Недавно я провел небольшое исследование для клиентского проекта, так что , о чудо, я могу использовать его здесь!
После текста вы увидите разбитый по категориям список большинства (всех?) функций обработки изображений из WordPress 3.0.1 (я сгруппировал их в каком-то подобии порядка, но не слишком доверяю своей категоризации).
В любом случае, отвечая, что (я думаю) вам нужно вместо того, что вы просили ( хорошо, я отвечу и на это в конце ), я думаю, что вам нужна
wp_get_attachment_image()
функция, которая вернет строку HTML, содержащую эти атрибуты:'src'
,'class'
,'alt'
а также'title'
.Функции обработки изображений WordPress 3.0
Итак, вот функции обработки изображений WordPress для справки для вас и других ( перейдите ниже, чтобы получить ответ на ваш точный вопрос ):
Поддержка изображений/миниатюры
set_post_thumbnail_size( $width = 0, $height = 0, $crop = FALSE )
add_image_size( $name, $width = 0, $height = 0, $crop = FALSE )
get_intermediate_image_sizes()
wp_constrain_dimensions( $current_width, $current_height, $max_width=0, $max_height=0 )
Вложение
get_attached_file( $attachment_id, $unfiltered = false )
is_local_attachment($url)
update_attached_file( $attachment_id, $file )
wp_attachment_is_image( $post_id = 0 )
wp_count_attachments( $mime_type = '' )
wp_delete_attachment( $post_id, $force_delete = false )
wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false, $attr = '')
wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false)
wp_get_attachment_metadata( $post_id = 0, $unfiltered = false )
wp_get_attachment_thumb_file( $post_id = 0 )
wp_get_attachment_thumb_url( $post_id = 0 )
wp_get_attachment_url( $post_id = 0 )
wp_insert_attachment($object, $file = false, $parent = 0)
wp_update_attachment_metadata( $post_id, $data )
MIME-типы
wp_match_mime_types($wildcard_mime_types, $real_mime_types)
wp_mime_type_icon( $mime = 0 )
wp_post_mime_type_where($post_mime_types, $table_alias = '')
Загрузки
media_handle_upload()
Файловая система
_wp_relative_upload_path( $path )
wp_upload_dir( $time = null )
HTML
get_image_tag($id, $alt, $title, $align, $size='medium')
Низкоуровневая обработка изображений:
wp_load_image( $file )
image_constrain_size_for_editor($width, $height, $size = 'medium')
image_downsize($id, $size = 'medium')
image_get_intermediate_size($post_id, $size='thumbnail')
image_hwstring($width, $height)
image_make_intermediate_size($file, $width, $height, $crop=false)
image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 )
image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false)
Как и было обещано ,
'alt'
текст изображения хранится в виде строкиwp_postmeta
с мета_ключом'_wp_attachment_image_alt'
.Как вы, наверное, уже знаете, вы можете загрузить его с помощью простого
get_post_meta()
кода:Ну, я не могу не чувствовать себя немного одурманенным после того, как ты это сказал. Раньше пользовался
wp_get_attachment_imgage()
и совсем про него забыл. Вы правы насчет того, что, как вы думали, мне действительно нужно. Спасибо за информацию. Вы также правы насчет того, где хранится альтернативная мета… Я смотрел именно в это место, но оно ускользнуло от меня, хотя я, должно быть, смотрел прямо на него. Вот что я получаю за то, что вхожу в него в конце дня. Спасибо еще раз!Эй, нет проблем. В недавнем прошлом я тоже задавал несколько действительно очевидных вопросов в списке хакеров только для того, чтобы ответ был очевиден, как только кто-то упомянул об этом. Здесь или там легко что-то пропустить. Но настоящее преимущество ответов WordPress заключается в том, что каждый вопрос и ответ становятся ресурсом для других людей с похожими вопросами в будущем. Я даже ожидаю, что буду гуглить, что я ответил, но забыл в будущем!
Быстрый вопрос: вы указали, что
wp_get_attachment_image()
возвращает массив изображения src и атрибутов. Кажется, он возвращает только html, содержащий изображение и его атрибуты. По-прежнему выполняет свою работу, просто не знал, знали ли вы о чем-то, кроме ссылки на функцию: codex.wordpress.org/Function_Reference/wp_get_attachment_image@Mike — Просто быстрое напоминание обновить примечание о wp_get_attachment_image как массиве — это меня немного озадачило :). В противном случае отличный ответ!
Очень подробный ответ, молодец!
Именно то, что я искал. Кто-нибудь имеет представление о его производительности? С таким количеством разных значений, которые он извлекает… Интересно…
@Larzan Я бы не стал беспокоиться о производительности — если только вы не получаете данные сотен изображений одновременно…
Посмотрите на
wp_prepare_attachment_for_js( $attachment )
, где$attachment
находится объект WP_Post самого вложения.Это немного похоже на функцию «кухонной раковины», но она предоставляет очень хороший хеш с кучей метаданных, включая «alt»:
Это особенно полезно (как следует из названия) для отправки метаданных изображения вложения в представление wp.media через
wp_send_ajax()
, но это не означает, что вы не можете использовать его для других целей.Мне нравится абстрагироваться от
_wp_attachment_image_alt
метаполя поста на случай, если метод извлечения замещающего текста когда-либо изменится (маловероятно, но возможно).Я действительно чувствую, что есть случай для
wp_get_attachment_image_alt()
метода однако.Ответ Майка, конечно, правильный, но
$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
может вернуть пустую строку.Однако wp_get_attachment_image всегда получает alt_text.
Команда WordPress применяет следующий трюк, сначала проверяя post_except, а затем получая заголовок.
Я обнаружил, что альтернативный текст для вложений был сохранен в пользовательской мете под названием «_wp_attachment_image_alt».
Итак, имея идентификатор вложения, я смог получить альтернативный текст с помощью этого кода:
Чтобы добавить к ответу Майка, кто-то может найти это полезным. Возможно, вам потребуется получить конкретный идентификатор вложения, поэтому вы можете сделать это, передав идентификатор сообщения в
get_post_thumbnail_id
пример:Если вы используете WP_Customize_Media_Control(), ваш get_theme_mod() вернет идентификатор сообщения, но если вы используете новый WP_Customize_Image_Control(), get_theme_mod() вернет URL-адрес изображения. Именно так я смог получить альтернативный текст с помощью WP_Customize_Image_Control. ()
Вот как я смог это сделать. Надеюсь, это поможет кому-то там
Разметка