changer wp-admin / widgets.php

11

Nous voulons concevoir la page des widgets dans le panneau d'administration un peu différemment, principalement pour aider l'administrateur du site à comprendre où chaque widget apparaîtra sur le site:

Pour cela, nous devons changer le code HTML rendu par widgets.php (changer le fichier css ne suffit pas). Comment ferions-nous cela sans toucher au cœur?

    
posée Lea Cohen 12.02.2012 - 11:38

3 réponses

7

Si vous mettez à jour votre WordPress vers la version 3.3.1, ce qui est absolument nécessaire, chaque zone de widgets de l’administrateur possède désormais un identifiant que vous pouvez utiliser pour cibler via CSS, ce qui devrait suffire. Voir enlace pour un exemple.

    
réponse donnée helenhousandi 12.02.2012 - 17:20
4

Je ne parviens pas à me faire oublier la question, mais je n’ai pas le temps de trouver une solution complète. Donc, je viens d'écrire mon idée ici, alors je vais fixer une petite prime.

  • Il y a une action 'widgets_admin_page' dans wp-admin/widgets.php au-dessus de l'autre contenu. Vous pouvez placer une zone de prévisualisation ici.
    Exemple de code:

    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 '<div style="border:2px solid #ddf;padding:20px">'
        . '<pre>' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '</pre>'
        . '</div>';
    }
    

    Ceci imprime un tableau de toutes les barres latérales enregistrées. Vous devez parcourir toutes les barres latérales pour trouver les widgets enregistrés.

  • Pour que l'aperçu soit utile, vous avez besoin de deux fichiers: un modèle HTML et une feuille de style.
    J'utiliserais add_theme_support() .
    Exemple de code pour le thème functions.php :

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
    
  • Dans show_widget_preview() , vous mettez en file d'attente la feuille de style et chargez le modèle. Rendez les barres latérales enregistrées dans les espaces réservés prédéfinis dans widget-preview.php .

  • Mettez à jour le modèle AJAX après avoir appuyé sur le bouton Enregistrer dans un widget.

  • Défis: prendre en compte le mode d’accessibilité, les petites fenêtres et les conflits CSS. Afficher un message utile quand aucune barre latérale n'est enregistrée (descriptions de la barre latérale?). Que devrait-il se passer lorsqu'un utilisateur tente de faire glisser un widget dans la zone de prévisualisation? :)

réponse donnée fuxia 05.03.2012 - 00:47
0

la réponse courte est que vous ne pouvez pas, non sans toucher le noyau.

Cependant, vous pouvez définir la description de chaque zone de widget (le texte situé sous le titre de la zone de widget) dans la fonction register_sidebar.

    
réponse donnée Norcross 12.02.2012 - 13:15

Lire d'autres questions sur les étiquettes