質問: テーマのスタイルとスクリプトをデキュー/登録解除する方法 私のプラグインに、これまでにアクティブにしたテーマからスタイルとスクリプトをデキュー/登録解除させる方法はありますか?どのテーマがインストールされるかは関係ありません。そのテーマのスタイルとスクリプトはデキュー/登録解除されますか?明確にするために: どんなテーマを使うかわかりません。 他のプラグインからではなく、テーマからスタイルとスクリプトのみをデキュー/登録解除する必要があります。
回答: トリッキーなことは、特定のスクリプトまたはスタイルがテーマによってエンキューされたかどうかを知ることです。テーマとプラグインはどちらも同じフックと関数を使用するため、特定のテーマまたはプラグインに属するものとして明示的にラベル付けされていません。これは、スクリプトまたはスタイルがテーマに由来するかどうかを知る唯一の方法は、urlをチェックして、スクリプト/スタイルのurlがテーマディレクトリのどこかを指しているかどうかを確認することであることを意味します。これを行う1つの方法は、_$wp_scripts->registered_と_$wp_styles->registered_をループし、各スクリプトのurlとスタイルをget_theme_root_uri()と照合して、テーマフォルダーのurlを確認することです。スクリプト/スタイルがそのフォルダー内にあるように見える場合は、それをデキューできます。_function wpse_340767_dequeue_theme_assets() { $wp_scripts = wp_scripts(); $wp_styles = wp_styles(); $themes_uri = get_theme_root_uri(); foreach ( $wp_scripts->registered as $wp_script ) { if ( strpos( $wp_script->src, $themes_uri ) !== false ) { wp_deregister_script( $wp_script->handle ); } } foreach ( $wp_styles->registered as $wp_style ) { if ( strpos( $wp_style->src, $themes_uri ) !== false ) { wp_deregister_style( $wp_style->handle ); } } } add_action( 'wp_enqueue_scripts', 'wpse_340767_dequeue_theme_assets', 999 ); _これは、スタイルシートまたはスクリプトがテーマ内にある場合にのみ機能します。テーマがcdnからスクリプトまたはスタイルをエンキューしている場合、それらをターゲットにすることが可能かどうかはわかりません。