1 回答
TA贡献1802条经验 获得超4个赞
使用该template_redirect
钩子,您可以访问将呈现到页面的所有 HTML。您可以使用此挂钩打开输出缓冲,查找和替换您想要的任何内容,然后返回输出,无论它是否已被修改。
请记住,这不会涵盖通过延迟加载、AJAX 请求等动态加载的任何 iframe - 但在运行时加载到 HTML 中的任何内容都将在此处。
add_action( 'template_redirect', 'global_find_replace', 99 );
function global_find_replace(){
ob_start( function( $buffer ){
/**
*`$buffer` contains your entire markup for this page, at run time.
* anything dynamically loaded with JS/Ajax, etc won't be in here
*/
// Did they accept the GDPR cookie?
if( !isset($_COOKIE['gdpr_consent']) ){
// Nope. Build a simple "accept cookies" notice
$notice = '<div class="accept-cookies">You must accept cookies to see this content</div>';
// Replace all youtube iframes regardless of class, id, other attributes, with our notice
$buffer = preg_replace( '/<iframe.+src="https?:\/\/(?:www.)?youtu\.?be(?:\.com)?.+<\/iframe>/i', $notice, $buffer );
}
// Always return the buffer, wither it was modified or not.
return $buffer;
});
}
这是我为 youtube 视频制作的正则表达式,如果我错过任何内容,请随时修改它:https ://regex101.com/r/2ZQOvk/2/
这应该足以让你开始!
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报