Je recherche un filtre fournissant l'intégralité de la page générée dans WordPress, y compris la section principale avec les balises méta, le corps, le style et le contenu dynamique. the_content () et the_excerpt () ne fonctionnent que pour la partie dynamique et le filtre de requête semble fonctionner uniquement pour les requêtes SQL (ou non)?
Je voudrais filtrer des données dans la page entière dans tous les liens ou les boutons. Comment puis-je faire ceci?
Vous pouvez utiliser output buffering pour accomplir cela.
Ajoutez un crochet de haute priorité directement avant le rendu du modèle:
add_action('template_redirect', 'foo_buffer_go', 0);
function foo_buffer_go(){
ob_start('foo_buffer_callback');
}
Ajoutez un crochet d'arrêt avec une priorité extrêmement basse.
add_action('shutdown', 'foo_buffer_stop', 1000);
function foo_buffer_stop(){
ob_end_flush();
}
Dans votre rappel, vous manipulez le code HTML rendu.
function foo_buffer_callback($buffer){
//Do something with the buffer (HTML)
return $buffer;
}
Vous pouvez le télécharger en tant que plugin ici: http://3-3.me/B9lK
Légère modification du code de @ BrianFegter afin que le tampon de sortie ne soit fermé que s'il était ouvert. Cela a l'avantage de pouvoir conditionnellement décider de filtrer ou non.
if ($want_to_modify_content) {
add_action('template_redirect', 'YOURPLUGIN_buffer_start', 0);
}
function YOURPLUGIN_buffer_start() {
add_action('shutdown', 'YOURPLUGIN_buffer_stop', PHP_INT_MAX);
ob_start('YOURPLUGIN_modify_content');
}
function YOURPLUGIN_buffer_stop() {
ob_end_flush();
}
function YOURPLUGIN_modify_content($content) {
//modify $content
return $content;
}
Vous pouvez utiliser HTTP API pour obtenir le contenu de la post URL .