Код, который работает для создания нового столбца в WordPress Admin для списка сообщений:
//adds new column to posts list in Wordpress admin
add_filter( 'manage_posts_columns', 'set_custom_edit_mycpt_columns' );
function set_custom_edit_mycpt_columns( $columns ) {
$columns['acf_field'] = __( 'Editorial status', 'my-text-domain' );
return $columns;
}
// pulls label from ACF Pro select field into new column for each post
add_action( 'manage_posts_custom_column' , 'custom_mycpt_column', 10, 2 );
function custom_mycpt_column( $column, $post_id ) {
switch ( $column ) {
// display the value of an ACF (Advanced Custom Fields) field
case 'acf_field' :
$ed_status = get_field_object( 'ed_status_acf', $post_id );
$ed_status_pretty = $ed_status['label'];
echo $ed_status_pretty;
break;
}
}
Проблема: Я успешно вытаскиваю ярлыки извыберите поле, которое я создал в Advanced Custom Fields Pro, в каждом сообщении, и увидите, что эти ярлыки заполнены в столбце «Редакционный статус».(См. Рабочую часть кода выше.) Я не могу понять, как сделать этот столбец сортируемым, несмотря на то, что пробовал разные учебники.
Неработающая часть кода приведена ниже.Этот код не нарушает работу сайта - колонка просто остается несортируемой.
// make new column sortable by ACF field
add_filter( 'manage_edit-posts_sortable_columns', 'set_custom_mycpt_sortable_columns' );
function set_custom_mycpt_sortable_columns( $columns ) {
$columns['custom_taxonomy'] = 'custom_taxonomy';
$columns['acf_field'] = 'acf_field';
return $columns;
}
// give parameters to Wordpress for sorting the new column
add_action( 'pre_get_posts', 'mycpt_custom_orderby' );
function mycpt_custom_orderby( $query ) {
if ( is_admin() ) {
return;
$orderby = $query->get( 'orderby');
if ( 'acf_field' == $orderby ) {
$query->set( 'meta_key', 'acf_field' );
$query->set( 'orderby', 'meta_value' );
}
}
}
Цель: Выяснить, что я делаю неправильно, и сделать столбец «Редакционный статус», который появляется на странице списка сообщений в Wordpress, сортируемым по админке.Я хотел бы иметь возможность сортировать по алфавиту по статусу редактора (например, черновик, ожидает рассмотрения, находится на рассмотрении и т. Д.)
Весь приведенный выше код в настоящее время находится в пользовательском плагине, который я создал.Я видел решения, которые работают, когда поля выбора ACF Pro не используются, поэтому я чувствую, что это связано с pre_get_posts
, а использование мета из выбора с get_field_object
, но я не уверен.
Любая обратная связь приветствуется, так как я не могу понять, где я иду не так!Я знаю, что есть плагины для создания настраиваемых сортируемых столбцов для Wordpress.Я хотел бы знать, что я делаю здесь не так, чтобы учиться.Спасибо!