플러그인을 만들고 있는데 다른 플러그인에서 사용하는 모든 스크립트 및 CSS 목록을 얻고 싶습니다.
이것은 내 기능입니다.
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;
}
add_action( 'wp_enqueue_scripts', 'crunchify_print_scripts_styles');
변수 내에서 반환 값을 가져오고 싶습니다.
나는 이것을 시도했다 :
$toto = do_action( 'crunchify_print_scripts_styles' );
var_dump( $toto );
그리고 이것은 내 결과입니다.
NULL
echo
모든 foreach
루프 내부에 쓰면 올바른 결과를 얻을 수 있지만 변수에 이러한 값을 저장하는 방법은 무엇입니까?
[편집하다]
플러그인 내부의 코드가 작동하지 않습니다.
/**
* Get all scripts and styles from Wordpress
*/
function 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;
}
add_action( 'wp_head', 'wp_rest_assets_init');
/**
* Init JSON REST API Assets routes.
*
* @since 1.0.0
*/
function wp_rest_assets_init() {
$all_the_scripts_and_styles = print_scripts_styles();
if ( ! defined( 'JSON_API_VERSION' ) &&
! in_array( 'json-rest-api/plugin.php', get_option( 'active_plugins' ) ) ) {
$class = new WP_REST_Assets();
$class::$scriptsAndStyles = $all_the_scripts_and_styles;
add_filter( 'rest_api_init', array( $class, 'register_routes' ) );
} else {
$class = new WP_JSON_Menus();
add_filter( 'json_endpoints', array( $class, 'register_routes' ) );
}
}
add_action( 'init', 'wp_rest_assets_init' );
apply_filters
않습니까? 그로부터 쉽게 반환 값을 얻을 수 있습니다.
do_action
결과를 반환하지 않으며, 그 외에도 작업이 이미 수행되었습니다wp_enqueue_scripts
. 예를 들어 전역을 만드는 것이 더 쉽습니다.global $crunchifyenqueued; $crunchifyenqueued = $result;
그런 다음 나중에 함수에서 global을 다시 호출하여 변수에 액세스하십시오.