Ubah tampilan default Media Library di 3,5?

33

Saat memasukkan media ke dalam sebuah posting, apakah ada cara untuk mengubah tampilan default Perpustakaan-Media dari "Semua item media" menjadi "Diunggah ke posting ini"?

Screenshot yang dipinjam

Ada utas lain tempat pertanyaan ini diambil: Cara mengelola hubungan lampiran

div
sumber
Sudahkah Anda mencoba mematikan semua plugin lain, kembali ke tema default dan kemudian hanya mengaktifkan yang dari toscho? Bisa jadi konflik JS.
kaiser

Jawaban:

22

Ada dua kesalahan kecil dalam jawaban saya sebelumnya:

  1. Saya lupa memicu changeacara untuk orang tua.
  2. Saya memanggil fungsi pada setiap panggilan AJAX, membuat pilihan lain tidak mungkin.

Berikut ini adalah kode tetap:

<?php
/**
 * Plugin Name: Pre-select post specific attachments
 */

add_action( 'admin_footer-post-new.php', 'wpse_76048_script' );
add_action( 'admin_footer-post.php', 'wpse_76048_script' );

function wpse_76048_script()
{
    ?>
<script>
jQuery(function($) {
    var called = 0;
    $('#wpcontent').ajaxStop(function() {
        if ( 0 == called ) {
            $('[value="uploaded"]').attr( 'selected', true ).parent().trigger('change');
            called = 1;
        }
    });
});
</script>
    <?php
}
fuxia
sumber
Terima kasih banyak, toscho! <br> Kode plugin yang Anda jatuhkan di sini berfungsi seperti pesona bagi saya sekarang! (alangkah baiknya jika seseorang dapat mengubah "jawaban" ini menjadi komentar dan mengatur status untuk menjawab)
div
Anda adalah satu-satunya yang dapat menandai tanda centang jawaban . Anda harus menggunakan akun yang Anda gunakan untuk bertanya. Saya menggabungkan kedua akun, Anda harus dapat mencentang tanda centang sekarang. :)
fuxia
3
Kode yang sangat elegan ini berfungsi ketika Anda mengklik Add Mediatombol tetapi tidak ketika Anda mengklik tombol Set featured image. Apakah ada cara untuk membuatnya bekerja di sana juga?
Christine Cooper
Ini berfungsi pada sistem saya untuk gambar-gambar unggulan juga.
fuxia
1
Ini memiliki masalah potensial, sepertinya Anda memilih semua yang bernilai = diunggah. Juga, jika Anda ingin menambahkan javascript ke inisialisasi setiap pengunggah, wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});akan lebih tepat.
NoBugs
13

Satu-satunya masalah dengan JS di atas yang mengaktifkan kotak pilih untuk memicu perubahan setelah halaman dimuat dan setelah itu sudah mulai mengunduh SEMUA MEDIA ITEM. Untuk klien saya pada T1 lambat ini terkunci saat mengunduh kedua SEMUA WAKTU MEDIA dan DITAWARKAN UNTUK item POST INI bersama-sama.

Saya mendapat bantuan dari Sewpafly yang hebat yang mengembangkan Plugin Editor Thumbnail Editor . ia berbagi sepotong besar JS yang mencegah memuat SEMUA BARANG MEDIA dan memaksanya memuat gambar hanya "DITAWARKAN KE POS INI" secara default.

Kode

File: myadmin.js

jQuery(function($) {
    var called = 0;
    $('#wpcontent').ajaxStop(function() {
        if ( 0 == called ) {
            $('[value="uploaded"]').attr( 'selected', true ).parent().trigger('change');
            called = 1;
        }
    });
  var oldPost = wp.media.view.MediaFrame.Post;
    wp.media.view.MediaFrame.Post = oldPost.extend({
        initialize: function() {
            oldPost.prototype.initialize.apply( this, arguments );
            this.states.get('insert').get('library').props.set('uploadedTo', wp.media.view.settings.post.id);
        }
    });
});

File: functions.php

add_action('admin_enqueue_scripts', 'add_admin_js');
function add_admin_js() {
    wp_enqueue_script('admin_js', get_bloginfo( 'template_directory' ) . '/js/admin.js');
}

Kode yang sama pada GitHub: https://gist.github.com/fishnyc22/5593693

Saya menjatuhkan itu ke dalam file JS dan menyebutnya dalam functions.php dengan admin_enqueue_scripts. Lihat GIST di atas untuk PHP dan JS.

Bekerja dengan sangat baik. Semoga orang-orang wordpress yang baik memperbaikinya dalam pembaruan yang akan datang, tetapi untuk saat ini Sewpafly memiliki solusi terbaik yang saya temukan. Sekali lagi terima kasih sobat.

Saya harus mencatat bahwa saya baru saja menemukan bahwa penampil default ke gambar berukuran sedang yang telah saya nonaktifkan (ditetapkan ke 0,0) karena saya tidak menggunakan dan mencegah mengasapi. Ketika ukuran sedang tidak tersedia, wordpress memuat gambar ukuran LENGKAP. Saya sejak diberikan memungkinkan ukuran sedang.

