我正在使用ob_start过滤WordPress后端页面。 我的脚本如下:
function remove_extra_field_profile()
{
$current_file_url = preg_replace( "#\?.*#" , "" , basename( $_SERVER['REQUEST_URI'] ) );
if( $current_file_url == "profile.php" )
{
add_action( 'wp_loaded', function(){ ob_start("profile_callback"); } );
add_action( 'shutdown', function(){ ob_end_flush(); } );
}
}
add_action( 'init', 'remove_extra_field_profile' );
function profile_callback( $html )
{
$profile_dom = new DOMDocument;
$profile_dom->loadHTML( $html );
$all_lines = $profile_dom->getElementsByTagname( 'tr' );
$excludes = array(
'user-syntax-highlighting-wrap',
'user-rich-editing-wrap'
);
$deletes = array();
foreach ( $all_lines as $line )
{
$tr_calss = $line->getAttribute("class");
if( in_array( $tr_calss, $excludes ) )
{
$deletes[] = $line;
}
}
$deletes[] = $profile_dom->getElementsByTagname( 'h2' )->item(0);
foreach ($deletes as $delete)
{
$delete->parentNode->removeChild( $delete );
}
return $profile_dom->saveHTML();
}
这很好。
但是一旦我添加了一个插件,该插件向profile.php添加了一个选择字段(wordpress自动添加了一些内容),事情就会变得很奇怪:
使用上方的“过滤脚本”,关闭的</script>
标签(应该在末尾)将向前移动:
<script type="text/html" id="tmpl-media-frame">
<div class="media-frame-menu"></script></div>
<div class="media-frame-title"></div>
<div class="media-frame-router"></div>
<div class="media-frame-content"></div>
<div class="media-frame-toolbar"></div>
<div class="media-frame-uploader"></div>
一旦我删除了PHP脚本,一切都很好。
为什么脚本会影响此<script>
部分?我可以做些什么?
非常感谢!