pkarl / quick-query
Quick-Query 是一款WordPress插件,它提供了一种类似jQuery的界面来查询文章和其他信息。
Requires
- php: >=5.3.0
- composer/installers: ~1.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- wp-cli/wp-cli: *
This package is not auto-updated.
Last update: 2024-09-24 07:11:59 UTC
README
Quick Query 是一个从WordPress中获取数据的界面,使用户界面直观且易于使用。它使用类似jQuery的语法来链接简单信息片段,并返回正确的信息。
项目更新 2014年8月15日
这里有一些要点
- 事实上,保持wordpress.org上SVN版本的更新是非常麻烦的,所以直到这个达到真正的alpha版本之前,我不会在那里浪费我的精力
- 当这发生时,我将确保composer和wp.org都可以访问QQ
- 默认情况下检索所有帖子。我认为WordPress的不是很聪明的默认设置是开发者应该明确指出的,所以请预热你的
ppp() - 测试进行得非常好,尽管我在WordPress + PHPUnit和那个不完整/文档糟糕的工厂类上遇到了极大的困难。最后,我结合了工厂组件、内置WordPress函数和一些魔法技巧来创建单元测试的对象
- 标签、分类法等是这部分最复杂的部分。我几乎完成了一个草稿,它适应了几乎所有种类的tax_queries,但我需要与其他WP_Query参数结合测试它,并完善
tax()链接界面 - 作者、父级和子级代码将在那之后很快完成
工作原理及背景
Quick Query 是作为处理 WP_Query 的语法糖而开始的。在几个项目的过程中,这个甜蜜的待遇变成了必要的,将80%耗时查询代码简化为几行愉快的代码。
这是一个在高要求场景下的比较
// The WP_Query way $args = array( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'movie_genre', 'field' => 'slug', 'terms' => array( 'action', 'comedy' ) ), array( 'taxonomy' => 'actor', 'field' => 'id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN' ) ) ); $query = new WP_Query( $args ); // The Quick Query way $posts = $q->type('post')->tags( ['movie_genre' => ['action','comedy'], 'actor' => [103, 115, 206]], 'AND' );
计划
我正在从头开始创建一个真正的开源版本。在撰写本文时,Quick Query 只是一个带有所有代码注释的类包装器。
我将在此基础上工作(以及任何喜欢减轻WP_Query带来的情感伤害的人),逐步重新添加QQuery的功能,并在进行过程中添加测试和文档。
待办事项
- 帖子类型
$qq->type('some-type')
- 通过ID获取帖子
$qq->get(42)
- ACF感官
- 通过ID集获取帖子
$qq->in([2, 5, 42])
- 排序顺序
$qq->sort('date', 'DESC')
- 排除ID
- 返回所有帖子
$qq->all()
- 设置每页帖子数
$qq->ppp(20)
- 元字段选项
$qq->meta('author')
- 分页与偏移量
$qq->ppp(3)->page(2)
- 按帖子状态过滤
$qq->status('published')$qq->status(['published','draft'])
- 术语、分类法与类别
$qq->term('cats')$qq->tax('animals')$qq->tax(['animals'=>['cats', 'dogs'], ['pizza'=>['deep', 'NYC']], 'OR')$qq->category('fish')
- 作者
$qq->author(1)$qq->author('Pete Karl II')
- 父级与子级
$qq->parent(22)$qq->parent('some-slug')$qq->children('some_post_type')
需要测试
- ACF,请参阅
tests/test_qq_acf.php
需要文档
(所有内容)
运行测试
我推荐使用10up的VVV来设置WordPress环境。
从那里开始,我所做的是克隆了这个仓库,将它添加到VVV的Vagrant文件中的同步文件夹,然后将它链接到我的WordPress仓库。
要同步任何额外的文件夹,请将
config.vm.synced_folder "/path/to/your/folder/", "/srv/vagrant/mirror/"添加到你的Vagrantfile中,这样你可以在你的操作系统中编辑代码并轻松运行测试虚拟机。
要运行测试,我使用vagrant ssh进入vbox,导航到插件目录,然后运行phpunit(或者更常见的是,运行phpunit --debug)。