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ı?
Bu sorunun alındığı başka bir konu daha var: Ek ilişkileri nasıl yönetilir?
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ı?
Bu sorunun alındığı başka bir konu daha var: Ek ilişkileri nasıl yönetilir?
Yanıtlar:
Önceki cevabımda iki küçük hata vardı:
change
Ebeveyn için olayı tetiklemeyi unuttum .İş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
}
Add Media
düğ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ı?
wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});
daha uygun olur.
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ı.
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.
@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 Media
düğmesine tıklayın. JQuery işlevinin yüklenmesini bekleyin.
3) Sol tarafta, Set Featured Image
linke tıklayın.
4) Şimdi Medya açılır penceresini kapatın ve yazı düzenleme sayfasında, Set featured image
sağ 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.
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
}
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 .