Управление полем поста «Отрывок» (Цитата) через 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-поля в результаты поиска.