使用高级自定义字段对分类管理表进行列排序

时间:2018-06-15 13:34:23

标签: wordpress sorting admin advanced-custom-fields

我试图让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。提前谢谢!

-

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

Order - Ascending

Order - Descending

  • 精选(kw_featured_tag)是真/假
  • 订单(kw_tag_order)是一个数字字段
  • 组(kw_group_tags)是一个 复选框数组(我更改它以返回一个数组,现在我需要修复 我的代码来获取要显示的数组中的项目列表 只是"阵列")

0 个答案:

没有答案