Intereting Posts
Вложения WordPress со старыми изображениями ACF повторяет цикл while, определяя максимальное число для цикла Есть ли лучший способ определить параметры для настраиваемых полей в панели администратора? страницы отключены после обновления WordPress Как удалить имена классов категорий постов из body_class Не удается обновить сообщение, ошибка 404 Как удалить текстовый формат TinyMCE Как заставить textarea принимать javascript в моих настройках? Как получить сообщение с помощью функции get_posts? Создать специальную кнопку в редакторе WP Tiny MCE для коротких кодов Запуск сценариев на странице пользовательского верхнего уровня Удалить текущий пункт меню для определенной ссылки Помощь в настройке данных в соответствии с часовым поясом пользователей У CSS WordPress есть Grids? Подключение к удаленной базе данных для wordpress на моем собственном сервере хостинга

Результаты поиска в WordPress для нескольких типов сообщений

Я хочу показать как posts и attachments в результатах поиска. В принципе, мне нужно что-то, что говорит, if сообщение имеет миниатюру, покажите это. else покажите изображение вложения (поскольку у них нет эскизов и вытаскиваются непосредственно из медиа-библиотеки).

Это то, что я пробовал на search.php , но это не сработало:

 <?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <?php echo '<a class="search-item">'; if( has_post_thumbnail() ) { $image_src = the_post_thumbnail( 'custom-size', array( 'class' => "img-style" ) ); } else { $image_src = wp_get_attachment_image_src( 'custom-size', array( 'class' => "img-style" ) ); echo '</a>'; } ?> <?php endwhile; ?> <?php endif; ?> 

Функция wp_get_attachment_image_src() ожидает, что вы также передадите какой-либо идентификатор вложения, а также не wp_get_attachment_image() изображения, который нам нужен, вместо этого мы должны использовать wp_get_attachment_image() .

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

 if( have_posts() ) { while( have_posts() ) { the_post(); $image_html = ''; // assign placeholder url here? if( has_post_thumbnail() ) { $image_html = get_the_post_thumbnail( $post->ID, 'custom-size', array( 'class' => 'img-style' ) ); } else { // We don't have a thumbnail - grab attachments $media = get_posts( array( 'post_type' => 'attachment', 'posts_per_page' => 1, 'post_status' => 'any', 'post_parent' => $post->ID 'post_mime_type' => array( 'image/jpeg', 'image/gif', 'image/png', 'image/bmp', 'image/tiff', 'image/x-icon' ); ) ); if( ! empty( $media ) ) { $image_html = wp_get_attachment_image( $media[0]->ID, 'cusotm-size', false, array( 'class' => 'img-style' ) ); } } if( ! empty( $image_html ) ) { echo '<a href="'. get_permalink() . '">' . $image_html . '</a>'; } } } 

Заметьте, я не тестировал выше, поэтому не стесняйтесь уточнять его.