首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义Post类型的Wordpress中的可排序列

自定义Post类型的Wordpress中的可排序列
EN

Stack Overflow用户
提问于 2022-10-18 23:11:42
回答 1查看 51关注 0票数 0

我正在为Wordpress网站做管理方面的工作。我有一个CPT,我已经添加了一个列,并希望按该列类型进行排序。根据我所读到的内容,我使用的是正确的函数,但是在“manage_编辑-领导层_sortable_columns”的筛选器之后,对管理UI没有任何更改。这是一个CPT,层次结构设置为“True.‘.”我读到这可能会影响到它,但却找不到解决办法。该列还出现了一个红色的圆圈和'0‘在它旁边,我不知道它来自哪里。最终的目标是将站点上的显示页面设置为菜单顺序,并给客户端按标题或姓氏排序的选项。谢谢!

代码语言:javascript
复制
    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' );
  }
}

管理员截图

EN

回答 1

Stack Overflow用户

发布于 2022-10-19 21:23:25

我能够让它使用下面的代码来代替其他可排序的过滤器。

代码语言:javascript
复制
  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');
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74118352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档