Ortam Kitaplığı'nın varsayılan görünümünü 3.5'te değiştir


33

Bir gönderiye medya eklerken, Medya Kitaplığının varsayılan görünümünü "Tüm medya öğeleri" den "Bu yazıya yüklendi" olarak değiştirmenin bir yolu var mı?

Ödünç Alındı ​​Screenshot

Bu sorunun alındığı başka bir konu daha var: Ek ilişkileri nasıl yönetilir?


Diğer tüm eklentileri kapatmayı, varsayılan temaya geri dönmeyi ve ardından birini toscho'dan etkinleştirmeyi denediniz mi? Bir JS çatışması olabilir.
kaiser,

Yanıtlar:


22

Önceki cevabımda iki küçük hata vardı:

  1. changeEbeveyn için olayı tetiklemeyi unuttum .
  2. Her AJAX çağrısında işlevi çağırdım, diğer seçimleri imkansız hale getirdim.

İşte sabit kod:

<?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
}

Çok teşekkür ederim, toscho! <br> Buraya bıraktığın eklenti kodu şimdi benim için bir cazibe gibi! (Birisi bu "cevabı" bir yoruma çevirip cevabı ayarlayabilseydi daha iyi olurdu)
div

Cevap onay işaretini işaretleyebilecek tek kişi sizsiniz . Sormak için kullandığınız hesabı kullanmalısınız. İki hesabı da birleştirdim, şimdi onay işaretini işaretleyebilmelisin. :)
fuxia

3
Bu çok şık kod, Add Mediadüğmeyi tıkladığınızda çalışır, ancak tıklattığınızda çalışmaz Set featured image. Orada çalışmasını sağlamanın bir yolu var mı?
Christine Cooper

Bu özellikli görüntüler için de sistemimde çalışıyor.
fuxia

1
Bunun potansiyel bir sorunu var, değeri olan her şeyi seçiyorsunuz gibi görünüyor = yüklendi. Ayrıca, her yükleyicinin başlatılmasına javascript eklemek isterseniz , wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});daha uygun olur.
NoBugs

13

Yukarıdaki JS ile ilgili sorun, sayfa yüklendikten sonra ve TÜM ORTAM ÖĞELERİ'ni indirmeye başladıktan sonra değişikliği tetiklemek için seçim kutusunu değiştirir. Müşterim için T1'i yavaşlattığımda bu, hem TÜM ORTAM ZAMANLARINI hem de BU POST'A YÜKLENMİŞ öğeleri indirirken, bunları kilitledi.

Post Thumbnail Editor Plugin'i geliştiren büyük Sewpafly'den yardım aldım . TÜM MEDYA ÖĞELERİ'nin yüklenmesini önleyen ve varsayılan olarak yalnızca "BU POSTA YÜKLENEN" resimlerini yüklemeye zorlayan büyük bir JS paylaştı.

Kod

Dosya: 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);
        }
    });
});

Dosya: 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');
}

GitHub'daki aynı kod: https://gist.github.com/fishnyc22/5593693

Bunu bir JS dosyasına bıraktım ve admin_enqueue_scripts ile functions.php dosyasına çağırdım. PHP ve JS için yukarıdaki GIST'e bakın.

Zekice çalışıyor. İnşallah iyi wordpress milleti yaklaşan bir güncellemede bunu düzeltir, fakat şimdilik Sewpafly bulduğum en iyi çözüme sahip. Tekrar teşekkürler dostum.

İzleyicinin, şişirmeyi kullanmadığım ve engellemediğim için devre dışı bıraktığım (0,0 olarak ayarlanmış) MEDIUM boyutlu görüntülere varsayılan olduğunu henüz keşfettiğimi belirtmeliyim. Orta boy kullanılamıyorsa wordpress, TAM boy görüntüyü yükler. O zamandan beri orta büyüklüğü etkinleştirdim.


Son derece yararlı - biri yalnızca bir tür kanca ile medya kitaplığında görüntülenen görüntü sayısını sınırlamakla kalmaz mı?
Doğuştan

Şahsen, medya açılır
penceresini

