เปลี่ยน wp-admin / widgets.php


11

เราต้องการออกแบบหน้าวิดเจ็ตในแผงผู้ดูแลระบบแตกต่างกันเล็กน้อยส่วนใหญ่เพื่อช่วยให้ผู้ดูแลเว็บไซต์เข้าใจว่าแต่ละวิดเจ็ตจะปรากฏในเว็บไซต์:

ป้อนคำอธิบายรูปภาพที่นี่

สำหรับสิ่งนั้นเราต้องเปลี่ยน HTML ที่ widgets.php แสดงผล (เพียงแค่เปลี่ยน css ไม่เพียงพอ) เราจะทำอย่างไรโดยไม่แตะต้องหลัก?


แผงวางลากวิดเจ็ตมาจากที่ใดด้วยแนวทางข้างต้น
sanchothefat

@sanchothefat ภายใต้
Lea Cohen

ทำไมไม่ไปข้างหน้าและส่งแพทช์ไปที่แกน ดูเหมือนว่าจะเป็นการปรับปรุงที่คุ้มค่า ... จากนั้นเมื่อลงทะเบียนแถบด้านข้างพารามิเตอร์เพิ่มเติมจะเป็นการระบุตำแหน่ง หากไม่ได้ระบุจะถือว่ามีโครงสร้างเหมือนตอนนี้ (ด้านขวา)
Taylor Dewey

คำตอบ:


7

หากคุณอัพเกรด WordPress เป็น 3.3.1 ซึ่งคุณควรจริง ๆ แล้วแต่ละพื้นที่วิดเจ็ตในผู้ดูแลระบบมี ID ที่คุณสามารถใช้เพื่อกำหนดเป้าหมายผ่าน CSS ซึ่งควรจะเพียงพอจริง ๆ ดูhttp://core.trac.wordpress.org/ticket/18334สำหรับตัวอย่าง


4

ฉันไม่สามารถลบคำถามออกจากหัวของฉันได้ แต่ฉันไม่มีเวลาสำหรับการแก้ปัญหาที่สมบูรณ์ ดังนั้นฉันแค่เขียนความคิดของฉันที่นี่แล้วฉันจะตั้งค่าเล็กน้อย

  • มีการดำเนินการคือ'widgets_admin_page'ในwp-admin/widgets.phpข้างต้นเนื้อหาอื่น ๆ คุณสามารถวางกล่องแสดงตัวอย่างได้ที่นี่
    รหัสตัวอย่าง:

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

    นี่จะพิมพ์อาร์เรย์ของแถบด้านข้างที่ลงทะเบียนไว้ทั้งหมด คุณต้องเดินผ่านแถบด้านข้างทั้งหมดเพื่อค้นหาวิดเจ็ตที่ลงทะเบียน

  • ในการทำให้การแสดงตัวอย่างมีประโยชน์คุณต้องมีสองไฟล์: เทมเพลต HTML และสไตล์ชีต ผมจะใช้
    โค้ดตัวอย่างสำหรับธีม:add_theme_support()
    functions.php

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • ในshow_widget_preview()คุณจัดคิวสไตล์ชีทและโหลดเทมเพลต widget-preview.phpทำให้แถบด้านข้างที่จดทะเบียนในตัวยึดตำแหน่งที่กำหนดไว้ล่วงหน้าใน

  • อัพเดตเทมเพลตต่อ AJAX หลังจากผู้ใช้กดปุ่มบันทึกในวิดเจ็ต

  • ความท้าทาย: นำโหมดการช่วยสำหรับการเข้าใช้งานหน้าต่างเล็ก ๆ และ CSS ขัดแย้งกัน แสดงข้อความที่มีประโยชน์เมื่อไม่มีการลงทะเบียนแถบด้านข้าง (คำอธิบายแถบด้านข้าง?) จะเกิดอะไรขึ้นเมื่อผู้ใช้พยายามลากวิดเจ็ตลงในกล่องแสดงตัวอย่าง :)


ขอบคุณที่คิดถึงมัน @toscho! ฉันกำลังทำงานในโครงการอื่น แต่จะต้องกลับไปที่โครงการนี้และฉันจะตรวจสอบโซลูชันของคุณและแจ้งให้คุณทราบ ขอบคุณอีกครั้ง!
Lea Cohen

0

คำตอบสั้น ๆ คือคุณไม่สามารถทำได้โดยไม่ต้องแตะต้องหลัก

อย่างไรก็ตามคุณสามารถตั้งค่าคำอธิบายของแต่ละพื้นที่วิดเจ็ต (ข้อความใต้ชื่อพื้นที่วิดเจ็ต) ในฟังก์ชั่น register_sidebar

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.