trakhtenberg
@trakhtenberg

Как задать вывод цитаты (the_excerpt) в Wordpress независимо от заполнения поля?

Дано: CPT, данные в котором заполняются через ACF. То есть в обычном понимании у записи нет ни цитаты, ни контента.
Требуется: Вывести список постов (архив), пользуясь Elementor.

Проблема: Часть виджетов Elementor, оперирующих выводом списка постов, ориентируются на стандартные поля.

Функции the_excerpt() и get_the_excerpt() выводят цитату согласно правила: если заполнено что-то в поле цитата, то это содержимое; если не заполнено, то контент поста; если и контента нет - то ничего не выводят. Эти же функции имеют хуки - это прекрасно! То есть я без проблем подменяю содержимое цитаты моим контентом из ACF. Вот только эти хуки срабатывают только, когда has_excerpt() возвращает true; то есть они дают мне возможность ПЕРЕОПРЕДЕЛИТЬ выводимую цитату. А мне надо, чтобы они срабатывали каждый раз при самом запросе вывода цитаты, и независимо от наличия цитаты или содержимого поста (которых, мы помним, у меня нет) - все равно вызывали сработку функции, определенной у меня в add_filter и получали/выводили мое содержимое.

Как это сделать, как обмануть систему?
Лобовое решение, понятно, при создании поста перехватывать хук и принудительно писать что-то типа 'xyz' в поле цитаты. Пользователь все равно не увидит, а система увидит заполненную цитату. Но это некий брутфорс )) хочется изящнее и без перезаписи БД.
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Почему бы вам не написать свою функцию и использовать ее в теме? Так и поля ACF будет проще собирать

function custom_excerpt() {

	$html = '';

	if ( has_excerpt() ) {
		$html = get_the_excerpt();
	} else {
		// если нет контента, то собираем $html из полей ACF
	}

	return $html;

}


Использование в теме:

<?php echo custom_excerpt(); ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы