เปลี่ยนมุมมองเริ่มต้นของ Media Library เป็น 3.5?


33

เมื่อแทรกสื่อลงในโพสต์มีวิธีการเปลี่ยนมุมมองเริ่มต้นของไลบรารีสื่อจาก "รายการสื่อทั้งหมด" เป็น "อัปโหลดไปยังโพสต์นี้" หรือไม่

สกรีนช็อตที่ยืมมา

มีเธรดอื่นที่ดึงคำถามนี้มาจาก: วิธีจัดการความสัมพันธ์ของไฟล์แนบ


คุณลองปิดปลั๊กอินอื่น ๆ ทั้งหมดแล้วเปลี่ยนกลับเป็นธีมเริ่มต้นจากนั้นเปิดใช้งานปลั๊กอินหนึ่งตัวจาก toscho หรือไม่ อาจเป็นไปได้ว่ามีข้อขัดแย้งของ JS
ไกเซอร์

คำตอบ:


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
}

ขอบคุณมาก! <br> รหัสปลั๊กอินที่คุณทิ้งไว้ที่นี่ใช้งานได้เป็นอย่างดีสำหรับฉันตอนนี้! (มันจะดีถ้ามีคนสามารถแปลงนี้ "คำตอบ" ในความคิดเห็นและการตั้งค่าสถานะเพื่อตอบ)
div

คุณเป็นคนเดียวที่สามารถติ๊กเครื่องหมายถูกคำตอบได้ คุณต้องใช้บัญชีที่คุณใช้ในการถาม เมื่อรวมทั้งสองบัญชีแล้วคุณควรจะสามารถทำเครื่องหมายถูกได้ทันที :)
fuxia

3
รหัสนี้สง่างามมากทำงานเมื่อคุณคลิกAdd Mediaปุ่ม Set featured imageแต่ไม่เมื่อคุณคลิก มีวิธีให้ทำงานที่นั่นด้วยหรือไม่
Christine Cooper

มันทำงานบนระบบของฉันสำหรับภาพเด่นด้วย
fuxia

1
นี่เป็นปัญหาที่อาจเกิดขึ้นดูเหมือนว่าคุณกำลังเลือกทุกอย่างที่มีค่า = อัพโหลด นอกจากนี้หากคุณต้องการเพิ่มจาวาสคริปต์ในการเริ่มต้นของผู้อัปโหลดทุกคนwp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});จะเหมาะสมกว่า
NoBugs

13

ปัญหาเดียวกับ JS ด้านบนที่มันสลับกล่องเลือกเพื่อทริกเกอร์การเปลี่ยนแปลงหลังจากที่โหลดหน้าเว็บและหลังจากนั้นก็เริ่มที่จะดาวน์โหลดรายการสื่อทั้งหมด สำหรับลูกค้าของฉันบน T1 ที่ช้าสิ่งนี้ถูกล็อกไว้เนื่องจากมันดาวน์โหลดทั้งสื่อทั้งหมดและอัปโหลดไปยังรายการโพสต์นี้ด้วยกัน

ฉันได้รับความช่วยเหลือจาก Sewpafly ที่ยอดเยี่ยมที่พัฒนาปลั๊กอินตัวแก้ไขโพสต์รูปย่อ เขาแบ่งปัน JS ชิ้นส่วนที่ยอดเยี่ยมซึ่งป้องกันการโหลดของรายการสื่อทั้งหมดและบังคับให้โหลดเฉพาะภาพ "อัปโหลดไปยังโพสต์นี้" โดยค่าเริ่มต้น

รหัส

ไฟล์: 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

ฉันปล่อยมันลงในไฟล์ JS และเรียกมันใน functions.php ด้วย admin_enqueue_scripts ดู GIST ด้านบนสำหรับทั้ง PHP และ JS

ทำงานได้ยอดเยี่ยม หวังว่าผู้ใช้เวิร์ดเพรสที่ดีจะแก้ไขปัญหานี้ในการอัปเดตที่กำลังจะมา แต่สำหรับตอนนี้Sewpaflyมีทางออกที่ดีที่สุดที่ฉันเคยพบ ขอบคุณเพื่อนอีกครั้ง

ฉันควรทราบว่าฉันเพิ่งค้นพบว่าค่าเริ่มต้นของผู้ดูเป็นภาพขนาดปานกลางซึ่งฉันได้ปิดการใช้งาน (ตั้งค่าเป็น 0,0) เนื่องจากฉันไม่ได้ใช้และป้องกันการขยายตัว เมื่อขนาดกลางไม่พร้อมใช้งาน wordpress โหลดภาพขนาดเต็ม ฉันได้รับตั้งแต่เปิดใช้งานในขนาดกลาง


มีประโยชน์อย่างยิ่ง - สามารถเพียง จำกัด จำนวนรูปภาพที่แสดงในไลบรารีสื่อด้วยการพิมพ์บางประเภทได้หรือไม่
กำเนิดโดย

โดยส่วนตัวแล้วฉันต้องการเพิ่ม CSS นี้ซึ่งจะซ่อนสื่อแบบหล่นลง: pastebin.com/1dP6SR4g
Howdy_McGee

