Я дизайнер (а не разработчик), работающий над сайтом Wordpress для клиента.Используя ACF-плагин Я настроил пользовательское поле для медиа-файлов для фотографий.Это отлично работает на избранных изображениях, где я могу назвать его в single.php следующим образом:
$post_thumbnail = get_post(get_post_thumbnail_id());
$credit = get_field('media_credit', $post_thumbnail);
if($credit):
echo '<div class="media-credit"><p>Photo: '.$credit.'</p></div>';
endif;
Так что я знаю, что настраиваемое поле работает и выводит правильные данные.Однако я не могу заставить его работать с вложениями изображений в сообщениях.У меня есть следующее:
add_filter( 'img_caption_shortcode', 'my_img_caption_shortcode', 10, 3 );
function my_img_caption_shortcode( $empty, $attr, $content ){
$attr = shortcode_atts( array(
'id' => '',
'align' => 'alignnone',
'width' => '',
'caption' => ''
), $attr );
if ( 1 > (int) $attr['width'] || empty( $attr['caption'] ) ) {
return '';
}
if ( $attr['id'] ) {
$attr['id'] = 'id="' . esc_attr( $attr['id'] ) . '" ';
}
//OUTPUT CREDIT
$photographer = get_field( 'media_credit', $attachment_id );
if ($photographer):$media_byline = '<br/><span class="media-credit">Photo: '.$photographer.'</span>';endif;
return '<div ' . $attr['id']
. 'class="wp-caption ' . esc_attr( $attr['align'] ) . '" '
. do_shortcode( $content )
. '<p class="wp-caption-text">' . $attr['caption'] . '' . $media_byline . '</p>'
. '</div>';
}
Если я удаляю оператор if в OUTPUT, он показывает «Photo:» в заголовках, после текста, как и должно, но не получает никаких данных.Чего мне не хватает?
(Кстати - я знаю, что есть плагины, которые выводят кредиты изображений, но у них, как правило, есть стили и функции, которые я должен переопределить, что приводит к беспорядку спагетти, который я ненавижу передаватьследующий парень, работающий на этом сайте.)