Могу ли я предотвратить возврат get_the_post_thumbnail к глобальному идентификатору сообщения?

У меня есть тип сообщения, который содержит мета-поля. Эти обмены позволяют пользователю выбирать элемент из выпадающего меню. Все эти элементы являются идентификаторами для других сообщений.

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

Не работает то, что если метабокс пуст, get_the_post_thumbnail автоматически получит миниатюру для глобального почтового идентификатора.

Это из кода для его первого параметра:

Post ID или WP_Post. По умолчанию используется глобальная почта. Значение по умолчанию: null

Как я могу предотвратить это ИЛИ что это еще один способ решить эту проблему? Я не хочу загружать изображение из сообщения по умолчанию. Я хочу, чтобы он был пустым, если ничего конкретного не выбрано.

Когда вы храните идентификаторы сообщений в мета-полях другого сообщения (назовем это сообщение «основной пост»), вы можете получить это мета-поле, а если оно пустое, просто избегайте использования get_the_post_thumbnail() .

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

Например, если вы находитесь в Loop главного сообщения:

 while( have_posts() ) { the_post(); // used inside the loop, get_the_ID() returns current post ID in the loop // replace meta_field_that_stores_post_ID with the key of your meta field // last param is set to true, so get_post_meta() retuns empty string if the meta field doesn't exists $thumb_post_ID = get_post_meta( get_the_ID(), 'meta_field_that_stores_post_ID', true ); if( ! empty( $thumb_post_ID ) ) { echo get_the_post_thumbnail( $thumb_post_ID ); } } 

Вы можете отделить эту логику от шаблона, например, используя тег шаблона:

 function cyb_get_the_post_thumbnail() { $thumb_post_ID = get_post_meta( get_the_ID(), 'meta_field_that_stores_post_ID', true ); if( ! empty( $thumb_post_ID ) { echo get_the_post_thumbnail( $thumb_post_ID ); } } 

И затем используйте cyb_get_the_post_thumbnail() где вам это нужно, в цикле основного сообщения.

Если вы не находитесь в петле главного сообщения, вам нужно знать, по крайней мере, идентификатор главного сообщения и делать что-то вроде этого:

 $thumb_post_ID = get_post_meta( 254, 'meta_field_that_stores_post_ID', true ); if( ! empty( $thumb_post_ID ) { echo get_the_post_thumbnail( $thumb_post_ID ); }