Как добавить, изменить или удалить те или иные элементы относительно формата поста WordPress?
Пытаюсь стилизовать различные форматы постов WP. Возник вопрос о возможности добавить, изменить или удалить те или иные элементы относительно постов в лентах. Например: удалить header, добавить comments и увеличить объём excerpt формата поста image. То есть кардинально изменить «стандартный» вид поста в лентах home и archive. Для чего, в общем-то, и нужны форматы постов. Их поддержку я зарегистрировал в functions.php. Дальше — затык. В php я почти ноль: могу лишь залезть в код и подправить какую-нибудь мелочь.
Можете накидать код под описанные потребности? Спасибо!
Дополнительно:
Можете накидать код под описанные потребности?
Накидать код, да еще и рабочий, вам могут на фриланс-бирже
Ответы:
Вы можете получить формат поста с помощью get_post_format() и использовать его в условиях вывода различного контента
add_filter( 'excerpt_length', function() { global $post; $length = 55; if ( get_post_format( $post->ID ) === 'image' ) { $length = 10; } return $length; } ); |
add_filter( 'excerpt_length', function() { global $post; $length = 55; if ( get_post_format( $post->ID ) === 'image' ) { $length = 10; } return $length; } );
- Спасибо.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Форматы записей WordPress сами по себе не меняют кардинально шаблон. Они только добавляют признак: image, video, quote, gallery и т.д. А уже тема должна решить, как выводить запись каждого формата. Поэтому менять header, excerpt, comments и другие элементы нужно в шаблоне темы или через template parts.
В цикле можно определить формат так:
$format = get_post_format(); if (!$format) { $format = 'standard'; }
Дальше подключать разные части шаблона:
get_template_part('template-parts/content', $format);
Тогда для формата image будет файл:
template-parts/content-image.php
Для video:
template-parts/content-video.php
А для обычной записи:
template-parts/content-standard.php
В каждом файле можно выводить свою структуру: где-то убрать header, где-то показать увеличенный excerpt, где-то вывести комментарии или метаданные.
Если нужно изменить длину excerpt только для одного формата, проще сделать свою функцию:
function theme_format_excerpt($length = 25) { $text = wp_strip_all_tags(get_the_excerpt()); $words = preg_split('/s+/', $text); if (count($words) > $length) { $text = implode(' ', array_slice($words, 0, $length)) . '...'; } return esc_html($text); }
И в шаблоне image:
echo theme_format_excerpt(45);
Удалять/добавлять элементы через CSS не лучший путь: HTML всё равно останется, а логика станет хрупкой. Правильнее разнести вывод по template parts.
Если изменения нужны не только в ленте, но и на одиночной записи, проверьте также
single.phpилиcontent-single.php. Формат можно учитывать и там.Итог: включаете поддержку post formats в теме, создаёте отдельные шаблонные части под нужные форматы и в каждой управляете структурой вывода. Это нормальный WordPress-путь без хака ядра и без ломания остальных записей.