web-dev-qa-db-ja.com

子テーマのfunctions.phpの親テーマからrequire_once管理パネルを削除するにはどうすればいいですか?

親テーマでは、以下は functions.php ファイルの最後にあります。

require_once(TEMPLATEPATH . '/admin/admin-menu.php');

子テーマの function.php では、このコードは子管理パネルを含みます。

require_once(STYLESHEETPATH . '/admin/admin-menu.php');

ご覧のとおり、特定のローカライズファイル(js、css)では、一番下のファイルにget_stylesheet_directory_uri()ではなくget_template_directory_uri()が含まれています。したがって、私はロードから親ファイルを削除する必要があります

私はremove_actionフックを使用する必要があると思いますが、これを正しく行う方法がわかりません。グーグルでも良い答えが見つかりません。

私は私の子供のテーマの functions.php ファイルに以下を書き始めました、しかし、私はそれを正しく書く方法を知りません。

function remove_parent_admin_panel {
   remove_action('remove_panel', '[WHAT-GOES-HERE?]');
}

それから私は親管理パネルを削除するために上記の関数を追加するためにadd_actionフックを使う必要があると思います。

親のrequire_onceを関数ステートメントでラップするべきですか?私は正しい軌道に乗っていますか?

3
micah

PHPファイルを含める必要があるが、それらのPHPファイルを子テーマで完全に置き換えることができるようにする場合は、locate_template関数を使用します。

例:親はこうします:

locate_template( 'admin/file.php', true );

これは、子テーマまたは親テーマのどちらかでadmin/file.phpファイルを見つけ、それにrequireを実行します(それが真実です)。

子のファイルを置き換えるには、子のファイルを置き換えるだけです。簡単です。簡単です。

注:このメソッドはデフォルトでrequire_onceを使用します。単に必要なだけの場合は、3番目のパラメーターfalseを渡します。

5
Otto

Parent Themeの\admin\admin-menu.phpファイル内で、関数add_menu_page()を探します。それは関数でラップされるべきであり、その関数はadd_action( 'admin_init', 'function-name' )呼び出しで呼び出されます。

その関数名がなんであれ、remove_action( 'admin_init', 'function-name' )を呼び出す必要があります。

0
Chip Bennett