Невозможно правильно показать пользовательское поле изображения ACF в Genesis Framework

WP 4.7.3 с типами, образцом примера Genesis, ACF и несколькими очень известными плагинами, ничего особенного или нестандартного.

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

$count = get_post_meta( get_the_ID(), 'items', true ); if ( $count ) { for ( $i = 0; $i < $count; $i++ ) { $item_100x100 = get_post_meta( get_the_ID(), 'items_' . $i . '_item_100x100', true ); $item_200x200 = get_post_meta( get_the_ID(), 'items_' . $i . '_item_200x200', true ); $item_300x300 = get_post_meta( get_the_ID(), 'items_' . $i . '_item_300x300', true ); if ( $item_100x100 ) { echo '<p class="overview">' . wp_get_attachment_image( $item_100x100, 'items' ) . '</p>'; } elseif ( $item_200x200 ) { echo '<p class="overview">' . wp_get_attachment_image( $item_200x200, 'items' ) . '</p>'; } elseif ( $item_300x300 ) { echo '<p class="overview">' . wp_get_attachment_image( $item_300x300, 'items' ) . '</p>'; } } } 

Я думаю, это правильно, и все работает отлично.

Затем я работаю над файлом archive-cpt.php, который должен показывать несколько настраиваемых полей для каждого найденного сообщения, включая это изображение.

Теперь, если бы мне пришлось показать Featured Image, я мог бы сделать:

 // Featured image if ( $image = genesis_get_image( 'format=url&size=item-image' ) ) { printf( '<a href="%s" rel="bookmark"><img src="%s" alt="%s" class="alignleft" /></a>', get_permalink(), $image, the_title_attribute( 'echo=0' ) ); } // Entry title echo '<h2 class="entry-title" itemprop="headline"><a href="' . get_permalink() . '">'. get_the_title() .'</a></h2>'; 

Но я не показываю Featured Image Post, я пытаюсь показать настраиваемое поле типа изображения из поля повторителя ACF.

Если я сделаю:

 if ( $item_100x100 ) { $image = wp_get_attachment_image( $item_100x100, 'items' ); } elseif ( $item_200x200 ) { $image = wp_get_attachment_image( $item_200x200, 'items' ); } elseif ( $slope_map_300x300 ) { $image = wp_get_attachment_image( $item_300x300, 'items' ); } printf( '<a href="%s" rel="bookmark"><img src="%s" alt="%s" class="alignleft" /></a>', get_permalink(), $image, the_title_attribute( 'echo=0' ) ); 

Я получаю изображение, напечатанное на экране, но сопровождаемое строкой

"alt =" my-alt-text "class =" alignleft "/>

рядом с ним.

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

Может ли кто-нибудь помочь? Заранее спасибо.

ПРИМЕЧАНИЕ. Я не использую ACF-команды get_field () и т. Д., Потому что: а) они не являются основным для WP и b) они добавляют запросы к базе данных (много, десятки, если у вас несколько повторителей или гибкое содержимое). С собственным WP вы добавляете только один запрос базы данных для всего.

Solutions Collecting From Web of "Невозможно правильно показать пользовательское поле изображения ACF в Genesis Framework"

Итак, вот правильный ответ, с полным кодом для поля повторителя ACF:

 $count = get_post_meta( get_the_ID(), 'items', true ); if ( $count ) { for ( $i = 0; $i < $count; $i++ ) { $item_100x100 = intval( get_post_meta( get_the_ID(), 'items_' . $i . '_item_100x100', true ) ); $item_200x200 = intval( get_post_meta( get_the_ID(), 'items_' . $i . '_item_200x200', true ) ); $item_300x300 = intval( get_post_meta( get_the_ID(), 'items_' . $i . '_item_300x300', true ) ); if ( $item_100x100 ) { $image_id = wp_get_attachment_image_src( $item_100x100, 'full' ); } elseif ( $item_200x200 ) { $image = wp_get_attachment_image_src( $item_200x200, 'full' ); } elseif ( $item_300x300 ) { $image = wp_get_attachment_image_src( $item_300x300, 'full' ); } if ( $image ) { echo '<a href="' . get_permalink() . '" rel="bookmark"><img src="' . $image[0] . '" alt="' . the_title_attribute( 'echo=0' ) . '">'; } } } 

Или, вместо этого

эхо

часть, вы можете сделать:

 printf( '<a href="%s" rel="bookmark"><img src="%s" alt="%s" class="alignleft" /></a>', get_permalink(), $image[0], the_title_attribute( 'echo=0' ) ); 

Вам просто нужно изменить «полный» на желаемый размер изображения.

ОБНОВЛЕНИЕ: Как указано ниже @bosco, wp_get_attachment_image вернет весь HTML-элемент. Мы просто хотим, чтобы URL-адрес изображения мог установить атрибут src . Поэтому мы будем использовать wp_get_attachment_image_src в нашем коде. Я понимаю, что я возился с HTML.