Eigene CPTs im WordPress-Admin sofort erkennen

Autor
Lesezeit
Share

Wer mit WordPress viele eigene Custom Post Types und Options-Seiten verwaltet, kennt das Problem: Die Admin-Leiste wird schneller unübersichtlich als einem lieb ist. Was ist WordPress-Standard, was habe ich selbst gebaut?

Meine Lösung ist simpel: Ein kleines PHP-Snippet, das alle selbst erstellten CPTs und ACF-Options-Seiten automatisch erkennt und ihnen im Admin-Menü eine eigene Hintergrundfarbe gibt. Keine manuelle Pflege, kein Plugin-Overhead.

define( 'CAH_COLOR',       'rgba(13, 108, 60, 1)' );
define( 'CAH_COLOR_HOVER', 'rgba(10, 90, 50, 1)' );

Die Farbe lässt sich in zwei Zeilen anpassen. WordPress-eigene Post Types wie postpage oder attachment werden automatisch ignoriert, nur wirklich selbst erstellte Inhalte werden hervorgehoben.

Klingt nach einer Kleinigkeit, spart im Alltag aber überraschend viel Zeit.

Hier der vollständige Code, diesen in dein Snippet-Plugin einfügen.

if ( ! defined( 'ABSPATH' ) ) exit;

// ── Farbe hier anpassen ───────────────────────────────────────────────────────
define( 'CAH_COLOR',       'rgba(120, 6, 6, 0.2)' );
define( 'CAH_COLOR_HOVER', 'rgba(120, 6, 6, 0.5)' );
// ─────────────────────────────────────────────────────────────────────────────

add_action( 'admin_head', function () {

    $css = '';

    foreach ( get_post_types( [ '_builtin' => false, 'show_ui' => true ] ) as $post_type ) {
        $id   = 'menu-posts-' . sanitize_html_class( $post_type );
        $css .= "#adminmenu #$id > a.menu-top { background-color: " . CAH_COLOR . " !important; }\n";
        $css .= "#adminmenu #$id > a.menu-top:hover { background-color: " . CAH_COLOR_HOVER . " !important; }\n";
    }

    if ( function_exists( 'acf_get_options_pages' ) ) {
        foreach ( (array) acf_get_options_pages() as $page ) {
            $id   = 'toplevel_page_' . sanitize_html_class( $page['menu_slug'] );
            $css .= "#adminmenu #$id > a.menu-top { background-color: " . CAH_COLOR . " !important; }\n";
            $css .= "#adminmenu #$id > a.menu-top:hover { background-color: " . CAH_COLOR_HOVER . " !important; }\n";
        }
    }

    if ( $css ) {
        echo "<style>\n$css</style>\n";
    }
} );

Hinterlasse den ersten Kommentar