
Небольшая заметка о том, как добавить созданные AFC плагином поля на страницу списка записей кастомного типа.
Advanced Custom Field (AFC) это удобный такой плагин для добавления кастомных полей различных типов записей в WordPress. Недавно потребовалось добавить поля, созданные данным плагином на страницу списка записей кастомного типа.
Предположим, что у нас есть тип «Offers» в котором мы храним заявки с какой то формы на нашем сайте, мы создали в ACF два поля email и telefon, и хотим добавить их на страницу списка записей, чтобы выглядело подобным образом:
Для этого нам потребуются следующие хуки:
- manage_{$screen->id}_columns (wp-admin/includes/class-wp-list-table.php) – Отвечает за управление колонок на указанном экране (у нас edit-post). Передает массив с данными колонок, который мы можем изменить, добавив свою колонку (views) или удалить существующую через unset(). Название нашего фильтра будет: manage_offers_posts_columns.
- manage_{$post->post_type}_posts_custom_column (wp-admin/includes/class-wp-posts-list-table.php) – Отвечает за заполнение данных колонки на странице постов. В нашем случае: manage_offers_posts_custom_column. Передает название колонки и ID поста.
Итак, создаем колонки. Для этого нужно вставить следующий код в functions.php :
/* * Add columns to Offers post list */ function add_acf_columns ( $columns ) { return array_merge ( $columns, array ( 'email' => __ ( 'Email' ), 'telefon' => __ ( 'Telefon' ) ) ); } add_filter ( 'manage_offers_posts_columns', 'add_acf_columns' );
А теперь, получаем значения в созданные нами колонки:
/* * Add columns to Offers post list */ function offers_custom_column ( $column, $post_id ) { switch ( $column ) { case 'email': echo get_post_meta ( $post_id, 'email', true ); break; case 'telefon': echo get_post_meta ( $post_id, 'telefon', true ); break; } } add_action ( 'manage_offers_posts_custom_column', 'offers_custom_column', 10, 2 );
Вот и все, наши колонки на месте.
Данный материал был скопирован, с закрытого сайта yuriysmirnov.ru, и сохранен для себя. На авторство не претендую.
А как сортировать и фильтровать эти поля?
В админке или фронтенде вам нужно фильтровать записи?