1
Ne yazık ki, bu çözüm büyük bir sorundan muzdarip. Aşağıdakileri yapın: 1. Düzenleme sonrası ekranında bir gönderi açın. 2. "Özellikli resim ayarla" bağlantısını tıklayın (Medya Ekle düğmesine basmadan önce). 3. Kod şu ana kadar iyi çalışıyor. Şimdi, pencereyi kapatın ve ardından Medya Ekle düğmesine tıklayın. "Tüm medya" seçeneğinin seçili olduğunu göreceksiniz, ancak yüklenenleri görüntülüyorsunuz. Tüm görüntülere geçmek için, yüklenenlere ve sonra tüm medyalara geri dönmeniz gerekir. Bu soruna bir çözümü olan var mı? Yine de bunun için teşekkür ederim.
Christine Cooper

4

@toscho Ah, kodunda bir hata buldum. Lütfen benimle çıplak ol. Sorunu çoğaltmak için aşağıdakileri yapın:

1) Taslak yayını açın.

2) Add Mediadüğmesine tıklayın. JQuery işlevinin yüklenmesini bekleyin.

3) Sol tarafta, Set Featured Imagelinke tıklayın.

4) Şimdi Medya açılır penceresini kapatın ve yazı düzenleme sayfasında, Set featured imagesağ kenar çubuğundaki bağlantıya tıklayın .

5) jQuery işlevinin çalışmayacağını göreceksiniz.

Ancak, eğer üzerine tıklarsanız Set featured image önce düzenleme sonrası yük bağlantısını işlev çalışır. Bu sorunu çoğaltabilir ve muhtemelen bir çözüm bulabilir misiniz? Bunu bir cevap olarak gönderdiğim için tekrar özür dilerim, ancak bu platform şu anda bana daha iyi bir seçenek sunmuyor.

EDIT: Birisi toscho izin lütfen . Bunu, kendisine bir bildirim vermesi gerektiğine inandığım cevabına bir yorum ekleyerek yapabilirsiniz. Yeterli üne sahip olmadığım için yorum yazamıyorum ...

2. DÜZENLEME : Bu sorundan umutsuzca kaçınmak istiyorsanız, açılır penceredeki "Öne Çıkan Görüntü Ayarla" bağlantısını kaldırabilir ve kullanıcıyı kenar çubuğu bağlantısını kullanmaya zorlayabilirsiniz (3.5'ten önceki WP sürümleri gibi). WP 3.5'te tanıtılan bu filtreyi kullanın:

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

Dediğim gibi, ana kod için gönderilen bir çözüm bulunana kadar bu umutsuz bir çözüm.


Bunun farkındayım, eklentiyi genişletmek için zamanım yok.
fuxia

Anlamak isterim ki, yakın zamanda genişletmek için zaman bulursanız hepimiz minnettar oluruz.
Christine Cooper

Bu cevabı çaresiz olanlar için bir "geçici çözüm" ile güncelledim . toscho eğer istersen bunu cevabına ekleyebilirsin ...
Christine Cooper

2

Bu çözümlerin çoğundan hoşlanmadığım en önemli şey, ekranların birçoğunda göz kırpıyor olmasıydı ve Öne Çıkan Görüntüye tıklarsanız tüm görüntüleri göstermeye geri dönecekti. Bazı araştırmalardan sonra kalıcı bir çözüm buldum ( Ünsal Korkmaz sayesinde ) bu problemleri çözüyor gibi görünüyor. Kod:

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 
}

kalıcı olarak, medya kitaplığını yalnızca “Bu Gönderiye Yüklendi” olarak gösterecek şekilde ayarlar.

Seçim kutusunu tamamen kaldırmak için eşlik etmek üzere bu kodu ekledim:

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
}

2

WordPress'in yeni sürümleri medya yükleyici için farklı bir yaklaşım (ileri düzeyde Backbonejs ) kullanır; WordPress'in yeni sürümleri için bu eklentiden gelen kodu kontrol edin .


2
Sadece bir bağlantı değil, aslında kodu paylaştıysanız iyi olurdu.
kaiser

0

dateFilterAJAX'ı iki kez tetiklemesine rağmen bu, şu anki aya ayarlamak için kullandığım çözümler .

.on('content:render:browse', function(a, b) {
  var filter = a.toolbar.secondary.get('dateFilter');           
  if (filter.model) {
    filter.model.set(filter.filters[1].props);
  }
})
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.