問題描述

將媒體插入文章時,是否有辦法將 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。