私がイムがやろうとしていることを説明させてください。ダッシュボードのようなメインページを持つプラグインを作成して、プラグインの一般公開側を管理するために使用します。通常のWordPressサイト内の別のアプリのように考えてください。
そのページは完全にカスタムになるので、ユーザーテーマから完全に分離する必要があります。管理バーが使われます。
私が最初に考えたのはカスタムテンプレートを使ってページを作成すること(すでにそれが済んだこと)で、2番目のステップはwp_header + wp_footerからすべてのアクションを削除し、WordPressコアではないスクリプトとスタイルをすべて削除することです。
そのため、現在Imはステップ2で立ち往生していましたが、これを実行する別の方法があるのかどうかImにはありませんでした。
これは私が今までやってきたことです、私がまだ知らないより良いアプローチがあるならば私はまだ正しい答えとしてマークしません。
add_action('wp_enqueue_scripts',array( $this, 'remove_all_actions'), 99);
public function remove_all_actions(){
if( 'custom-template.php' != get_page_template_slug( get_queried_object_id() ))
return;
global $wp_scripts, $wp_styles;
$exceptions = array(
'admin-bar',
'jquery',
'query-monitor'
);
foreach( $wp_scripts->queue as $handle ){
if( in_array($handle, $exceptions))
continue;
wp_dequeue_script($handle);
}
foreach( $wp_styles->queue as $handle ){
if( in_array($handle, $exceptions) )
continue;
wp_dequeue_style($handle);
}
// Now remove actions
$action_exceptions = array(
'wp_print_footer_scripts',
'wp_admin_bar_render',
);
// No core action in header
remove_all_actions('wp_header');
global $wp_filter;
foreach( $wp_filter['wp_footer'] as $priority => $handle ){
if( in_array( key($handle), $action_exceptions ) )
continue;
unset( $wp_filter['wp_footer'][$priority] );
}
}
ページの管理バーだけを提供するのは少し奇妙に思えますが、私が考えることができる最も簡単な解決策は、スクリプト/スタイルの登録を解除し、この特定のページのカスタムテンプレートファイルを作成するための条件付き関数の使用です。残念ながら、ロードされているすべてのスタイル/スクリプトを把握する必要があります。
add_action('init', 'remove_all_the_things');
function remove_all_the_things() {
if (is_page(123)) {
wp_dequeue_style('main');
wp_dequeue_script('jquery');
// etc
// remove other actions/filters as well
}
}
そしてカスタムヘッダー/フッターを作成することができます
header-empty.php
&footer-empty.php
ページテンプレートでget_header('empty');
とget_footer('empty');
を呼び出す
参照:
https://codex.wordpress.org/Function_Reference/is_pagehttps://codex.wordpress.org/ Function_Reference/wp_dequeue_scripthttps://codex.wordpress.org/Function_Reference/wp_dequeue_stylehttps://codex.wordpress.org/Function_Reference/get_headerhttps://codex.wordpress.org/Function_Reference/get_footer