web-dev-qa-db-fra.com

Obtenir le contenu de la page entière (HTML généré dans le navigateur)

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?

5
Mario Peshev

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

  1. Activer le plugin
  2. Visitez le site et il sera rendu comme "Foo Bar" ce qui signifie que vous capturez la totalité du HTML généré
7
Brian Fegter

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;
}
1
Walf

Vous pouvez utiliser HTTP API pour obtenir le contenu de la post URL .

1
Anh Tran