如何通过编程方式在WordPress后台自定义页面添加自定义列
自定义后台页面添加自定义列实现方案
你当前提供的代码是专门用于WordPress默认用户管理列表新增列的实现,要适配自定义后台页面的需求,需要根据你自定义页面的类型调整对应钩子和逻辑,分两种常见场景给出实现方案:
场景1:自定义文章类型的后台列表页
如果你的自定义页面是注册的自定义文章类型(比如slug为book),直接把用户列表的钩子替换为对应文章类型的专属钩子,同时补充列内容渲染逻辑即可,示例代码如下:
// 给自定义文章类型列表注册自定义列 function custom_post_add_columns( $columns ) { // 键名为自定义列的唯一标识,值为列显示的标题 $columns['custom_column_slug'] = '自定义列标题'; return $columns; } // 把下方的book替换为你自己的自定义文章类型slug add_filter( 'manage_book_posts_columns', 'custom_post_add_columns' ); // 渲染每一行自定义列的内容 function custom_post_render_column( $column, $post_id ) { if ( $column === 'custom_column_slug' ) { // 这里写你要输出的内容逻辑,比如输出对应文章的自定义字段值 echo get_post_meta( $post_id, '你的自定义字段key', true ); } } add_action( 'manage_book_posts_custom_column', 'custom_post_render_column', 10, 2 );
你原代码中的user_contactmethods钩子是用于给用户个人资料页新增联系方式字段的,如果你的自定义列不需要关联用户联系方式,这段逻辑可以直接删除。
场景2:完全自主开发的自定义后台页面
如果是通过add_menu_page/add_submenu_page注册的完全自定义后台页面,分两种情况处理:
- 自己手写HTML渲染列表:直接在列表
<thead>中添加对应<th>列标题,在<tbody>循环输出行数据时,对应添加<td>输出列内容即可,不需要用WordPress内置钩子。 - 用WordPress内置
WP_List_Table类开发列表:需要重写类的get_columns()方法注册自定义列,同时重写column_{自定义列标识}()方法渲染列内容,核心代码片段参考:
// 继承WP_List_Table类后重写get_columns方法注册列 function get_columns() { $columns = [ 'cb' => '<input type="checkbox" />', 'title' => '标题', 'custom_column' => '自定义列' // 新增自定义列 ]; return $columns; } // 重写自定义列的渲染方法 function column_custom_column( $item ) { // $item为当前行的数据,这里输出对应内容即可 return $item['custom_field_value']; }
内容的提问来源于stack exchange,提问作者HafizHamzaCS
相关产品推荐
相关产品推荐

