Thêm một mục menu vào Wordpress 3.5 Media Manager


34

Làm cách nào để thêm một mục menu mới bên dưới "insert From URL" trên thanh bên trái trong Trình quản lý phương tiện Wordpress 3.5 mới?

Tôi đã nhìn vào xương sống js và thử dùng tay để kết nối nó với JS của riêng tôi nhưng không thành công.

Chỉnh sửa 2: Điều này dường như để thực hiện các mẹo:

http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html

Nó nên làm cho những thứ đơn giản, nhưng tôi đoán nó cũng có thể làm điều tương tự trong Javascript. Sẽ rất tuyệt nếu có một hướng dẫn / giải thích về cách thức hoạt động của bộ quản lý phương tiện mới.


thực đơn mới của bạn phải làm gì? Thêm một mục menu không phải là vấn đề chính và bạn đang đi đúng hướng, nhưng nếu menu của bạn được cho là hiển thị bất cứ thứ gì khác với chế độ xem mặc định, chỉ với cài đặt đã thay đổi, Backbone cần một chế độ xem cho mục menu của bạn ... và thats nơi tôi stucked cũng ...
ungestaltbar

nhấp vào mục menu được cho là để hiển thị một cái nhìn khác. Lấy mục menu để hiển thị sẽ là bước đầu tiên
erezie

1
Về danh sách 150 điểm của tôi: Tìm cách tiếp tục mục tiêu của người đăng ban đầu là sử dụng phương pháp dựa trên JS để thêm một mục menu Trạng thái mới bên dưới "Chèn từ URL" và liên kết một chế độ xem mới trong phương thức truyền thông chính của Trình chỉnh sửa bài.
Scott Kingsley Clark

@erezie, bạn có thể đánh dấu câu trả lời này là câu trả lời của Fabien Quatravaux không?
Scott Kingsley Clark

Câu trả lời:


19

OK, tôi nghĩ rằng tôi có một cái gì đó thực sự gần gũi để trở thành một câu trả lời:

Tôi đặt mã của tôi trong một ý chính

Đây là kết quả: ảnh chụp màn hình menu tùy chỉnh

Tôi đã xây dựng một số đối tượng xương sống để tôn trọng mẫu MVC: controller.Customchịu trách nhiệm thực hiện tất cả logic, các view.Toolbar.Customgiao dịch với các nút trên thanh công cụ và view.Customhiển thị giao diện người dùng bên trong.


2
Nó còn thiếu gì cho đến nay?
kaiser

+1 khởi đầu tốt! Nhưng, vâng, thay vì chúng ta cần thực hiện điều này để biết nó làm gì, một ảnh chụp nhanh sẽ rất tiện dụng . Và cũng, kéo dòng bình luận đó //build an empty view (needs more work)vào nội dung của Câu trả lời.
brasofilo

Tôi đã thêm một ảnh chụp màn hình để hiển thị kết quả. Điều tiếp theo cần làm bây giờ là thực hiện chính khung nhìn sẽ hiển thị các thành phần HTML và phản ứng với sự tương tác của người dùng.
Fabien Quatravaux

Điều này có vẻ mát mẻ, đó chắc chắn là một khởi đầu! Xứng đáng với tiền thưởng như vậy, nhưng hãy thoải mái đưa nó lên cấp độ tiếp theo nếu bạn cảm thấy cần thiết.
Scott Kingsley Clark

Cảm ơn vì tiền thưởng Scott! Tôi chắc chắn sẽ đào sâu hơn một chút vì tôi cần nó cho một dự án tại nơi làm việc. Tôi sẽ đăng mã của tôi trở lại đây ngay khi có thể sử dụng được.
Fabien Quatravaux

10

Tôi đang làm việc để thêm một nút vào "menu bộ định tuyến" (thêm một cái gì đó bên phải của "Thư viện phương tiện"), nhưng hệ thống là như nhau.

