Вывести часть текста поста если нет миниатюры?
Добрый день.
Подскажите, как вывести часть текста поста, если нет миниатюры? А если есть миниатюра, текст выводить не надо.
Код
<article <?php post_class( 'preview preview-' . get_post_type() . ' do-spot' ); ?> id="post-<?php the_ID(); ?>"> <div class="preview-wrapper"> <?php if ( ( has_post_thumbnail() && ! post_password_required() ) || koji_get_fallback_image_url() ) : ?> <a href="<?php the_permalink(); ?>" class="preview-image"> <?php if ( has_post_thumbnail() && ! post_password_required() ) { $image_size = koji_get_preview_image_size(); the_post_thumbnail( $image_size ); } else { koji_the_fallback_image(); } ?> </a> <?php endif; ?> <div class="preview-inner"> <h2 class="preview-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php // Output the post meta koji_the_post_meta( $post->ID, 'preview' ); ?> </div><!-- .preview-inner --> </div><!-- .preview-wrapper --> </article> |
<article <?php post_class( 'preview preview-' . get_post_type() . ' do-spot' ); ?> id="post-<?php the_ID(); ?>"> <div class="preview-wrapper"> <?php if ( ( has_post_thumbnail() && ! post_password_required() ) || koji_get_fallback_image_url() ) : ?> <a href="<?php the_permalink(); ?>" class="preview-image"> <?php if ( has_post_thumbnail() && ! post_password_required() ) { $image_size = koji_get_preview_image_size(); the_post_thumbnail( $image_size ); } else { koji_the_fallback_image(); } ?> </a> <?php endif; ?> <div class="preview-inner"> <h2 class="preview-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php // Output the post meta koji_the_post_meta( $post->ID, 'preview' ); ?> </div><!-- .preview-inner --> </div><!-- .preview-wrapper --> </article>
Дополнительно
Ответы:
Добавил код после !-- .preview-inner --, вроде получилось. Так правильно?
<?php if( !has_post_thumbnail() ): ?> <a href="<?php the_permalink(); ?>"><?php the_excerpt(); ?></a> <?php endif; ?> |
<?php if( !has_post_thumbnail() ): ?> <a href="<?php the_permalink(); ?>"><?php the_excerpt(); ?></a> <?php endif; ?>
- да
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Да, это делается через проверку
has_post_thumbnail(), но важно решить, что считать отсутствием картинки. В вашем шаблоне есть не только миниатюра записи, но и fallback-изображениеkoji_get_fallback_image_url(). Если текст нужен только когда нет именно featured image, проверяйте! has_post_thumbnail(). Если текст нужен только когда вообще нечего показывать вместо картинки, проверяйте и миниатюру, и fallback.Для варианта «нет миниатюры — показать excerpt» код лучше поставить внутри карточки, там где выводится содержимое записи:
if (! has_post_thumbnail() && ! post_password_required()) { $excerpt = get_the_excerpt(); if ($excerpt === '') { $excerpt = wp_strip_all_tags(get_the_content()); } echo '<a class="preview-excerpt" href="' . esc_url(get_permalink()) . '">'; echo esc_html(wp_trim_words($excerpt, 28, '...')); echo '</a>'; }
Ваш вариант с
the_excerpt()внутри ссылки в целом рабочий, если он находится внутри цикла WordPress. Ноthe_excerpt()сразу печатает HTML, поэтому его сложнее экранировать и контролировать по длине. Для карточек безопаснее брать текст черезget_the_excerpt(), обрезатьwp_trim_words()и выводить черезesc_html(). Если в теме fallback-картинка выводится почти всегда, то условие! has_post_thumbnail()покажет текст даже рядом с fallback. Если это не нужно, используйте условие! has_post_thumbnail() && ! koji_get_fallback_image_url(). После правки проверьте карточки с миниатюрой, без миниатюры и с запароленной записью.