Mon plugin utilise wp_enqueue_style () et wp_enqueue_script () pour charger des ressources, mais je me suis gardé de ne pas dégrader les performances de l'utilisateur et de ne les charger que lorsque l'ensemble actuel de publications contient le shortcode de mon plugin. Je le fais en utilisant:
add_filter('the_posts', 'CrayonWP::the_posts');
the_posts est appelé avant wp_head, mais également plusieurs fois par la suite (probablement pour les publications récentes dans les widgets, etc.).
Le problème ici est que lorsque je recherche le shortcode dans le contenu de la publication et que je signale le processus de mise en file d'attente, il arrive que:
Existe-t-il un moyen sûr de vérifier ce qui apparaîtra sur une page avant d'appeler wp_head afin de pouvoir être sûr de ne mettre en file d'attente que si cela est nécessaire sans pour autant rater l'occasion?
EDIT:
Excellent article: http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditional-and-only- quand-nécessaire-par-the-posts/
Mais il ne prend pas en compte plusieurs appels à the_posts dans une requête de page unique :(
EDIT 2:
Ce que j'ai essayé, c'est d'utiliser:
add_action('wp', 'CrayonWP::queue');
Étant donné que l'action wp
n'est utilisée qu'une seule fois, juste après la finalisation de la demande.
Et à l'intérieur de cette fonction:
global $wp_query;
$posts = $wp_query->posts;
Je ne sais pas comment la variable $ wp_query change au cours de la boucle cependant. Si le filtre the_posts est appelé à plusieurs reprises, cela implique-t-il que la requête d'origine est susceptible de changer à mesure que les widgets envoient leurs propres requêtes? Évidemment, je ne veux pas vraiment vérifier les codes courts dans les posts de "posts récents", car ils ne sont peut-être pas affichés sur la page pour le moment. Ainsi, l'utilisation du crochet d'action wp
au lieu du filtre the_posts
contiendra-t-elle les publications demandées pour cette page donnée, qu'il s'agisse d'une page unique ou de la page d'accueil?
Je ne l'ai pas testé, mais pourrais is_main_query () (apparu en 3.3) être utilisé ici pour vérifier que la requête en cours d'exécution est la requête à renseigner 'la boucle'. (Je ne sais pas comment il gère les nouvelles instances WP_Query
, cependant).
Le Codex indique qu'il peut être utilisé sur le pre_get_posts
, mais en regardant le code, je ne vois pas pourquoi il ne pourrait pas être appelé par un hook ultérieur (c'est-à-dire the_posts
). Il vérifie simplement le $wp_the_query
global par rapport à la requête actuelle .