<script type="text/javascript">
    jQuery(window).on('load', function() {
        var media   = window.wp.media,  
        Attachment  = media.model.Attachment,
        Attachments = media.model.Attachments,
        Query       = media.model.Query,
        l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n,
        NewMenuItem;

        jQuery(document).on( 'click', '.insert-media', function( event ) {
            var workflow = wp.media.editor.get();
            var options = workflow.options;
            if( undefined == NewMenuItem ) {
                NewMenuItem = new wp.media.view.RouterItem( _.extend( options, { text: 'New Item!' } ) );
                workflow.menu.view.views.set( '.media-menu', NewMenuItem, _.extend( options, { add: true } ) );
            }

        });
    });
</script>

Bây giờ, nó không làm gì cả. Đó là bước tiếp theo!


2
Bất kỳ may mắn về điều này? Một giải pháp dựa trên JS là những gì tôi thực sự muốn thấy, không phải là giải pháp PHP iframe đã được ghi chú trong chỉnh sửa của người đăng ban đầu và một câu trả lời khác
Scott Kingsley Clark

7

Bạn có thể móc vào media_upload_tabsbộ lọc để thêm tab. Đây là phương pháp được sử dụng bởi plugin Network Shared Media :

function wpse_76980_add_upload_tab( $tabs ) {
    $newtab = array( 'tab_slug' => 'Tab Name' );
    return array_merge( $tabs, $newtab );
}
add_filter( 'media_upload_tabs', 'wpse_76980_add_upload_tab' );

Sau đó, bạn có thể móc vào media_upload_tab_slughành động (nơi tab_slugđược sử dụng ở trên) để hiển thị nội dung tab:

function wpse_76980_media_upload() {
    // display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );

2
Đây là cách cũ để thêm một tab. Mặc dù nó vẫn hoạt động nhưng tôi nghi ngờ rằng WP đang rời xa nó.
Jenny

2
@Jenny, tôi nghĩ rằng chúng ta có thể tin tưởng vào bộ lọc này. có liên quan . (: oh, và +1, snipett đẹp :)
brasofilo

3

Tôi không phải là một giải pháp, nhưng gợi ý. Các chuỗi nhận được từ một mảng. Bạn có thể lọc qua hook media_view_strings. Hộp modal sau khi nhấp là javascript, được xây dựng với backbone.js kể từ WP 3.5. Xem trong /wp-includes/js/media-views.jsđể có một giải pháp. Xương sống cũng là mới đối với tôi và các kịch bản có nhiều dòng nguồn.


Đó là một gợi ý rất hay, nhưng tôi nghĩ nó không bao lâu. Các media.view.settingsvar js có thể được tinh chỉnh bởi một bộ lọc php để thêm các tab mới, nhưng sau đó những tab được trả lại thông qua một khung nội tuyến (xem createIframeStatesphương pháp trong media-views.js).
Fabien Quatravaux

Có lẽ bạn có thể thêm một hướng dẫn, ý chính vào blog oo của bạn để thêm một liên kết đơn giản bên trong chế độ xem phương tiện và một hành động tùy chỉnh khi nhấp vào liên kết này? Ý chính hiện tại của bạn rất phức tạp và có nhiều hành động tùy chỉnh.
bueltge

Thật không may, tôi đã không tìm thấy một cách đơn giản khác để đạt được điều này. này chỉ thực hiện một điều cơ bản: thêm một mục menu tùy chỉnh ở bên trái, với chế độ xem nội dung, thanh công cụ và trình điều khiển riêng. Tất cả việc xây dựng này là cần thiết để xây dựng các khung nhìn và bộ điều khiển cần thiết cho Backbone. Nhưng nếu bạn có một giải pháp đơn giản hơn, hãy thoải mái đưa ý chính của tôi.
Fabien Quatravaux

Vâng, tôi đã thấy điều này và cũng kiểm tra nó, hoạt động tốt. Nhưng tôi nghĩ thật tuyệt, khi bạn tạo ra một ý chính chỉ cho một nút hoặc liên kết và một funktion gọi lại trong màn hình phương tiện mặc định, không phải là một phần bổ sung, trong ví dụ của bạn.
bueltge
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.