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

Код, который работает для создания нового столбца в админке 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. Однако я хотел бы знать, что я здесь делаю не так, чтобы научиться. Спасибо!


person aronmoshe_m    schedule 07.02.2019    source источник
comment
Если вы нашли решение (как вы упомянули ниже), разместите его здесь и отметьте как ответ!   -  person Benji    schedule 15.07.2020


Ответы (1)


Не могу помочь вам с вашим кодом, но если вы дошли до точки, когда вам надоело работать над ним, вы можете заглянуть на Столбцы администратора Pro.

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

Я бы поставил это как комментарий, но недостаточно очков. Извините.

person Nick Hogan    schedule 14.02.2019
comment
Да, я использовал этот плагин раньше, и это здорово. На этот раз я просто хотел создать его с нуля - и отличные новости, я просто заставил его работать! Я опубликую решение в ближайшее время. Спасибо! - person aronmoshe_m; 15.02.2019