余計なメニューを消したい
目次を表示させるのに「TOP Table Of Contents」というプラグインを使っています。色々検証した結果、唯一、このプラグインだけがまともな目次を作ってくれます。その話はこちら。
その記事にも書きましたが、このプラグインの欠点は、トップのメニューバーに長い文字列で居座ること。
サイドバーにも同じメニューはあるのでトップには不要です。
このプラグインの設定を見ても、トップメニューから消すようなオプションはなさそうです。
ちょっと調べてみたら、割と簡単に消せそうなのでやってみます。少々力技ですが。
まず、あのメニューの名前。あれは「管理バー」とか「アドミンバー(admin bar)」というのだそうです。それがわかれば話は簡単。「wordpress 管理バー 項目削除」などで検索するとたくさん情報が見つかります。
プログラム
大抵の説明では、functions.phpを使うようにあります。でも、この話はテーマに関係したものではない(テーマによらない)ものですので、ここでは別の手段(Code snippetsプラグイン)を使うことにします。結果はどちらでも同じです。
メニューのID を見つける
まずは削除の対象とするのメニューのIDを知らなければなりません。そこで、以下のプログラムを書きます。
function my_remove_admin_bar_menu($wp_admin_bar) {
print_r($wp_admin_bar);
}
add_action('admin_bar_menu', 'my_remove_admin_bar_menu', 99);
これを書き込んだ瞬間に管理バーに関する変数の情報がダンプされます。
この中から対象のものを見つけます。大変そうに見えますが、「TOP Table Of Contents」を検索すれば見つかります。
「TOP Table」の前に「[id] => boomdevs-toc-settings」という物が見つかりました(赤矢印)。これでしょう。その後ろには「[id] => boomdevs-toc-settings-1」などでサブメニューの情報が並んでいるのもわかります。
対象のメニューを消す
IDがわかっので、それを削除するプログラムを書きます。先程のIDチェックのプログラムを書き換えるだけです。
function my_remove_admin_bar_menu($wp_admin_bar) {
//print_r($wp_admin_bar);
$wp_admin_bar->remove_node('boomdevs-toc-settings');
}
add_action('admin_bar_menu', 'my_remove_admin_bar_menu', 99);
これで期待通りに管理バーから「TOP Table Of Contents」が消えました。