Как добавить, изменить или удалить те или иные элементы относительно формата поста WordPress?

Ссылка скопирована
1 ответ

Пытаюсь стилизовать различные форматы постов WP. Возник вопрос о возможности добавить, изменить или удалить те или иные элементы относительно постов в лентах. Например: удалить header, добавить comments и увеличить объём excerpt формата поста image. То есть кардинально изменить «стандартный» вид поста в лентах home и archive. Для чего, в общем-то, и нужны форматы постов. Их поддержку я зарегистрировал в functions.php. Дальше — затык. В php я почти ноль: могу лишь залезть в код и подправить какую-нибудь мелочь.

Можете накидать код под описанные потребности? Спасибо!

Дополнительно:

Можете накидать код под описанные потребности?

Накидать код, да еще и рабочий, вам могут на фриланс-бирже

  • Форматы вообще не для этого. (да и вообще нафик не нужны по большому счёту). Кури шаблоны
  • maksam07, просьба оставлять соответствующую жалобу
  • Refguser, спасибо за идею. Воспользуюсь.
  • maksam07, только за 2023 я оплатил двадцать восемь IT-проектов и без счёта доработок. Уверяю вас — халява не моё. Мой запрос скорее разминка для программиста, чем глобальный оверсайз.
  • Ответы:

    Вы можете получить формат поста с помощью 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; } );

    • Спасибо.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Frontend-редакция Ответ

    Форматы записей WordPress сами по себе не меняют кардинально шаблон. Они только добавляют признак: image, video, quote, gallery и т.д. А уже тема должна решить, как выводить запись каждого формата. Поэтому менять header, excerpt, comments и другие элементы нужно в шаблоне темы или через template parts.

    В цикле можно определить формат так:

    $format = get_post_format();
     
    if (!$format) {
        $format = 'standard';
    }

    $format = get_post_format(); if (!$format) { $format = 'standard'; }

    Дальше подключать разные части шаблона:

    get_template_part('template-parts/content', $format);

    get_template_part('template-parts/content', $format);

    Тогда для формата image будет файл:

    template-parts/content-image.php

    template-parts/content-image.php

    Для video:

    template-parts/content-video.php

    template-parts/content-video.php

    А для обычной записи:

    template-parts/content-standard.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);
    }

    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);

    echo theme_format_excerpt(45);

    Удалять/добавлять элементы через CSS не лучший путь: HTML всё равно останется, а логика станет хрупкой. Правильнее разнести вывод по template parts.

    Если изменения нужны не только в ленте, но и на одиночной записи, проверьте также single.php или content-single.php. Формат можно учитывать и там.

    Итог: включаете поддержку post formats в теме, создаёте отдельные шаблонные части под нужные форматы и в каждой управляете структурой вывода. Это нормальный WordPress-путь без хака ядра и без ломания остальных записей.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно