問題描述

將媒體插入文章時,是否有辦法將 Media-Library 的預設檢視從 「所有媒體專案」 更改為 「已上傳到此帖子」?

還有另一個執行緒,其中提取了以下問題:How to manage attachment relationships

最佳解決方案

我以前的答案有兩個輕微的錯誤:

  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
}

次佳解決方案

JS 上面唯一的問題是它切換選擇框以在頁面載入之後以及在其已經開始下載所有媒體專案之後觸發更改。對於我的客戶端,在一個緩慢的 T1 這個鎖定的東西,因為它同時下載所有媒體時間和上載到這個 POST 專案。

我從一個開發 Post Thumbnail Editor 外掛的偉大的 Sewpafly 得到了一些幫助。他分享了一個偉大的 JS,阻止所有媒體專案的載入,並迫使它預設載入影像 「上傳到此 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

我把它放到了一個 JS 檔案中,並用 function_php 和 admin_enqueue_scripts 一起呼叫它。請參閱上面的 GIST 以及 PHP 和 JS 。

工作輝煌希望很好的 WordPress 人在即將到來的更新中解決這個問題,但是現在 Sewpafly 已經找到了最好的解決方案。再次感謝好友

我應該注意到,我剛剛發現,由於我沒有使用並防止膨脹,所以瀏覽器預設為已停用的 MEDIUM 大小的影像 (設定為 0,0) 。當中等大小不可用時,wordpress 載入了全尺寸影像。我已經給了中等大小。

第三種解決方案

@toscho 啊,我在你的程式碼中發現了一個錯誤。請放棄我做出以下準確的複製問題:

1) 開啟一個草稿文章。

2) 點選 Add Media 按鈕。等待載入 jQuery 函式。

3) 在左邊,點選 Set Featured Image 連結。

4) 現在關閉 「媒體」 彈出視窗,在 「編輯」 頁面上,單擊右側 side-bar 上的 Set featured image 連結。

5) 你會看到 jQuery 函式不起作用。

但是,如果您在釋出編輯載入後首先點選了 Set featured image 連結,該功能將會起作用。你能複製這個問題,可能找到一個解決方案嗎?對不起,釋出這個作為答案,但這個平臺目前沒有提供一個更好的選擇。

編輯:有人可以讓我們來瞭解這個。你可以透過在他的回答中新增評論來做到這一點,我認為應該給他一個通知。我不能寫評論,因為我沒有足夠的聲譽

編輯 2:如果你想絕對地避免這個問題,你可以刪除彈出視窗中的 「設定精選影像」 連結,並強制使用者使用側邊欄連結 (如 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;
}

正如我所說,這是一個絕望的修復,直到有一個解決方案發布的主要程式碼。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。