dev-master
9999999-dev http://simettric.comA query builder for WordPress WP_Query, inspired by Doctrine Query Builder
MIT
The Requires
- php >=5.5.9
The Development Requires
wordpress
Wallogit.com
2017 © Pedro Peláez
A query builder for WordPress WP_Query, inspired by Doctrine Query Builder
A query builder for WordPress WP_Query, inspired by the Doctrine Query Builder, (*1)
composer require simettric/wp-query-builder
Retrieve any post type where post meta color value equals to blue OR size meta value equals to XL, (*4)
$builder = new Builder();
$wp_query = $builder->createMainMetaQuery("OR")
->addMetaQuery(MetaQuery::create('color', 'blue'))
->addMetaQuery(MetaQuery::create('size', 'XL'))
->getWPQuery();
Retrieve any post type where post meta price is equal or greater than 10 OR size meta value equals to XL, (*5)
$builder = new Builder();
$wp_query = $builder->createMainMetaQuery("AND")
->addMetaQuery(MetaQuery::create('price', 10, '>=', 'NUMERIC'))
->addMetaQuery(MetaQuery::create('size', 'XL'))
->getWPQuery();
Retrieve any post type where post meta price is equal or greater than 10 AND (size meta value equals to XL OR post meta color value equals to blue), (*6)
$builder = new Builder();
$builder->createMainMetaQuery("AND")
->addMetaQuery(MetaQuery::create('price', 10, '>=', 'NUMERIC'));
$condition = new MetaQueryCollection('OR');
$condition->add(MetaQuery::create('color', 'blue'))
->add(MetaQuery::create('size', 'XL'));
$wp_query = $builder->addMetaQueryCollection($condition)
->getWPQuery();
Retrieve the contents under ("pets" OR "tools") values in the "category" taxonomy AND in under 'sweet' in "custom" taxonomy, (*7)
$builder = new Builder();
$wp_query = $builder->createMainTaxonomyQuery("AND")
->addTaxonomyQuery(TaxonomyQuery::create('category', 'slug', array('pets', 'tools')))
->addTaxonomyQuery(TaxonomyQuery::create('custom', 'slug', array('sweet))
->getWPQuery();
Retrieve the contents under ("pets" OR "tools") values in the "category" taxonomy BUT exclude contents in their children, (*8)
$builder = new Builder();
$wp_query = $builder->createMainTaxonomyQuery("AND")
->addTaxonomyQuery(TaxonomyQuery::create('category', 'slug', array('pets', 'tools'), false))
->getWPQuery();
Retrieve the contents those are NOT under ("pets" OR "tools") values in the "category" taxonomy, (*9)
$builder = new Builder();
$wp_query = $builder->createMainTaxonomyQuery("AND")
->addTaxonomyQuery(TaxonomyQuery::create('category', 'slug', array('pets', 'tools'), true, 'NOT IN'))
->getWPQuery();
You can have nested relations too, (*10)
$builder = new Builder();
$collection = new TaxonomyQueryCollection('OR');
$collection->add(TaxonomyQuery::create('tag', 'slug', array('cats')));
$collection->add(TaxonomyQuery::create('custom', 'slug', array('sweet')));
$wp_query = $builder->createMainTaxonomyQuery("AND")
->addTaxonomyQuery(TaxonomyQuery::create('category', 'slug', array('pets', 'tools')))
->addTaxonomyQueryCollection($collection)
->getWPQuery();
Retrieve all PAGES, (*11)
$builder = new Builder();
$wp_query = $builder->addPostType(Builder::POST_TYPE_PAGE)->getWPQuery();
Retrieve all CUSTOM POST TYPE, (*12)
$builder = new Builder();
$wp_query = $builder->addPostType('your_custom')->getWPQuery();
Retrieve all CUSTOM POST TYPE and PAGES, (*13)
$builder = new Builder();
$wp_query = $builder->addPostType('your_custom')
->addPostType(Builder::POST_TYPE_PAGE)
->getWPQuery();
Search contents, (*14)
$builder = new Builder();
$wp_query = $builder->search("search query")->getWPQuery();
Retrieve contents with ID in array of IDS, (*15)
$builder = new Builder();
$wp_query = $builder->inPostIDs(array(1,2,3))->getWPQuery();
Retrieve contents with ID not in array of IDS, (*16)
$builder = new Builder();
$wp_query = $builder->notInPostIDs(array(1,2,3))->getWPQuery();
Order contents by title descending, (*17)
$builder = new Builder();
$wp_query = $builder->setOrderBy("title")->getWPQuery();
Order contents by date, ascending, (*18)
$builder = new Builder();
$wp_query = $builder->setOrderBy("date")
->setOrderDirection("ASC")
->getWPQuery();
Order contents by title descending and date, ascending, (*19)
$builder = new Builder();
$wp_query = $builder->addOrderBy("title", "DESC")
->addOrderBy("date", "ASC")
->getWPQuery();
Order contents by custom meta, (*20)
$builder = new Builder();
$wp_query = $builder->setOrderByMeta("color", "DESC")->getWPQuery();
Order contents by custom numeric meta, (*21)
$builder = new Builder();
$wp_query = $builder->setOrderByMeta("price", "ASC", true)
->getWPQuery();
Retrieve only 10 contents, (*22)
$builder = new Builder();
$wp_query = $builder->setLimit(10)->getWPQuery();
Retrieve 20 contents starting from the 10th position, (*23)
$builder = new Builder();
$wp_query = $builder->setLimit(20)->setOffset(10)->getWPQuery();
Get the WPQuery object, (*24)
$builder = new Builder();
$wp_query = $builder->getWPQuery();
Get the Posts array, (*25)
$builder = new Builder();
$posts = $builder->getPosts();
Get the WPQuery parameters array, (*26)
$builder = new Builder();
$params = $builder->getParameters();
$query = new WP_Query($params);
Get an array containing only the post IDs. This is useful when you want to return all records without pagination from a large recordset in order to avoid memory issues., (*27)
$builder = new Builder();
$ids = $builder->getPostIDsOnly();
$builder = new Builder();
$wp_query = $builder->inPostIDs($ids)->getWPQuery();
A query builder for WordPress WP_Query, inspired by Doctrine Query Builder
MIT
wordpress