Небольшая заметка о том, как добавить созданные 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, и сохранен для себя. На авторство не претендую.
А как сортировать и фильтровать эти поля?
В админке или фронтенде вам нужно фильтровать записи?