WordPress : Injecter une requête sql personnalisée dans une page/un thème
J’ai écrit une requête sql personnalisée pour notre site Web WordPress (assez élaborée et non réalisable avec le code wordpress standard) et je l’ai fait exécuter via $pageposts = $wpdb->get_results($query, OBJECT);
, elle donne les résultats que j’attends. Maintenant, j’aimerais intégrer cette requête via un crochet (idéalement), afin de ne pas avoir à mettre à jour la page du thème afin que nous puissions toujours mettre à jour le thème. Je sais que le crochet pre_get_posts()
vous permet d’ajuster la requête principale, mais d’après ce que j’ai trouvé, il ne semble vous permettre que d’ ajuster . Par exemple $query->set( 'year', $today['year'] );
. Cependant, je souhaite remplacer complètement la requête.
Est-ce faisable en utilisant un crochet afin que je puisse utiliser le code du thème principal en utilisant un crochet du code de mon thème enfant ?
Ou dois-je cloner la page entière du thème principal vers le thème enfant et utiliser le code comme ceci :
<?php
$pageposts = $wpdb->get_results($q, OBJECT);
if ($pageposts):
global $post;
foreach ($pageposts as $post):
setup_postdata($post);
?>
Solution n°1 trouvée
Les crochets que vous recherchez se trouvent dans le Codex WordPress WP_Query
– Filtres :
Filtres
- posts_distinct – Modifie la clause SQL ‘DISTINCTROW’ dans la requête qui renvoie le tableau post.
- posts_groupby – Modifie la clause SQL ‘GROUP BY’ de la requête qui renvoie le tableau post.
- posts_join – Modifie la clause SQL ‘JOIN’ de la requête qui renvoie le tableau post.
- post_limits – Modifie la clause SQL ‘LIMIT’ de la requête qui renvoie le tableau post.
- posts_orderby – Modifie la clause SQL ‘ORDER BY’ de la requête qui renvoie le tableau post.
- posts_where – Modifie la clause SQL ‘WHERE’ de la requête qui renvoie le tableau post.
- posts_join_paged – Modifie la pagination SQL pour les publications à l’aide de la clause ‘JOIN’ de la requête qui renvoie le tableau de publication.
- posts_where_paged – Modifie la pagination SQL pour les publications à l’aide de la clause ‘WHERE’ de la requête qui renvoie le tableau de publication.
- posts_clauses – Modifie toutes les clauses SQL ci-dessus en une seule fois. Il vous donne un tableau d’éléments faciles à modifier (disponible avec la version 3.1).
Notez qu’il y a plus de filtres que ceux mentionnés. Comme il est difficile de maintenir le codex à jour, veuillez inspecter vous-même la
get_posts();
fonction à l’intérieur de la classe WP_Query (/wp-includes/query.php).
Premièrement, comme le dit la note, il y a plus de filtres que mentionné et, deuxièmement, parmi les filtres mentionnés, ils ne sont pas tous documentés. Vous pouvez faire beaucoup avec ceux inclus dans la liste ci-dessus, mais il peut être nécessaire de jeter un coup d’il à la source query.php
vous-même, pour trouver toutes les possibilités dont vous disposez.
Par conséquent, sans connaître votre SQL et vos plans exacts, je suppose que vous pouvez faire ce que vous voulez en utilisant un ou plusieurs de ces crochets. Après avoir rassemblé les informations dont vous avez besoin pour votre cas d’utilisation, jetez un coup d’il/recherchez ici sur WPSE pour des implémentations similaires, il existe de nombreuses approches suggérées pour différents scénarios, vous pourriez donc trouver ce dont vous avez besoin.
0 commentaire