thay đổi wp-admin / widget.php


11

Chúng tôi muốn thiết kế trang widget trong bảng quản trị một chút khác nhau, chủ yếu là để giúp quản trị viên trang web hiểu nơi mỗi widget sẽ xuất hiện trong trang:

nhập mô tả hình ảnh ở đây

Vì vậy, chúng ta cần thay đổi HTML mà widget.php hiển thị (chỉ cần thay đổi css là không đủ). Làm thế nào chúng ta sẽ làm điều đó mà không chạm vào cốt lõi?


Bảng điều khiển để kéo các vật dụng từ đâu được đặt với cách tiếp cận ở trên?
sanchothefat

@sanchothefat bên dưới
Lea Cohen

Tại sao không đi trước và gửi một bản vá cho cốt lõi. Có vẻ như là một cải tiến đáng giá ... Sau đó, khi đăng ký một thanh bên, một thông số được thêm sẽ là chỉ định vị trí. Nếu không được chỉ định, nó giả định rằng nó có cấu trúc như bây giờ (bên phải)
Taylor Dewey

Câu trả lời:


7

Nếu bạn nâng cấp WordPress lên 3.3.1, điều bạn hoàn toàn nên làm, thì mỗi khu vực widget trong quản trị viên hiện có ID bạn có thể sử dụng để nhắm mục tiêu qua CSS, điều này thực sự là đủ. Xem http://core.trac.wordpress.org/ticket/18334 để biết ví dụ.


4

Tôi không thể lấy câu hỏi ra khỏi đầu, nhưng tôi không có thời gian cho một giải pháp hoàn chỉnh. Vì vậy, tôi chỉ viết ra ý tưởng của mình ở đây, sau đó tôi sẽ đặt một khoản tiền thưởng nhỏ.

  • Có một hành động 'widgets_admin_page'wp-admin/widgets.phptrên các nội dung khác. Bạn có thể đặt một hộp xem trước ở đây.
    Mã mẫu:

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

    Điều này in ra một mảng của tất cả các thanh bên đã đăng ký. Bạn phải đi qua tất cả các thanh bên để tìm các vật dụng đã đăng ký.

  • Để làm cho bản xem trước hữu ích, bạn cần hai tệp: mẫu HTML và biểu định kiểu.
    Tôi sẽ sử dụng add_theme_support().
    Mã mẫu cho chủ đề functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • Trong show_widget_preview()bạn enqueue biểu định kiểu và tải mẫu. Kết xuất các thanh bên đã đăng ký trong trình giữ chỗ được xác định trước trong widget-preview.php.

  • Cập nhật mẫu trên AJAX sau khi người dùng nhấn nút Lưu trong tiện ích.

  • Thách thức: Đưa chế độ trợ năng vào tài khoản, các cửa sổ nhỏ và xung đột CSS. Hiển thị một thông báo hữu ích khi không có thanh bên được đăng ký (mô tả thanh bên?). Điều gì sẽ xảy ra khi người dùng cố gắng kéo một widget vào hộp xem trước? :)


cảm ơn vì đã nghĩ về nó, @toscho! Tôi hiện đang làm việc cho các dự án khác, nhưng sẽ phải quay lại dự án này và tôi sẽ kiểm tra giải pháp của bạn và cho bạn biết. Cảm ơn một lần nữa!
Lea Cohen

0

Câu trả lời ngắn gọn là bạn không thể, không phải không chạm vào lõi.

tuy nhiên, bạn có thể đặt mô tả của từng khu vực tiện ích (văn bản bên dưới tiêu đề khu vực tiện ích) trong chức năng register_sidebar.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.