Вывод последней полной записи в категории

Ситуация:

  • WP 5.1.
  • тема: стартовая от Underscores.me.
  • насадка вёрстки.
  • functions.php : используется по минимуму - подключил стили, js.. Всё остальное (свои функции, фильтры) - через подключение своего файла.
  • создал записи, разнёс их по категориям.
  • вывел в меню категории.

Задача:

  • в меню зайдя в категорию - в каждой категории сделать вывод последней полной записи из этой категории.

Решение:

  • открыть файл: archive.php
  • найти:
    <?php
    get_header();
    ?>
  • после вставить код:
    <?php
    $cat = get_the_category($post->ID);
    $my_query = new WP_Query('cat=' .  $cat[0]->term_id . '&posts_per_page=1');
    while ($my_query->have_posts()) : $my_query->the_post(); 
    get_template_part( 'template-parts/content', 'single' );
    endwhile;
    wp_reset_postdata();
    ?>

Комментарий к решению:

  • я подключаю файл content-single.php отвечающий за одиночный вывод записи (полная запись).
  • всё работает : вывод последней полной записи в категории, внизу список записей те, что были ранее добавлены.
  • , но ->

Проблема решения:

  • это изображение добавленная к записи.
  • изображение принимает какие-то свои свойства, не те, что для файла content-single.php

Изучение проблемы:

  • сравнил html-код двух ссылок отвечающие за вывод одиночной записи:
    Ссылка 1:
    http://localhost/underscores2/category/новости/
    , это где я поместил код в archive.php
    Ссылка 2:
    http://localhost/underscores2/бананус/
    , это вывод одиночной записи (последней)
  • в обоих случаях за вывод одиночной записи отвечает файл content-single.php
  • по Ссылке 1 : как раз проблема -> html-код изображения не соответствует html-коду изображению по Ссылке 2.
  • по Ссылке 1 : html-код изображения почему-то:
    а) в обёртке тега A.
    б) класс:
    по Ссылке 1 :
    class="attachment-post-thumbnail size-post-thumbnail wp-post-image"
    по Ссылке 2 :
    class="attachment-underscores-post-thumbnail-single size-underscores-post-thumbnail-single wp-post-image"
    в) размеры ширину и высоту берёт из моей функции:
//Фильтр, изменяет размеры миниатюры для записи
//где: в файле content.php
if ( function_exists( 'add_theme_support' ) ) {
	add_theme_support( 'post-thumbnails' );
		set_post_thumbnail_size( 296, 148, false );
}

Как-то так. Старался кратко и лаконично изложить.

Буду рад помощи!

Заметки к вопросу:
mxm 5 лет назад

Вроде как нашёл в какую строну двигаться, здесь:
inc\template-tags.php

mxm 5 лет назад

Вообщем, долго я боролся с ?-ом как развязать стиль вывода картинки между категориями, страницами, записями...

Фильтр

add_filter( 'post_thumbnail_html'
  • тоже не развязывает...

В итоге сделал так:

1.
открыл:
inc\template-tags.php
нашёл:

if ( is_singular() ) :

заменил на:

if ( is_singular() || is_category() || is_archive() ) :

2.
открыл свой подключённый файл с функциями/фильтрами
добавил функцию:

function underscores_post_thumbnail_content()
{
 ?>
	<a href="<?php the_permalink(); ?>" aria-hidden="true" tabindex="-1">
	<?php
		the_post_thumbnail( 'post-thumbnail', array(
			'alt' => the_title_attribute( array(
				'echo' => false,
			) ),
		) );
	?>
	</a>
<?php
}

3.
в нужных местах вывода картинки заменил:

underscores_post_thumbnail();

на это:

underscores_post_thumbnail_content();

Коммент: можно было в нужных местах заменить на:

the_post_thumbnail();

но, пришлось бы дополнительно оборачивать в тег A, а это не есть гуд.

Возможно, что это не правильное решение, но работает!

Всем спасибо за внимание!

Жму пять!