拡張:Cocoon設定の管理者画面に設定を追加する方法
Cocoon設定→管理者画面→管理画面設定に、項目を追加します。
設定をまとめて保存」を実行後、ページを再読み込みすると変更が反映されます。
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
// Cocoon設定にメニューを追加
add_action('admin_menu', function () {
$page_hook = get_plugin_page_hookname('theme-settings', '');
if ($page_hook) {
add_action($page_hook, 'render_cocoon_adminbar_remove');
}
}, 99);
/**
* Cocoon設定(管理画面)に項目を出力
*
* @return void
*/
if (!function_exists('render_cocoon_adminbar_remove')):
function render_cocoon_adminbar_remove() {
// 元のメニュー一覧を取得するためフィルターを一時的に解除
$current_filters = $GLOBALS['wp_filter']['cocoon_admin_bar_menus'] ?? null;
unset($GLOBALS['wp_filter']['cocoon_admin_bar_menus']);
$all_menus = get_admin_bar_menu_array();
// フィルターを復元
if ($current_filters) {
$GLOBALS['wp_filter']['cocoon_admin_bar_menus'] = $current_filters;
}
// 現在の非表示設定を取得
$adminbar_remove = get_option('my_cocoon_adminbar_remove', []);
ob_start();
?>
<div class="cocoon-adminbar-remove__container" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px 5px; margin-bottom: 10px;">
<?php foreach ($all_menus as $menu): ?>
<?php
$id = $menu['id'];
$title = wp_strip_all_tags((string) $menu['title']);
?>
<div>
<label>
<input type="checkbox" name="cocoon_adminbar_remove_items[]" value="<?= esc_attr($id); ?>"
<?php checked(!in_array($id, $adminbar_remove, true)); ?>>
<?= $title; ?>
</label>
</div>
<?php endforeach; ?>
</div>
<input type="hidden" name="cocoon_adminbar_remove_present" value="1">
<?php generate_tips_tag('「設定をまとめて保存」を実行後、ページを再読み込みすると変更が反映されます。'); ?>
<?php
$items_html = ob_get_clean();
?>
<script>
jQuery(function ($) {
const $targetRow = $('#admin_tool_menu_visible_1').closest('tr');
if (!$targetRow.length) return;
const itemsHtml = <?= json_encode($items_html); ?>;
const customRow = `
<tr>
<th scope="row">ツールバー項目の整理</th>
<td>${itemsHtml}</td>
</tr>
`;
$targetRow.after(customRow);
});
</script>
<?php
}
endif;
// Cocoon設定値を保存
add_action('cocoon_settings_after_save', function () {
if (!isset($_POST['cocoon_adminbar_remove_present'])) {
return;
}
$items = isset($_POST['cocoon_adminbar_remove_items'])
? array_map('sanitize_text_field', $_POST['cocoon_adminbar_remove_items'])
: [];
// 元のメニュー一覧を取得するためフィルターを一時的に解除
$current_filters = $GLOBALS['wp_filter']['cocoon_admin_bar_menus'] ?? null;
unset($GLOBALS['wp_filter']['cocoon_admin_bar_menus']);
$all_menus = get_admin_bar_menu_array();
// フィルターを復元
if ($current_filters) {
$GLOBALS['wp_filter']['cocoon_admin_bar_menus'] = $current_filters;
}
$all_ids = array_column($all_menus, 'id');
// チェックされていないIDを非表示リストに設定
$adminbar_remove = array_values(array_diff($all_ids, $items));
update_option('my_cocoon_adminbar_remove', $adminbar_remove);
});
// Cocoonのツールバー表示を制御
add_filter('cocoon_admin_bar_menus', function ($menus, $wp_admin_bar) {
$adminbar_remove = get_option('my_cocoon_adminbar_remove', []);
if (empty($adminbar_remove)) {
return $menus;
}
// 非表示に設定されたメニューを除外
return array_filter($menus, function ($item) use ($adminbar_remove) {
return !in_array($item['id'], $adminbar_remove, true);
});
}, 10, 2);
さいごに
今回紹介した方法を使えば、Cocoonテーマで管理画面のツールバーにある「管理メニュー」をすっきり整理できます。
不要なメニューを非表示にし、必要なものだけを残すことで、作業効率が大幅に向上します。
また、リセット機能を備えているため、誤って削除してもすぐに元の状態へ戻せる点も安心です。

