Tôi đang cố gắng chỉnh sửa Trình quản lý phương tiện để cho phép lựa chọn tùy chọn mới trong trường chọn "Liên kết đến".
Mẫu xương sống này hiện được định nghĩa trong media-template.php
<label class="setting">
<span><?php _e('Link To'); ?></span>
<select class="link-to"
data-setting="link"
<# if ( data.userSettings ) { #>
data-user-setting="urlbutton"
<# } #>>
<option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' == wp.media.galleryDefaults.link ) {
#>selected="selected"<# }
#>>
<?php esc_attr_e('Attachment Page'); ?>
</option>
<option value="file" <# if ( 'file' == wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
<?php esc_attr_e('Media File'); ?>
</option>
<option value="none" <# if ( 'none' == wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
<?php esc_attr_e('None'); ?>
</option>
</select>
</label>
Tôi có thể sao chép mẫu này vào plugin của mình, thực hiện các thay đổi và mở rộng media.view.Settings.Gallery
để thêm chức năng mới nhưng điều này có thể gây ra xung đột tiềm ẩn với các plugin khác cũng muốn sửa đổi phần này của trình quản lý phương tiện.
media.view.Settings.Gallery = media.view.Settings.Gallery.extend({
template: media.template('caffeine-gallery-settings'),
Thay thế là, tôi thêm tùy chọn mới vào menu chọn thông qua jQuery / tương tự. Ứng dụng đã phụ thuộc vào JavaScript để hoạt động để trải nghiệm không bị suy giảm. Điều này không giống như cách chính xác để thực hiện thay đổi này mặc dù. Cảm giác như nó đi ngược lại tinh thần của cả Backbone và WordPress.
Lý tưởng của tôi là sẽ có bộ lọc WordPress trong mẫu Backbone (có thể thực hiện được vì nó chỉ là một tệp PHP) sẽ cho phép các tùy chọn mới được thêm vào menu chọn này.
Ngoài lý luận của tôi, lựa chọn nào trong số này là tốt nhất?