3.5 में मीडिया लाइब्रेरी के डिफ़ॉल्ट-दृश्य को बदलें?


33

मीडिया को पोस्ट में सम्मिलित करते समय, क्या "ऑल मीडिया आइटम" से "इस पोस्ट पर अपलोड" में मीडिया-लाइब्रेरी के डिफ़ॉल्ट-दृश्य को बदलने का कोई तरीका है?

उधार लिया हुआ स्क्रीनशॉट

एक और सूत्र है जहां से यह प्रश्न निकाला गया था: अनुलग्नक रिश्तों को कैसे प्रबंधित करें


क्या आपने अन्य सभी प्लगइन्स को बंद करने का प्रयास किया है, डिफ़ॉल्ट थीम पर वापस स्विच करें और फिर सिर्फ एक को toscho से सक्रिय करें? एक जेएस संघर्ष संभव हो सकता है।
kaiser

जवाबों:


22

मेरे पिछले उत्तर में दो छोटी गलतियाँ थीं:

  1. मैं changeमाता-पिता के लिए घटना को ट्रिगर करना भूल गया ।
  2. मैंने प्रत्येक AJAX कॉल पर फ़ंक्शन को कॉल किया, जिससे अन्य चयन असंभव हो गए।

यहाँ निश्चित कोड है:

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

बहुत बहुत धन्यवाद, toscho! <br> आपके द्वारा यहां डाला गया प्लग-कोड अब मेरे लिए एक आकर्षण की तरह काम करता है! (यह अच्छा होगा अगर कोई इस "उत्तर" को टिप्पणी में बदल सकता है और जवाब देने के लिए स्थिति निर्धारित कर सकता है)
div

आप केवल एक ही हैं जो उत्तर चेक मार्क पर टिक कर सकते हैं । आपको उस खाते का उपयोग करना होगा जिसका उपयोग आपने पूछा था। मैंने दोनों खातों को मर्ज कर दिया है, आपको अब चेक मार्क पर टिक करने में सक्षम होना चाहिए। :)
FUXIA

3
यह बहुत ही सुंदर कोड तब काम करता है जब आप Add Mediaबटन पर क्लिक करते हैं लेकिन जब आप क्लिक करते हैं तो नहीं Set featured image। वहाँ के रूप में अच्छी तरह से यह काम करने के लिए एक रास्ता है?
क्रिस्टीन कूपर

यह चित्रित छवियों के लिए मेरे सिस्टम पर भी काम करता है।
FUXIA

1
यह एक संभावित समस्या है, ऐसा लगता है कि आप हर उस चीज का चयन कर रहे हैं जिसका मूल्य = अपलोड है। इसके अलावा, यदि आप हर अपलोडर के इनिशियलाइज़ेशन में जावास्क्रिप्ट जोड़ना चाहते हैं , wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});तो यह अधिक उचित होगा।
NoBugs

13

जेएस के ऊपर एकमात्र समस्या यह है कि यह पेज लोड होने के बाद और इसके बाद पहले से ही सभी मीडिया आइटम्स डाउनलोड करने के लिए परिवर्तन को ट्रिगर करने के लिए चुनिंदा बॉक्स को टॉगल करता है। धीमी T1 पर मेरे ग्राहक के लिए यह सभी लॉक किए गए चीजों को डाउनलोड करता है क्योंकि यह सभी मीडिया टाइम और UPLOADED TO THIS POST आइटम को एक साथ डाउनलोड करता है।

मुझे महान सीपफली से कुछ मदद मिली जो पोस्ट थंबनेल संपादक प्लगिन विकसित करता है । उन्होंने जेएस का एक बड़ा हिस्सा साझा किया जो सभी मीडिया आइटम्स के भार को रोकता है और इसे केवल डिफ़ॉल्ट रूप से "UPLOADED TO THIS POST" छवियों को लोड करने के लिए मजबूर करता है।

कोड

फाइल: 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);
        }
    });
});

फ़ाइल: 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 पर समान कोड: https://gist.github.com/fishnyc22/5593693

मैंने उस जेएस फ़ाइल को गिरा दिया और उसे functions.php में admin_enqueue_scripts के साथ कॉल किया। PHP और JS दोनों के लिए ऊपर GIST देखें।

शानदार ढंग से काम करता है। उम्मीद है कि ठीक वर्डप्रेस लोग इसे आगामी अपडेट में ठीक कर देंगे , लेकिन अब सीपफली के पास मेरे पास सबसे अच्छा समाधान है। धन्यवाद फिर से दोस्त

मुझे ध्यान देना चाहिए कि मुझे अभी पता चला है कि दर्शक मेडम के आकार की छवियों को डिफॉल्ट करता है जिन्हें मैंने अक्षम किया था (0,0 पर सेट) क्योंकि मैं ब्लोट का उपयोग और रोकथाम नहीं कर रहा था। जब मध्यम आकार में उपलब्ध वर्डप्रेस फुल साइज इमेज को लोड नहीं करता है। मैंने तब से मध्यम आकार को सक्षम किया है।


बेहद मददगार - क्या मीडिया लाइब्रेरी में प्रदर्शित छवियों की संख्या को केवल कुछ प्रकार के हुक के साथ सीमित नहीं किया जा सकता है?
Innate

: व्यक्तिगत रूप से, मैं भी इस तरह सीएसएस जो मीडिया लटकती छुपा देगा जोड़ने के लिए pastebin.com/1dP6SR4g
Howdy_McGee

