首页 > 解决方案 > 使用高级自定义字段对分类管理表进行列排序

问题描述

我试图让我在 edit-tags.php 上的管理列可以按 ACF 字段值排序,但我遗漏了一些东西。我可以单击列标题对列进行排序,但它仅按标记名称对表进行排序,而不是列中的 ACF 字段值。如果有人可以提供帮助,我将不胜感激!

我已经设置了要添加的列:

/**
* Add columns to the post_tags admin table
*/
function add_post_tag_columns($columns){
  $columns['featured'] = 'Featured';
  $columns['order'] = 'Order';
  $columns['group'] = 'Group';

  // Remove description column from table
  unset( $columns['description'] );
  return $columns;
}
add_filter('manage_edit-post_tag_columns', 'add_post_tag_columns');

我已经为每列中的标签设置了值:

/**
* Set values for new post_tags admin table columns
*/
function add_post_tag_column_content( $content, $column_name, $term_id ){
  $term= get_term($term_id, 'post_tag');

  switch ( $column_name ) {

  // display the value of ACF fields
  case 'featured' :
    $content = the_field( 'kw_featured_tag', $term );
    break;

  case 'order' :
    $content = the_field( 'kw_tag_order', $term );
    break;

  case 'group' :
    $content = the_field( 'kw_group_tags', $term );
    break;

  }
  return $content;
}
add_filter('manage_post_tag_custom_column', 'add_post_tag_column_content', 10, 3);

我已经设置了列排序

/**
* Make columns on post_tags admin table sortable
*/
function set_custom_post_tag_sortable_columns( $sortable_columns ) {
  $sortable_columns['featured'] = 'kw_featured_tag';
  $sortable_columns['order'] = 'kw_tag_order';
  $sortable_columns['group'] = 'kw_group_tags';

  return $sortable_columns;
}
add_filter( 'manage_edit-post_tag_sortable_columns', 'set_custom_post_tag_sortable_columns' );

这就是[我认为]我遇到问题的地方:

/**
* Set up the orderby for the column sorting
*/
function post_tag_custom_orderby( $query ) {
  if ( ! is_admin() )
    return;

  $orderby = $query->get( 'orderby');

  if ( 'featured' == $orderby ) {
    $query->set( 'meta_key', 'kw_feature_tag' );
    $query->set( 'orderby', 'meta_value_num' );
  }
  elseif ( 'order' == $orderby ) {
    $query->set( 'meta_key', 'kw_tag_order' );
    $query->set( 'orderby', 'meta_value_num' );
  }
  elseif ( 'group' == $orderby ) {
    $query->set( 'meta_key', 'kw_group_tags' );
    $query->set( 'orderby', 'meta_value' );
  }
}
add_action( 'pre_get_posts', 'post_tag_custom_orderby' );

如果有人可以帮助缩小我做错的范围,我会是一个非常高兴的 Wordpress 开发人员:P。提前致谢!

--

编辑:这是我的管理表的几个屏幕截图:

顺序 - 升序

顺序 - 降序

标签: wordpresssortingadminadvanced-custom-fields

解决方案


推荐阅读