tfrommen / meta-taxonomy
此插件注册了一个分类法,提供了一种基于元数据的高性能方式来查询文章。
Requires
- php: >=5.3.0
- composer/installers: ~1.0
Requires (Dev)
- php: >=5.3.3
- 10up/wp_mock: dev-master
- mockery/mockery: ~0.9.4
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-15 15:23:09 UTC
README
您是否曾经希望根据特定元数据是否设置或等于给定值来查询文章,但后来听说/了解到(复杂的)元数据查询实际上非常低效?
这正是 元分类法 发挥作用的时候。
免责声明:此插件并不打算在一般情况下取代文章元数据API。在许多情况下,使用文章元数据比使用术语更有意义,或者在某些情况下,使用术语是根本不可能的。
安装
- 下载ZIP文件.
- 将内容上传到您的Web服务器上
/wp-content/plugins
目录。 - 通过WordPress的 插件 菜单激活插件。
- 您将惊叹于您的 meta-tax 查询速度有多快,与普通的元数据查询相比。
使用方法
老实说,这个插件没什么大不了的。它只是提供了一个单点解决方案,让您可以使用基于高性能分类法的元数据查询。一旦插件激活,您就可以将新元数据分类法的术语分配给您的文章,然后以非常高效的方式查询文章(与元数据查询相比)。
过滤器
为了自定义插件的一些方面,它为您提供了一些过滤器。以下是每个过滤器的简短描述以及如何修改默认行为的代码示例。只需将相应的代码片段放入您的主题的 functions.php
文件或您的 自定义 插件,或放入其他合适的位置。
meta_taxonomy_args
如果您想修改特定的分类法参数但找不到合适的过滤器,那么有 meta_taxonomy_args
,它为您提供完整的参数数组。
/** * Filters the taxonomy args. * * @param array $args Taxonomy args. */ add_filter( 'meta_taxonomy_args', function( $args ) { // Turn the whole taxonomy UI invisible $args[ 'show_ui' ] = FALSE; return $args; } );
meta_taxonomy_capabilities
此过滤器为您提供执行四个特定分类法操作的所需权限 manage_terms
、edit_terms
、delete_terms
和 assign_terms
。
/** * Filters the taxonomy capabilities. * * @param string[] $capabilities Taxonomy capabilities. */ add_filter( 'meta_taxonomy_capabilities', function( $capabilities ) { // Let meta taxonomy terms be deleted by admins only $capabilities[ 'delete_terms' ] = 'manage_options'; return $capabilities; } );
meta_taxonomy_description
如果您想修改分类法描述,请通过此过滤器自由修改。
/** * Filters the taxonomy description. * * @param string $description Taxonomy description. */ add_filter( 'meta_taxonomy_description', function() { // Kill the description return ''; } );
meta_taxonomy_labels
如果您不喜欢标签,可以轻松地根据您的喜好进行修改。
/** * Filters the taxonomy labels. * * @param string[] $labels Taxonomy labels. */ add_filter( 'meta_taxonomy_labels', function( $labels ) { // A little more horror, please... $labels[ 'not_found' ] = 'ZOMG, no metas found!!1!!1!!oneone!!!1!eleven!1!'; return $labels; } );
meta_taxonomy_name
是的,您也可以修改分类法名称(别名)。
/** * Filters the taxonomy name. * * @param string $name Taxonomy name. */ add_filter( 'meta_taxonomy_name', function() { // Rename it return 'meta_term'; } );
meta_taxonomy_object_type
默认情况下,元数据分类法只为默认文章(即,文章类型 post
)注册。如果您想添加其他自定义文章类型,请使用此过滤器。您可以返回单个文章类型别名,或者它们的数组。
/** * Filters the taxonomy object types. * * @param string[] $object_types Array of names of object types for the taxonomy. */ add_filter( 'meta_taxonomy_object_types', function( $object_types ) { // Add the taxonomy for pages and a CPT, too return array_unique( array_merge( (array) $object_types, array( 'page', 'my_cpt', ) ) ); } );
函数
为了使用特定的功能,可能已经有一个函数。为了避免任何不兼容性,所有全局插件函数都是可插拔的。在极少数情况下,如果您已经有一个与插件函数同名且位于全局命名空间中的函数,您将必须自己设置此类函数。原则上,这只是复制了您可以在 此插件 的 functions.php
文件中找到的内容。
has_meta_term
如果您想检查特定文章是否具有特定的元数据术语,您可以通过插件中的 has_meta_term
函数来做到这一点。
if ( has_meta_term( get_the_ID(), 'popular' ) ) { // Do something }
贡献
如果您有功能请求,或者如果您已经开发了这个功能,请随时使用问题和/或拉取请求部分。
当然,如果您想使用插件在尚未包含的语言中,也可以提供翻译。