質問: プラグインによるコアwordpress関数の上書き コア機能を上書きする方法はありますかwordpressのコアは、プラグインを使用していますか?コードを注入する必要はありません。関数を完全に書き換えられたバージョンに置き換える必要があります。特定の関数は/wp-admin/includes/nav-menu.phpの中のwp_nav_menu_item_post_type_meta_box()です。基本的に、クライアントのニーズを満たしていない機能が不足しているので、この機能を自分で作成したもので上書きする必要があります。私はこの機能に多大な修正を加え、ファイルを直接編集するのではなく、プラグインを介して自分自身でその機能を上書きできるようにしたいと思っています。私はこれがおそらくコアをハッキングするよりもはるかに優れているわけではないことを知っていますが、それは一時的な即時解決策です。
回答: いや、いや。組み込みのphp関数は上書きできますが、ユーザー定義関数は上書きできません。ただし、この機能が行うことは、メタボックスを定義することだけです。自分で定義しないのはなぜですか。独自のメタボックスを定義して追加したら、remove_meta_boxを呼び出して標準のものを削除できます。remove_meta_box( 'add-posttypename', 'nav-menus', 'side'); メタボックスは、最初はループを使用してカスタム投稿タイプごとに追加されます。メタボックスのidはadd-{$id}として定義されます。ここで$idはポストタイプの名前です。そのため、同様のループを実行することによって、または特定の投稿タイプについてのみ、すべての投稿タイプについてこのメタボックスを削除できます。それはあなた次第です。次に、必要な投稿タイプに合わせてカスタムメタボックスを追加するだけです。これが参照用にオリジナルを追加する関数です。function wp_nav_menu_post_type_meta_boxes() { $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); if ( ! $post_types ) return; foreach ( $post_types as $post_type ) { $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); if ( $post_type ) { $id = $post_type->name; add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type ); } } }