Управление полем поста «Отрывок» (Цитата) через ACF в WordPress

Этот код синхронизирует значение ACF-поля material_excerpt с нативным полем WordPress post_excerpt ("Цитата"):

  • При сохранении ACF-поля material_excerpt, его значение автоматически записывается в post_excerpt поста.
  • При загрузке поля material_excerpt в интерфейсе ACF, оно отображает содержимое post_excerpt, а не собственное сохранённое значение.

Это удобно, если вы хотите управлять стандартным полем "Цитата" WordPress через ACF-интерфейс, но при этом сохранить совместимость с темами и функциями, использующими post_excerpt.

// Сохраняет данные с acf-поля material_excerpt в wp-поле post_excerpt
add_filter( 'acf/update_value/name=material_excerpt', static function ( $value, $post_id ) {
	wp_update_post( [
		'ID'           => $post_id,
		'post_excerpt' => $value,
	] );

	return '';
}, 10, 2 );

// Читает данные с wp-поле post_excerpt вместо acf-поля material_excerpt
add_filter( 'acf/load_value/name=material_excerpt', static function ( $value, $post_id ) {
	return get_post( $post_id )->post_excerpt ?? $value;
}, 10, 2 );

Получить значение можно теперь двумя равноправными способами:

# 1 способ
get_the_excerpt();

# 2 способ
get_field( 'material_excerpt' );

Дополнительное преимущество такого подхода — ACF-поле material_excerpt будет визуально и функционально наравне с другими ACF-полями в редакторе, не выбиваясь из общего интерфейса. Поле "Отрывок" будет выглядеть органично в блоке ACF, без необходимости прокручивать страницу к стандартному метабоксу WordPress.

Самое главное — благодаря тому, что значение сохраняется в post_excerpt, оно автоматически участвует в стандартном поиске WordPress. Это избавляет от необходимости писать дополнительный код для включения ACF-поля в результаты поиска.

campusboy 5000youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
2 комментария
    Войти