Ändern von wp-admin / widgets.php

Wir möchten die Widgets-Seite im Admin-Bereich etwas anders gestalten, hauptsächlich um dem Site-Administrator zu verdeutlichen, wo jedes Widget auf der Site erscheinen wird:

Bildbeschreibung hier eingeben

Dafür müssen wir den HTML-Code ändern, den widgets.php rendert (das Ändern der CSS ist einfach nicht genug). Wie würden wir das machen, ohne den core zu berühren?

Solutions Collecting From Web of "Ändern von wp-admin / widgets.php"

Wenn Sie Ihr WordPress auf 3.3.1 upgraden, was Sie unbedingt tun sollten, hat jeder Widget-Bereich im Admin nun eine ID, mit der Sie über CSS zielen können, was eigentlich ausreichen sollte. Ein Beispiel finden Sie unter http://core.trac.wordpress.org/ticket/18334 .

Ich kann die Frage nicht aus dem Kopf bekommen, aber ich habe keine Zeit für eine vollständige Lösung. Also schreibe ich einfach meine Idee hier auf, dann werde ich eine kleine Prämie setzen.

  • Es gibt eine Aktion 'widgets_admin_page' in wp-admin/widgets.php über dem anderen Inhalt. Sie könnten hier eine Vorschaubox platzieren.
    Beispielcode:

     add_action( 'widgets_admin_page', 'show_widget_preview' ); function show_widget_preview() { $preview_widgets = $GLOBALS['wp_registered_sidebars']; unset ( $preview_widgets['wp_inactive_widgets'] ); print '
    ' . '
    ' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '

    ' . '

    '; }

    Dies druckt ein Array aller registrierten Seitenleisten aus. Sie müssen durch alle Seitenleisten gehen, um die registrierten Widgets zu finden.

  • Um die Vorschau nützlich zu machen, benötigen Sie zwei Dateien: eine HTML-Vorlage und ein Stylesheet.
    Ich würde add_theme_support() .
    Beispielcode für die functions.php des Themes:

     add_theme_support( 'widget_preview', array ( 'template' => get_stylesheet_directory() . '/widget-preview.php', 'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' ) ); 
  • In show_widget_preview() das Stylesheet in die Warteschlange eingereiht und die Vorlage geladen. Rendern Sie die registrierten Seitenleisten in den vordefinierten Platzhaltern in widget-preview.php .

  • Aktualisieren Sie die Vorlage nach AJAX, nachdem der Benutzer die Schaltfläche Speichern in einem Widget gedrückt hat.

  • Herausforderungen: Berücksichtigen Sie den Accessibility-Modus, kleine Fenster und CSS-Konflikte. Eine nützliche Nachricht anzeigen, wenn keine Sidebar registriert ist (Seitenleistenbeschreibungen?). Was passiert, wenn ein Benutzer versucht, ein Widget in die Vorschaubox zu ziehen? 🙂

Die kurze Antwort ist, Sie können nicht, nicht ohne core berühren.

Sie können jedoch die Beschreibung jedes Widgetbereichs (der Text unter dem Titel des Widgetbereichs) in der function register_sidebar festlegen.