有没有办法读取或列出wp_head()内容?

时间:2016-05-15 作者:Benn

我正在开发CSS和JS编译器,需要找到一种方法来列出wp_head()

我试图在任何给定页面上获取所有CSS/JS文件和内联CSS的列表。

挂接wp\\U head操作没有任何作用

我希望这样的事情能奏效

function head_content($list){

    print_r($list);


}

add_action(\'wp_head\', \'head_content\');
非常感谢您的帮助。

UPDATE:

有些东西起作用了

function head_content($list){

    print_r($list);

    return $list;

}

add_filter(\'print_styles_array\', \'head_content\');
add_filter(\'print_script_array\', \'head_content\');
这将列出所有css/js文件句柄

3 个回复
最合适的回答,由SO网友:Putnik 整理而成

我想在标题中搜索和替换,但无论是@majick还是@Samuel Elh answers都不能直接为我工作。所以,结合他们的答案,我得到了最终有效的方法:

function start_wp_head_buffer() {
    ob_start();
}
add_action(\'wp_head\',\'start_wp_head_buffer\',0);

function end_wp_head_buffer() {
    $in = ob_get_clean();

    // here do whatever you want with the header code
    echo $in; // output the result unless you want to remove it
}
add_action(\'wp_head\',\'end_wp_head_buffer\', PHP_INT_MAX); //PHP_INT_MAX will ensure this action is called after all other actions that can modify head
已将其添加到functions.php 我的孩子的主题。

SO网友:Ismail

简单的解决方法是倾听wp_head 在自定义函数中,就像WordPress在wp-includes/general-template.php 对于wp_head() 作用

我的意思是:

function head_content() {
    ob_start();
    do_action(\'wp_head\');
    return ob_get_clean();
}
// contents
var_dump( head_content() );
稍后,使用regex或其他工具来筛选目标内容。。

希望这有帮助。

SO网友:majick

您可以缓冲wp_head 通过向其添加一些包装器操作来输出:

add_action(\'wp_head\',\'start_wp_head_buffer\',0);
function start_wp_head_buffer() {ob_start;}
add_action(\'wp_head\',\'end_wp_head_buffer\',99);
function end_wp_head_buffer() {global $wpheadcontents; $wpheadcontents = ob_get_flush();}
然后你可以打电话global $wpheadcontents; 访问内容并对其进行处理。

但是,在这种情况下,直接从全球$wp_styles$wp_scripts 变量。

function print_global_arrays() {
    global $wp_styles, $wp_scripts;
    echo "Styles Array:"; print_r($wp_styles);
    echo "Scripts Array:"; print_r($wp_scripts);
}
add_action(\'wp_enqueue_scripts\',\'print_global_arrays\',999);

相关推荐