1
น่าเสียดายที่โซลูชันนี้มีปัญหาสำคัญ ทำสิ่งต่อไปนี้: 1. เปิดโพสต์ในหน้าจอแก้ไขโพสต์ 2. คลิกที่ลิงก์ "ตั้งค่ารูปภาพเด่น" (ก่อนคลิกที่ปุ่มเพิ่มสื่อ) 3. รหัสทำงานได้ดีจนถึงตอนนี้ ตอนนี้ปิดหน้าต่างแล้วคลิกที่ปุ่มเพิ่มสื่อ คุณจะเห็นว่ามีการเลือกตัวเลือก "สื่อทั้งหมด" แต่กำลังแสดงรายการที่อัปโหลด ในการสลับไปยังรูปภาพทั้งหมดคุณจะต้องสลับเพื่ออัปโหลดจากนั้นกลับสู่สื่อทั้งหมด ใครมีวิธีแก้ปัญหานี้หรือไม่? ขอบคุณสำหรับสิ่งนี้
Christine Cooper

4

@toscho Ah ฉันพบข้อผิดพลาดในรหัสของคุณ โปรดเปลือยกับฉัน ทำตามขั้นตอนต่อไปนี้เพื่อจำลองปัญหา:

1) เปิดโพสต์ฉบับร่าง

2) คลิกที่Add Mediaปุ่ม รอโหลดฟังก์ชัน jQuery

3) ทางด้านซ้ายของคุณคลิกที่Set Featured Imageลิงค์

4) ตอนนี้ปิดหน้าต่างป๊อปอัพสื่อและในหน้าแก้ไขการโพสต์คลิกที่Set featured imageลิงค์บนแถบด้านขวา

5) คุณจะเห็นว่าฟังก์ชั่น jQuery ไม่ทำงาน

อย่างไรก็ตามหากคุณจะคลิกที่Set featured imageลิงก์ก่อนในการโหลดการแก้ไขโพสต์ฟังก์ชันจะทำงาน คุณสามารถทำซ้ำปัญหานี้และหาวิธีแก้ไขได้หรือไม่? ขออภัยอีกครั้งสำหรับการโพสต์สิ่งนี้เป็นคำตอบ แต่แพลตฟอร์มนี้ไม่ได้เสนอตัวเลือกที่ดีกว่าให้ฉันในขณะนี้

แก้ไข: ใครก็ได้โปรดให้toschoทราบเกี่ยวกับเรื่องนี้ คุณสามารถทำได้โดยการเพิ่มความคิดเห็นในคำตอบของเขาซึ่งฉันเชื่อว่าควรแจ้งให้เขาทราบ ฉันไม่สามารถเขียนความคิดเห็นเนื่องจากฉันมีชื่อเสียงไม่พอ ...

แก้ไข 2 : หากคุณต้องการหลีกเลี่ยงปัญหานี้คุณสามารถลบลิงค์ "Set Featured Image" ในป๊อปอัพและบังคับให้ผู้ใช้ใช้ลิงค์ด้านข้าง (เช่นรุ่น 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

ฉันเข้าใจถ้าคุณต้องการที่จะหาเวลาในอนาคตอันใกล้ที่จะขยายมันเราทุกคนจะขอบคุณ
Christine Cooper

ฉันอัปเดตคำตอบนี้ด้วยคำว่า "wordaround" สำหรับคำที่หมดหวัง toscho คุณสามารถเพิ่มคำตอบของคุณได้หากคุณต้องการ ...
Christine Cooper

2

สิ่งสำคัญที่ฉันไม่ชอบเกี่ยวกับการแก้ปัญหาเหล่านี้ส่วนใหญ่ก็คือมันกระพริบบนหน้าจอจำนวนมากและหากคุณคลิกที่ภาพที่แนะนำมันจะเปลี่ยนกลับไปแสดงภาพทั้งหมด หลังจากการค้นหาบางอย่างฉันคิดว่าพบวิธีแก้ปัญหาอย่างถาวร (ขอบคุณÜnsal Korkmaz ) ซึ่งดูเหมือนว่าจะช่วยแก้ปัญหาเหล่านี้ได้ รหัส:

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 
}

ซึ่งตั้งค่าไลบรารีสื่ออย่างถาวรให้แสดงเฉพาะ "อัปโหลดไปยังโพสต์นี้" แม้ว่าคุณจะลองและเปลี่ยนมุมมองซึ่งหมายความว่าไม่มีการกระพริบ

ฉันได้เพิ่มรหัสนี้เพื่อประกอบมันเพื่อลบ selectbox ทั้งหมด:

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

เวิร์ดเพรสเวอร์ชันใหม่ใช้แนวทางที่แตกต่าง ( Backbonejsขั้นสูง) สำหรับผู้อัปโหลดสื่อ ตรวจสอบรหัสจากปลั๊กอินนี้ตามที่ใช้กับเวิร์ดเพรสรุ่นใหม่


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);
  }
})
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.