Aller au contenu principal
Version: 26.0.8.7

Query

Query est une façade à WP_Query permettant de faciliter l'écriture des requêtes.
On peut considérer que c'est un mini ORM pour WordPress et ses post types.

Créer une requête

info

Ici, le code présenté sera exécuté dans une méthode de controller utilisant l'attribut Template pour rendre une vue Twig.

Tout d'abord, on commence avec une requête simple, on récupère tous les posts du type estate.
Dans ce cas, on peut se passer de la façade Query et utiliser directement la méthode getQuery du post type.

app/Controllers/HomeController.php
$estateQuery = $this->getPostType("estate")->getQuery(); // Option 1
$queryResult = Query::all('estate'); // Option 2
attention

La façade Query ne retourne pas d'instance de WP_Query mais un tableau de WP_Post.
Pour que Query retourne une instance de WP_Query, il faut passer false en 2e paramètre.

Autre exemple

On peut également récupérer un post en particulier.

Exemple de requêtes simples
Query::where('post_title', '=', 'laversines')->get('estate'); // Récupère un post avec le titre "laversines"
Query::find(80, 'estate'); // Récupère un post avec l'ID 80
Query::withTaxonomy(['type', 'caracteristics'])->get('estate'); // Récupère les posts avec les taxonomies "type" et "caracteristics"
Query::include(['estate_price', 'estate_surface'])->get('estate'); // Récupère les posts et inclut les champs personnalisés : "estate_price" et "estate_surface"
Query::orderBy('post_title', 'ASC')->get('estate'); // Récupère les posts et les trie par titre
Query::limit(4)->get('estate')
Exemple de requêtes enchaînées
Query::where('post_title', '=', 'laversines') // Récupère les posts avec le titre "laversines"
    ->withTaxonomy('caracteristics') // Inclut les options choisies dans la taxonomie "caracteristics"
    ->include('estate_price') // Inclut le champ personnalisé : "estate_price"
    ->orderBy('date', 'ASC') // Trie par date
    ->get('estate'); // Exécute la requête pour le post type "estate"