WordPress Vezérlőpult widgetek eltávolítása előnézeti képe

WordPress Vezérlőpult widgetek eltávolítása

| Olvasási idő: 3 perc

A WordPress alapértelmezetten néhány bekapcsolt Dashboard (Vezérlőpult) widgettel érkezik. Nem vagyok ezeknek nagy rajongója, így megkerestem, hogyan lehet ezeket letiltani.

Szóval hogy miért nem szeretem ezeket? Két fő oka van a fenntartásomnak:

  1. Nagy eséllyel ezeket a widgeteket az ügyfél nem fogja használni, viszont azt sem tudja, hogy hol lehet ezeket kikapcsolni, így végső soron útban lesznek neki.
  2.  Sokszor szoktam offline fejleszteni, amikor semmilyen internetkapcsolatom nincs. Ez azzal jár, hogy a helyben futó WordPress sem fogja elérni a hírforrásait, és amíg erre rájön a Dashboard betöltése során (nyilván addig blokkolva a teljes oldal betöltését), az nagyjából 10 másodperc - betöltésenként. Nem, ilyet nem játszunk.

Így én ezek közül többet le is szoktam tiltani: nem érdekelnek a WordPress-es event-ek (az ügyfelemet pedig még kevésbé), és jellemzően azokon az oldalakon, amiket készítek, nem az a lényeg, hogy első pillantásra lássuk, mennyi bejegyzés/hozzászólás van összesen (mert általában tudjuk, hiszen az ügyfél írja őket :D). Persze ezeket grafikusan is el lehet távolítani, de azt felhasználónként, kézzel kellene megtenni.

Szóval a hosszabb bevezető után jöjjön a szokásos: hozzuk létre az mu-plugins mappában a remove-dashboard-widgets.php fájlt, és illesszük be az alábbi kódrészletet:

php
<?php
/*
Plugin Name: Remove WP Dashboard Widgets plugin
Plugin URI: https://www.webmenedzser.hu
Description: Disable unnecessary Dashboard Widgets
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/

 function remove_dashboard_widgets() {
    global $wp_meta_boxes;

    // Gyors vázlat
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);

    // Történések
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']);

    // Jelenleg...
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);

    // WordPress Események és Hírek
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);

    // Üdvözlet
    remove_action('welcome_panel', 'wp_welcome_panel');
}
add_action('wp_dashboard_setup', 'remove_dashboard_widgets' );

Ezzel visszakapcsolhatatlanul (de nem visszafordíthatatlanul) letiltottunk minden, alapból érkező WordPress Vezérlőpult elemet. Az egyes sorok felett, kommentekben láthatjátok, hogy a sor pontosan melyik widgetet tiltja le.

Ha egy olyat szeretnétek letiltani, ami itt nem szerepel, akkor egy kis turkálással meg tudjátok találni, hogy mit kell unset-elni: a nagyon favágó módszer az, ha a global $wp_meta_boxes; sor alá beillesztetek egy újabba ezt: 

var_dump($wp_meta_boxes['dashboard']);

Ez közvetlenül a nyitó body tag után kiköpi, hogy milyen widgetek vannak a különféle pozíciókban, ilyesmi formátumban (Chrome Dev Tools szépen beformázza):

array(3) {
  ["normal"]=>
  array(1) {
    ["core"]=>
    array(2) {
      ["dashboard_right_now"]=>
      array(4) {
        ["id"]=>
        string(19) "dashboard_right_now"
        ["title"]=>
        string(11) "Jelenleg..."
        ["callback"]=>
        string(22) "wp_dashboard_right_now"
        ["args"]=>
        array(1) {
          ["__widget_basename"]=>
          string(11) "Jelenleg..."
        }
      }
      ["dashboard_activity"]=>
      array(4) {
        ["id"]=>
        string(18) "dashboard_activity"
        ["title"]=>
        string(13) "Történések"
        ["callback"]=>
        string(26) "wp_dashboard_site_activity"
        ["args"]=>
        array(1) {
          ["__widget_basename"]=>
          string(13) "Történések"
        }
      }
    }
  }
  ["side"]=>
  array(1) {
    ["core"]=>
    array(2) {
      ["dashboard_quick_press"]=>
      array(4) {
        ["id"]=>
        string(21) "dashboard_quick_press"
        ["title"]=>
        string(99) "
  ["rainbow"]=>
  array(1) {
    ["unicorns_dimension"]=>
    array(2) {
      ["unicorn_love_meter"]=>
      array(4) {
        ["id"]=>
        string(21) "unicorn_love_meter"
        ["title"]=>
        string(99) "Unikornis szeretetszint"

Technikailag ez több, egymásba ágyazott tömb. A fenti snippetünk szépen elnavigál a tömbökön ahhoz az utolsó tömbelemhez, ami maga a Widget (mint a fákon az ágak és levelek: ha widget, akkor az levél, egyébként pedig ág), és unset-eli, ezzel törli a szülő tömbjéből. Így gyakorlatilag minden Vezérlőpult betöltésnél kivesszük a regisztrált widgetek közül anélkül, hogy plugin kódot kellene turkálnunk. ¯\_(ツ)_/¯

Tehát: ha egy olyan widgetet szeretnél tiltani, aminek nem ismered a pontos "útvonalát", akkor csak le kell olvasnod, hogy milyen elemek a szülői, és azokat "felsorolod", a fent ismertetett módon. Szóval ha véletlenül az "Unikornis szeretetszint" widget-et szeretnéd törölni (bár hogy bárki miért akarná törölni, nem értem :P), akkor a következő sorral tehetnéd ezt meg:

php
unset($wp_meta_boxes['dashboard']['rainbow']['unicorns_dimension']['unicorn_love_meter']);

(Fontos, hogy nem az ID-ban levő szövegnek kell az utolsónak lennie a "célzás" során, hanem a szülő tömbje nevének (kulcsának).

Úgy tűnhet, hogy ez egy hosszabb anyag, de igazából csak sok a rizsa - ne ijedjetek meg, vessétek bele magatokat bátran! :)


Barna most a tanfolyamán dolgozik, így a videóit sajnos nélkülöznötök kell.