wp-admin / widgets.php değiştirme


11

Özellikle site yöneticisinin sitede her bir widget'ın nerede görüneceğini anlamasına yardımcı olmak için yönetici panelindeki widget'lar sayfasını biraz farklı tasarlamak istiyoruz:

resim açıklamasını buraya girin

Bunun için widgets.php'nin oluşturduğu HTML'yi değiştirmemiz gerekiyor (sadece css'i değiştirmek yeterli değildir). Çekirdeğe dokunmadan bunu nasıl yapabiliriz?


Widget'ları sürükleyen panel yukarıdaki yaklaşımla nereye yerleştirilir?
sanchothefat

@sanchothefat altında
Lea Cohen

Neden devam edip çekirdeğe bir yama göndermeyin. Önemli bir gelişme gibi görünüyor ... Sonra, bir kenar çubuğunu kaydederken, bir yer belirtmek için ek bir param olurdu. Belirtilmemişse, şimdi olduğu gibi yapılandırılmış olduğunu varsayar (sağda)
Taylor Dewey

Yanıtlar:



4

Soruyu kafamdan çıkaramıyorum, ancak tam bir çözüm için zamanım yok. Bu yüzden fikrimi buraya yazıyorum, sonra küçük bir ödül getireceğim.

  • Bir eylem vardır 'widgets_admin_page'içinde wp-admin/widgets.phpdiğer içeriğin üstüne. Buraya bir önizleme kutusu yerleştirebilirsiniz.
    Basit kod:

    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>';
    }

    Bu, kayıtlı tüm kenar çubuklarının bir dizisini yazdırır. Kayıtlı widget'ları bulmak için tüm kenar çubuklarında yürümek zorundasınız.

  • Önizlemeyi kullanışlı hale getirmek için iki dosyaya ihtiyacınız vardır: HTML şablonu ve stil sayfası.
    Kullanırdım add_theme_support().
    Temanın örnek kodu functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • In show_widget_preview()size stil sayfasını enqueue ve şablonu yükleyin. İçindeki önceden tanımlanmış yer tutuculardaki kayıtlı kenar çubuklarını oluşturun widget-preview.php.

  • Kullanıcı bir widget'ta Kaydet düğmesine bastıktan sonra şablonu AJAX başına güncelleyin .

  • Zorluklar: Erişilebilirlik modunu, küçük pencereleri ve CSS çakışmalarını dikkate alın. Hiçbir kenar çubuğu kaydedilmediğinde yararlı bir mesaj gösterin (kenar çubuğu açıklamaları?). Bir kullanıcı bir widget'ı önizleme kutusuna sürüklemeye çalıştığında ne olur? :)


düşündüğün için teşekkürler, @toscho! Şu anda başka projeler üzerinde çalışıyorum, ancak buna geri dönmem gerekecek ve çözümünüzü kontrol edip size bildireceğim. Tekrar teşekkürler!
Lea Cohen

0

Kısa cevap, çekirdeğe dokunmadan yapamayacağınızdır.

ancak register_sidebar işlevinde her bir widget alanının açıklamasını (widget alanı başlığının altındaki metin) ayarlayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.