Clean-up script tags

时间:2012-04-27 作者:Zach

我想收拾一下<script> WordPress生成的标签为HTML5生成更多语义输出。

您已经可以为<style> 将使用此代码的标记附加到style_loader_tag 过滤器:

//clean up the default WordPress style tags
add_filter(\'style_loader_tag\', \'clean_style_tag\');

function clean_style_tag($input) {
    preg_match_all("!<link rel=\'stylesheet\'\\s?(id=\'[^\']+\')?\\s+href=\'(.*)\' type=\'text/css\' media=\'(.*)\' />!", $input, $matches);

    //only display media if it\'s print
    $media = $matches[3][0] === \'print\' ? \' media="print"\' : \'\';                                                                             
    return \'<link rel="stylesheet" href="\' . $matches[2][0] . \'"\' . $media . \'>\' . "\\n";
}
但没有对等的script_loader_tag 在核心部分。是的proposed in the past, 但目前我们需要一个变通办法。

我已经开始找了/wp-includes/class.wp-scripts.phpfunction do_item( $handle, $group = false ) 在保存脚本输出的第79行附近(特别是lines 117-120), 但我在寻找一个合适的过滤器时遇到了一些困难。

2 个回复
SO网友:kaiser

如果你真的想这样做,那么它应该已经是可能的了。

这个global $wp_scripts 是的实例WP_Scripts 类,它是WP_Dependencies

因此,在理论上(未经测试),您应该能够执行以下操作:

function alter_script_tags()
{
    echo \'<pre>\';
        print $GLOBALS[\'wp_scripts\']->print_html;
    echo \'</pre>\';
}
add_action( \'wp_enqueue_scripts\', \'alter_script_tags\', 999999 );
这只是一个粗略的草图,但你应该明白了。

SO网友:Marcel

不确定WP版本兼容性,但取自Soil plugin 单元clean-up.php 对于Roots. 在主题中使用functions.php 或类似。

function clean_script_tag($input) {
  $input = str_replace("type=\'text/javascript\' ", \'\', $input);
  return str_replace("\'", \'"\', $input);
}
add_filter(\'script_loader_tag\', \'clean_script_tag\');

结束

相关推荐

在加载jQuery之后加载javascript

在加载jquery和jquery ui之后,我想为我的主题的首页加载一些javascript。这个钩子要用什么?我知道这些功能。php和我使用的是is\\u front\\u page()。通过在函数中插入wp\\u register\\u脚本。php,我可以在我想要加载的库之后对脚本进行排队,但我也只想在frontpage上加载它。在页眉上使用is\\u front\\u page()。php,则在jquery之前加载脚本。在加载jquery之后,我如何加载javascript,并且只能在首页上加载?