pkarl/quick-query

Quick-Query 是一款WordPress插件,它提供了一种类似jQuery的界面来查询文章和其他信息。

安装: 5

依赖: 0

建议者: 0

安全: 0

星标: 11

关注者: 1

分支: 2

开放问题: 3

类型:wordpress-plugin

dev-master 2015-11-24 03:48 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:11:59 UTC


README

Build Status

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)。