web-dev-qa-db-fra.com

get_posts - cherche si la chaîne de caractères était une merde et si le repli est utilisé

Si nous transmettons une chaîne à des fonctions telles que get_posts et que cette chaîne n'est pas une chaîne de requête significative (par exemple, get_posts ('')), la fonction renvoie les résultats de la requête par défaut (les cinq dernières publications ou autres). Est-il possible de supprimer ce comportement ou, mieux encore, de savoir si la chaîne était une chaîne de requête significative ou si la fonction est simplement revenue à la valeur par défaut, ce qui n’était pas le cas?

Changer les paramètres de requête par défaut n'est pas une solution car je ne veux pas affecter la boucle principale, mais uniquement un appel de fonction de get_posts dans un plugin.

1
Paflow

Si vous regardez le fonctionnement de la requête , il ne s'agit pas de ...

  1. Vérifier si les conditions de requête passées renvoient des posts
  2. Sinon exécuter une requête de secours

En réalité, vos conditions sont fusionnées avec certaines valeurs par défaut via une séquence très compliquée de conditions. À la fin de cela, vous avez la SQL qui court pour obtenir vos messages. Le système ne vérifie pas si vos conditions sont "merde" et décide ensuite de les utiliser ou non. Ces conditions sont simplement fusionnées dans la requête de manière à générer une instruction SQL valide. Je ne suis pas sûr de savoir comment la requête saurait ce qui est et ce n'est pas "merde" de toute façon.

La seule chose à laquelle je puisse penser serait de raccrocher à pre_get_posts et de vérifier les vars de requête en fonction d’un ensemble de conditions que vous définissez pour déterminer "merde" ou "non merde".

En ce qui concerne l'exemple particulier que vous fournissez, get_posts est intentionnellement écrit pour extraire le dernier message si aucun argument n'a été transmis .

new WP_Query('') ne renverra rien, soit dit en passant, mais je suis essentiellement d’accord avec la suggestion de @ toscho dans un commentaire - passer une chaîne nettoyée. Sachez ce que vous envoyez à la fonction avant de l’envoyer. Si la chaîne est vide ou ne répond pas à une autre exigence, n'appelez pas du tout la fonction get_posts.

2
s_ha_dum