Вывод последней полной записи в категории
Ситуация:
- 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 ); }
Как-то так. Старался кратко и лаконично изложить.
Буду рад помощи!
Вообщем, долго я боролся с ?-ом как развязать стиль вывода картинки между категориями, страницами, записями...
Фильтр
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, а это не есть гуд.
Возможно, что это не правильное решение, но работает!
Всем спасибо за внимание!
Жму пять!
Вроде как нашёл в какую строну двигаться, здесь:
inc\template-tags.php