do_action
不像那样工作。当你打电话的时候do_action(\'crunchify_print_scripts_styles\')
WP查看其注册操作列表,并筛选任何附加到名为crunchify_print_scripts_styles
然后运行这些函数。
您可能想删除此项:
add_action( \'wp_enqueue_scripts\', \'crunchify_print_scripts_styles\');
。。。因为您无法获得函数的返回结果。
此外,当您使用这个特定的钩子时,您不能保证其他函数在生成列表后不会将更多的脚本或样式排入队列。为了方便起见,可以使用一个钩子,在所有脚本和样式都排队后激发,例如wp\\u head,或者更好的做法是,当您想要显示结果时,只需在主题内调用函数即可。
像这样重写代码应该可以。。。
function crunchify_print_scripts_styles() {
$result = [];
$result[\'scripts\'] = [];
$result[\'styles\'] = [];
// Print all loaded Scripts
global $wp_scripts;
foreach( $wp_scripts->queue as $script ) :
$result[\'scripts\'][] = $wp_scripts->registered[$script]->src . ";";
endforeach;
// Print all loaded Styles (CSS)
global $wp_styles;
foreach( $wp_styles->queue as $style ) :
$result[\'styles\'][] = $wp_styles->registered[$style]->src . ";";
endforeach;
return $result;
}
然后在您的主题中:
print_r( crunchify_print_scripts_styles() );
。。。将向您显示调试结果,或者当然。。。
$all_the_scripts_and_styles = crunchify_print_scripts_styles();
。。。将为您提供要操纵的列表。
在主题中调用它可以确保在所有脚本和样式排队后调用它。
要从插件调用它,请将其附加到运行时间晚于wp\\u enqueue\\u脚本的任何挂钩上,如上文所述的wp\\u head:
add_action( \'wp_head\', \'wpse_233142_process_list\');
function wpse_233142_process_list() {
$all_the_scripts_and_styles = crunchify_print_scripts_styles();
// process your array here
}