dave
sumber
sangat membantu - tidak bisakah seseorang membatasi jumlah gambar yang ditampilkan di perpustakaan media dengan beberapa jenis pengait?
Bawaan
Secara pribadi, saya juga ingin menambahkan CSS ini yang akan menyembunyikan dropdown media: pastebin.com/1dP6SR4g
Howdy_McGee
1
Sayangnya, solusi ini menderita satu masalah besar. Lakukan hal berikut: 1. Buka posting di layar post-edit. 2. Klik tautan "Setel fitur gambar" (sebelum mengklik tombol Tambahkan Media). 3. Kode ini berfungsi dengan baik sejauh ini. Sekarang, tutup jendela dan klik tombol Add Media. Anda akan melihat bahwa opsi "Semua media" dipilih tetapi menampilkan yang diunggah. Untuk beralih ke semua gambar, Anda harus beralih ke yang diunggah, lalu kembali ke semua media. Adakah yang punya solusi untuk masalah ini? Terima kasih untuk ini.
Christine Cooper
4

@toscho Ah, saya menemukan bug di kode Anda. Tolong telanjang dengan saya. Lakukan hal berikut yang tepat untuk mereplikasi masalah:

1) Buka draft postingan.

2) Klik Add Mediatombol. Tunggu fungsi jQuery dimuat.

3) Di sebelah kiri Anda, klik Set Featured Imagetautan.

4) Sekarang tutup jendela popup Media dan pada halaman edit posting, klik Set featured imagetautan di bilah sisi kanan.

5) Anda akan melihat bahwa fungsi jQuery tidak akan berfungsi.

Namun, jika Anda harus mengeklik Set featured imagetautan terlebih dahulu pada postingan sunting beban, fungsinya akan berfungsi. Bisakah Anda meniru masalah ini dan mungkin menemukan solusinya? Maaf lagi karena memposting ini sebagai jawaban tetapi platform ini tidak menawarkan saya pilihan yang lebih baik saat ini.

EDIT: Can seseorang tolong beritahu toscho tahu tentang hal ini. Anda dapat melakukan ini dengan menambahkan komentar pada jawabannya yang menurut saya harus memberinya pemberitahuan. Saya tidak dapat menulis komentar karena saya tidak memiliki reputasi yang cukup ...

EDIT 2 : Jika Anda ingin menghindari masalah ini dengan putus asa, Anda dapat menghapus tautan "Set Featured Image" di sembulan dan memaksa pengguna untuk menggunakan tautan bilah sisi (seperti versi WP sebelum 3.5). Gunakan filter ini yang diperkenalkan di WP 3.5:

add_filter( 'media_view_strings', 'cor_media_view_strings' );
/**
 * @see wp-includes|media.php
 */
function cor_media_view_strings( $strings ) {
    unset( $strings['setFeaturedImageTitle'] );
    return $strings;
}

Seperti yang saya katakan, ini adalah perbaikan putus asa sampai ada solusi yang diposting untuk kode utama.

Christine Cooper
sumber
Saya menyadari hal ini, saya hanya tidak punya waktu untuk memperpanjang plugin.
fuxia
Saya mengerti, jika Anda ingin menemukan waktu dalam waktu dekat untuk memperpanjangnya, kita semua akan berterima kasih.
Christine Cooper
Saya memperbarui jawaban ini dengan "wordaround" untuk yang putus asa. toscho Anda dapat menambahkan ini ke jawaban Anda jika Anda mau ...
Christine Cooper
2

Hal utama yang saya tidak suka tentang sebagian besar solusi ini adalah bahwa itu berkedip pada banyak layar, dan jika Anda mengklik Featured Image, itu akan kembali menampilkan semua gambar. Setelah beberapa pencarian saya pikir menemukan solusi permanen (Terima kasih kepada Ünsal Korkmaz ) yang sepertinya menyelesaikan masalah ini. Kode:

add_action( 'admin_footer-post-new.php', 'media_library_filter' );
add_action( 'admin_footer-post.php', 'media_library_filter' );
function media_library_filter() { 
    ?>
    <script type="text/javascript">
        jQuery(document).on("DOMNodeInserted", function(){
            jQuery('select.attachment-filters [value="uploaded"]').attr( 'selected', true ).parent().trigger('change');
        });
    </script>
    <?php 
}

yang secara permanen mengatur perpustakaan media untuk hanya menampilkan "Uploaded To This Post", bahkan jika Anda mencoba dan mengubah tampilan yang berarti tidak ada berkedip.

Saya telah menambahkan kode ini untuk menemani untuk menghapus kotak pilih sepenuhnya:

add_action( 'admin_head', 'hide_select_ddl' );
function hide_select_ddl()
{
    ?>
<style type="text/css">
    div.media-menu a.media-menu-item:nth-child(3) {display:none!important;}
    .media-frame-content .attachment-filters:first-child {
        display:none;
    }
</style>
    <?php
}
Howdy_McGee
sumber
2

Versi baru wordpress menggunakan pendekatan yang berbeda (Advanced Backbonejs ) untuk pengunggah media; Periksa kode dari plugin ini karena berfungsi untuk versi WordPress baru.

numediaweb
sumber
2
Akan lebih baik jika Anda benar-benar membagikan kode - bukan hanya tautan.
kaiser
0

Ini adalah solusi saya untuk mengatur dateFilterke bulan ini, meskipun memicu AJAX dua kali.

.on('content:render:browse', function(a, b) {
  var filter = a.toolbar.secondary.get('dateFilter');           
  if (filter.model) {
    filter.model.set(filter.filters[1].props);
  }
})
Eilluj
sumber