1
दुर्भाग्य से, यह समाधान एक प्रमुख मुद्दे से ग्रस्त है। निम्न कार्य करें: 1. पोस्ट-एडिट स्क्रीन में एक पोस्ट खोलें। 2. "सेट की गई छवि" लिंक पर क्लिक करें (मीडिया जोड़ें बटन पर क्लिक करने से पहले)। 3. कोड अब तक ठीक काम करता है। अब, विंडो बंद करें और फिर Add Media बटन पर क्लिक करें। आप देखेंगे कि "ऑल मीडिया" विकल्प चुना गया है लेकिन यह अपलोड किए गए लोगों को प्रदर्शित कर रहा है। सभी छवियों को टॉगल करने के लिए, आपको अपलोड करने के लिए टॉगल करने की आवश्यकता होगी, और फिर सभी मीडिया पर वापस आना होगा। क्या किसी के पास इस समस्या का हल है? फिर भी इसके लिए आपका धन्यवाद।
क्रिस्टीन कूपर

4

@toscho आह, मुझे आपके कोड में एक बग मिला। कृपया मेरे साथ नंगे हो। समस्या को दोहराने के लिए निम्नलिखित कार्य करें:

1) एक मसौदा पोस्ट खोलें।

2) Add Mediaबटन पर क्लिक करें। लोड करने के लिए jQuery फ़ंक्शन की प्रतीक्षा करें।

3) अपने बाईं ओर, Set Featured Imageलिंक पर क्लिक करें ।

4) अब मीडिया पॉपअप विंडो को बंद करें और पोस्ट एडिट पेज Set featured imageपर राइट साइड बार पर दिए गए लिंक पर क्लिक करें ।

5) आप देखेंगे कि jQuery फ़ंक्शन काम नहीं करेगा।

हालाँकि, यदि आपने Set featured imageपोस्ट एडिट लोड पर पहले लिंक पर क्लिक किया होगा , तो फ़ंक्शन काम करेगा। क्या आप इस मुद्दे को दोहरा सकते हैं और संभवतः इसका हल ढूंढ सकते हैं? उत्तर के रूप में पोस्ट करने के लिए फिर से क्षमा करें, लेकिन यह प्लेटफ़ॉर्म मुझे वर्तमान में एक बेहतर विकल्प प्रदान नहीं करता है।

संपादित करें: Can कोई तो कृपया toscho इस बारे में पता। आप उसके जवाब में एक टिप्पणी जोड़कर ऐसा कर सकते हैं, जो मुझे लगता है कि उसे एक अधिसूचना देनी चाहिए। मैं टिप्पणी नहीं लिख सकता क्योंकि मेरे पास पर्याप्त प्रतिष्ठा नहीं है ...

EDIT 2 : यदि आप इस समस्या से पूरी तरह से बचना चाहते हैं, तो आप पॉपअप में "सेट फीचर्ड इमेज" लिंक को हटा सकते हैं और उपयोगकर्ता को साइडबार लिंक (जैसे WP संस्करण 3.5 से पहले) का उपयोग करने के लिए मजबूर कर सकते हैं। 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;
}

जैसा कि मैंने कहा, यह एक हताश फिक्स है जब तक कि मुख्य कोड के लिए कोई समाधान पोस्ट नहीं किया गया है।


मुझे इस बारे में पता है, मेरे पास प्लगइन का विस्तार करने का कोई समय नहीं है।
FUXIA

मैं समझता हूं, यदि आप इसे बढ़ाने के लिए निकट भविष्य में समय पाएंगे, तो हम सभी आभारी होंगे।
क्रिस्टीन कूपर

मैंने इस जवाब को हताश लोगों के लिए "शब्दशः" के साथ अद्यतन किया । यदि आप चाहें तो आप अपने जवाब के लिए इस जोड़ सकते हैं toscho ...
क्रिस्टीन कूपर

2

इन समाधानों में से अधिकांश के बारे में मुझे जो पसंद नहीं आया, वह यह है कि यह स्क्रीन के बहुत सारे पलकें झपका रहा था, और यदि आपने फीचर्ड इमेज पर क्लिक किया, तो यह सभी छवियों को वापस दिखाएगा। कुछ खोज के बाद मुझे लगता है कि एक स्थायी समाधान मिला ( थैंक्स टू अर्नाल कोरकमाज़ ) जो दिखता है कि यह इन समस्याओं को हल करता है। कोड:

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 
}

जो स्थायी रूप से मीडिया लाइब्रेरी को केवल "अपलोडेड टू दिस पोस्ट" दिखाने के लिए सेट करता है, भले ही आप कोशिश करें और उस दृश्य को बदल दें जिसका कोई मतलब नहीं है।

मैंने इस कोड को पूरी तरह से चयन बॉक्स को हटाने के लिए इसके साथ जोड़ा है:

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

मीडिया अपलोडर के लिए वर्डप्रेस के नए संस्करण एक अलग दृष्टिकोण (उन्नत बैकबोनज ) का उपयोग करते हैं; इस प्लगइन से कोड की जाँच करें क्योंकि यह वर्डप्रेस के नए संस्करणों के लिए काम करता है।


2
अच्छा होता अगर आप वास्तव में कोड साझा करते - केवल एक लिंक नहीं।
कैसर

0

यह मेरा समाधान है कि मैं dateFilterचालू महीने में सेट हो जाऊं, हालांकि यह दो बार AJAX को ट्रिगर करता है।

.on('content:render:browse', function(a, b) {
  var filter = a.toolbar.secondary.get('dateFilter');           
  if (filter.model) {
    filter.model.set(filter.filters[1].props);
  }
})
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.