0

0

快速技巧:启用可排序的自定义列

WBOY

WBOY

发布时间:2023-09-01 17:45:13

|

695人浏览过

|

来源于php中文网

原创

快速技巧:启用可排序的自定义列

在 Claudio Simeone 最近发表的一篇文章中,他演示了如何向帖子添加额外的列,或自定义帖子类型、管理屏幕(或删除现有的)。在这个快速技巧中,我将在此基础上向您展示如何使新创建的列可排序。


要告诉 WordPress 您要将哪些列注册为可排序,您需要此过滤器:

manage_{$screen->id}_sortable_column

对于帖子和页面,$screen->id 分别是“edit-post”和“edit-page”。一般来说,对于名称为“my-post-type”的帖子类型,它是“edit-my-post-type”。

过滤器传递一个数组,其中可排序列的名称作为键,排序依据作为值。更准确地说,这些值指示在填充表的查询中设置“orderby”参数。与删除列的方式相同,您也可以通过从该数组中删除列来使列“不可排序”。让我们看一个例子:


注册列

根据 Claudio 的文章,假设我们已将“切片”列添加到“蛋糕”帖子类型中,我们可以执行以下操作:

add_filter('manage_edit-cake_columns', 'my_extra_cake_columns');
function my_extra_cake_columns($columns) {
	$columns['slices'] =__('Slices','myplugindomain');
	return $columns;
}

我们为该列添加了如下内容:

add_action( 'manage_cake_posts_custom_column', 'my_cake_column_content', 10, 2 );
function my_cake_column_content( $column_name, $post_id ) {
	if ( 'slices' != $column_name )
		return;
	//Get number of slices from post meta
	$slices = get_post_meta($post_id, 'slices', true);
	echo intval($slices);
}

我已将切片存储为后元,但您的列可以由其他数据填充。

Joker AIx
Joker AIx

一站式AI创意生产平台,覆盖图像、视频、音频、文案全品类创作

下载

使列可排序

现在我们将自定义列注册为“可排序”。如上所述,我们使用 manage_{$screen->id}_sortable_column 过滤器。本例中的 $screen->id 是“edit-cake”。

add_filter( 'manage_edit-cake_sortable_columns', 'my_sortable_cake_column' );
function my_sortable_cake_column( $columns ) {
	$columns['slices'] = 'slice';

	//To make a column 'un-sortable' remove it from the array
	//unset($columns['date']);

	return $columns;
}

$columns 数组的键表示可排序列,其值告诉 WordPress 在查询中将 'orderby' 设置为什么。如果该值是 WordPress 本身理解的 'orderby 之一(这些值包括 'title'、'date'、'modified'、'comment_count',或者确实是下面列出的任何其他值WordPress Codex 中的 WP_Query)我们可以到此为止。此规则的例外情况(如本例所示)是 'meta_value' 和 'meta_value_num' 参数,它们也要求我们设置元密钥。

如果我们想按元值排序,或者通过 WordPress 无法自动理解的其他方式进行排序,您必须告诉它按“切片”排序的含义。如果您通过 post meta 订购,最简单的方法是挂钩 pre_get_posts 操作。这传递了一个我们可以修改的查询对象。请注意,所有默认查询(正面和背面)都会触发此操作。虽然它不太可能引起任何问题,但除非您希望 WordPress 在前端也将 orderby 设置为“切片”,否则最好只在管理端影响查询。

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

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

	if( 'slice' == $orderby ) {
		$query->set('meta_key','slices');
		$query->set('orderby','meta_value_num');
	}
}

这会检查我们的查询是否按“切片”排序,如果是,它会告诉 WordPress 按“切片”帖子元的值进行数字排序。如果您想按字母顺序对值进行排序,请使用 'meta_value' 而不是 'meta_value_num'。

$query 是一个 WP_Query 对象,因此您可以使用该对象对任何内容进行排序,您也可以对列进行排序。对于其他更复杂的事情,您需要挂钩 posts_orderby (或 post_clauses)挂钩,但这超出了本快速提示的范围。

注意:如果帖子没有为该元键存储值,那么当您按该元键排序时,该帖子将不会显示。这与将 0 存储为元值的帖子不同。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 数组和切片
go语言 数组和切片

本专题整合了go语言数组和切片的区别与含义,阅读专题下面的文章了解更多详细内容。

56

2025.09.03

wordpress seo
wordpress seo

WordPress网站SEO优化方法有:1、选择一个SEO友好的主题,具有清晰的代码结构,快速的加载速度和响应式设计;2、使用SEO插件,优化你的标题标签,元描述,关键字,XML站点地图等;3、优化你的内容,内容是SEO优化的核心;4、优化你的网站速度;5、创建友好的URL;6、使用内部链接;7、优化图像;8、使用社交媒体;9、定期更新你的网站;10、监控和分析你的网站等等。

435

2023.09.18

wordpress下载后怎么安装
wordpress下载后怎么安装

安装前准备:确保服务器满足要求、获取安装文件、创建数据库。上传 wordpress 文件。创建数据库和用户。运行安装程序:选择语言、输入数据库信息、网站标题和管理员信息。安装 wordpress。安装后配置:设置永久链接、安装主题、安装插件、创建内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

336

2024.04.15

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

71

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

82

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号