Сортируемый пользовательский столбец, использующий поле выбора ACF Pro в WordPress admin для списка сообщений

Код, который работает для создания нового столбца в админке WordPress для списка сообщений:

//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. Я хотел бы знать, что я делаю здесь не так, чтобы учиться. Спасибо!

0

Решение

Не могу помочь с вашим кодом, но если вы дойдете до того момента, когда вам надоело работать с ним, вы можете посмотреть на Admin Columns Pro.

Давайте легко создадим столбцы для записей или списков страниц (или любой СРТ / таксономии), и вы можете установить эти столбцы для встроенного редактирования, сортировки, фильтрации и т. Д.

Поставил бы это как комментарий, но не хватило очков. Сожалею.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector