वर्डप्रेस में "अंतिम आउटपुट" फ़िल्टर नहीं है, लेकिन आप एक साथ हैक कर सकते हैं। नीचे दिया गया उदाहरण एक परियोजना के लिए बनाए गए "Must Use" प्लगइन के भीतर रहता है।
नोट: मैंने किसी भी प्लगइन के साथ परीक्षण नहीं किया है जो "शटडाउन" कार्रवाई का उपयोग कर सकता है।
प्लगइन सभी खुले बफर स्तरों के माध्यम से पुनरावृत्ति करके, उन्हें बंद करने और उनके आउटपुट को कैप्चर करने के द्वारा काम करता है। इसके बाद फ़िल्टर किए गए सामग्री को प्रतिबिंबित करते हुए "final_output" फ़िल्टर को निकाल दिया जाता है।
अफसोस की बात है, वर्डप्रेस लगभग सटीक प्रक्रिया (खुले बफर को बंद करना) करता है, लेकिन वास्तव में फ़िल्टरिंग के लिए बफर को कैप्चर नहीं करता है (बस इसे फ्लश करता है), इसलिए अतिरिक्त "शटडाउन" कार्रवाइयों तक इसका उपयोग नहीं होगा। इस वजह से, नीचे की कार्रवाई वर्डप्रेस के ऊपर प्राथमिकता दी गई है।
WP-सामग्री/म्यू plugins/buffer.php
<?php
/**
* Output Buffering
*
* Buffers the entire WP process, capturing the final output for manipulation.
*/
ob_start();
add_action('shutdown', function() {
$final = '';
// We'll need to get the number of ob levels we're in, so that we can iterate over each, collecting
// that buffer's output into the final output.
$levels = ob_get_level();
for ($i = 0; $i < $levels; $i++) {
$final .= ob_get_clean();
}
// Apply any filters to the final output
echo apply_filters('final_output', $final);
}, 0);
final_output फिल्टर में hooking का एक उदाहरण:
<?php
add_filter('final_output', function($output) {
return str_replace('foo', 'bar', $output);
});
संपादित करें:
इस कोड को गुमनाम का उपयोग करता है फ़ंक्शंस, जो केवल PHP 5.3 या नए में समर्थित हैं। यदि आप PHP 5.2 या पुराने का उपयोग कर वेबसाइट चला रहे हैं, तो आप स्वयं को एक अक्षम कर रहे हैं। PHP 5.2 2006 में जारी किया गया था, और भले ही वर्डप्रेस अभी भी इसका समर्थन करता है, आपको इसका उपयोग नहीं करना चाहिए।
आप बफरिंग समाप्त करने के लिए php register_shutdown_function का उपयोग कर सकते हैं, और HTML पुनर्प्राप्त कर सकते हैं। – Simon
इसमें एक दोष है, आप कॉलबैक के अंदर 'ob_start, ob_clean, ..' को कॉल नहीं कर सकते, जिसे विशेष कैशिंग तर्क के लिए आवश्यक है। http://php.net/manual/en/function.ob-start.php#refsect1-function.ob-start-parameters –