自定义帖子类型的WordPress中的可排序列

ws51t4hk  于 2022-10-24  发布在  WordPress
关注(0)|答案(1)|浏览(253)

我在一家WordPress网站的管理部门工作。我有一个CPT,我在其中添加了一列,并希望按该列类型进行排序。根据我所读到的内容,我使用的是正确的函数,但在过滤‘Manage_EDIT-Leadline_Sortable_Columns’之后,管理用户界面没有任何变化。这是一个CPT,层次结构被设置为“True”。我读到过,这可能会影响它,但找不到解决办法。这一栏还显示了一个红色圆圈和旁边的‘0’,我不知道它是从哪里来的。最终目标是将站点上的显示页面设置为菜单顺序,并为客户提供按标题或姓氏排序的选项。谢谢!

add_filter( 'manage_leadership_posts_columns', 'smashing_filter_posts_columns' );
function smashing_filter_posts_columns( $columns ) {
    $name = array();    
  $name['last_name'] = __( 'Last Name', 'smashing', true );
  array_splice($columns, 2, 0, $name);
  return $columns;
}

function smashing_leadership_column( $column, $post_id ) {
  // Name column
  if ( 'last_name' == $column ) {
      $lastName = get_field('last_name', $post_id );
     echo $lastName;
  }
}
add_action( 'manage_leadership_posts_custom_column', 'smashing_leadership_column', 10, 2);

function smashing_leadership_sortable_columns( $columns ) {
  $columns['last_name'] = 'last_name';
  return $columns;
}

add_filter( 'manage_edit-leadership_sortable_columns', 'smashing_leadership_sortable_columns');

add_action( 'pre_get_posts', 'smashing_posts_orderby' );
function smashing_posts_orderby( $query ) {
if( ! is_admin() || ! $query->is_main_query() ) {
    return;
    }

  if ( 'last_name' === $query->get( 'orderby') ) {
    $query->set( 'orderby', 'meta_value' );
    $query->set( 'meta_key', 'last_name' );
  }
}

Admin Screenshot

xriantvc

xriantvc1#

我能够用下面的代码取代其他可排序的筛选器来实现这一点。

add_filter( 'manage_edit-leadership_sortable_columns', 'my_sortable_leadership_columns' );
function my_sortable_leadership_columns( $columns ) {
    $columns['firstName'] = 'first';
    $columns['lastName'] = 'last';

    return $columns;
}

add_action( 'pre_get_posts', 'my_leadership_orderby' );
function my_leadership_orderby( $query ) {
    if( ! is_admin() )
        return;

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

    if( 'first' == $orderby ) {
        $query->set('meta_key','first_name');
        $query->set('orderby','meta_value');
    }

    if( 'last' == $orderby ) {
        $query->set('meta_key','last_name');
        $query->set('orderby','meta_value');
    }
}

相关问题