web-dev-qa-db-ja.com

Adminでナビゲーションメニュー項目の出力にフィルタを追加することは可能ですか?

特定のメニュー位置のナビゲーションメニューの管理画面から特定の入力フィールドを削除したいです。私はフロントエンド出力をフィルタするためにフィルタを使いましたが、管理出力のためには使っていません。この目的のために利用可能なフィルタはありますか?

たとえば、メニューが 'position-x'で使用されている場合に限り、メニュー項目にtitle属性を追加するオプションを削除したいと思います。

nav_menu_link_attributeswp_nav_menu_argsのようなフィルターはすべてフロントエンドの出力をフィルターするようです。

2
tommyf

これらのフィールドはWalker_Nav_Menu_Edit::start_el()に作成されています。それらを変更または削除するには、Walker_Nav_Menu_Editを拡張して他のフィールドまたはそれ以下のフィールドを使用するカスタムウォーカー( を別のウォーカー の例)として作成します。

それからwp_edit_nav_menu_walkerをフィルターにかけ、あなたの歩行者のクラス名を返します。

擬似コード

class Walker_Nav_Menu_Edit_Simple extends Walker_Nav_Menu_Edit {
    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) 
    { /* Magic here. */}
}

add_filter( 'wp_edit_nav_menu_walker', function() {
    return 'Walker_Nav_Menu_Edit_Simple';
});
3
fuxia