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의 클라이언트의 경우 모든 미디어 시간과이 POST에 업로드 항목을 함께 다운로드 할 때 문제가 해결되었습니다.

Post Thumbnail Editor Plugin 을 개발하는 위대한 Sewpafly의 도움을 받았습니다 . 그는 모든 미디어 항목의로드를 방지하고 기본적으로 "이 POST에 업로드"이미지 만로드하도록하는 훌륭한 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 파일로 가져 와서 admin_enqueue_scripts를 사용하여 functions.php에서 호출했습니다. PHP와 JS 모두 위의 GIST를 참조하십시오.

훌륭하게 작동합니다. 다행스럽게도 훌륭한 워드 프레스 사람들이 다가오는 업데이트에서이 문제를 해결하기를 기대하지만, 현재 Sewpafly 는 내가 찾은 최고의 솔루션을 가지고 있습니다. 다시 한번 감사합니다.

방금 뷰어가 부풀림을 사용하지 않고 사용하지 않기 때문에 비활성화 한 (0,0으로 설정 한) MEDIUM 크기의 이미지로 뷰어가 기본값임을 발견했습니다. 중간 크기를 사용할 수없는 경우 워드 프레스는 전체 크기 이미지를로드합니다. 그 이후로 중간 크기를 사용하도록 설정했습니다.


매우 도움이되는 방법-미디어 라이브러리에 표시되는 이미지 수를 일부 유형의 후크로 제한 할 수 있습니까?
Innate

개인적으로, 나는 또한 미디어 드롭 다운을 숨길이 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 :이 문제를 필사적으로 피하려면 팝업에서 "특징 이미지 설정"링크를 제거하고 사용자가 사이드 바 링크 (3.5 이전의 WP 버전)를 사용하도록 강제 할 수 있습니다. 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

필자는이 답변 을 필사적 인 질문 에 대한 "단어"로 업데이트했습니다 . 당신이 원한다면 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 
}

미디어 라이브러리가 영구적으로 "이 게시물에 업로드 됨"만 표시하도록 설정합니다.보기를 변경하려고해도 깜박임이 없습니다.

선택 상자를 완전히 제거하기 위해이 코드를 추가했습니다.

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 )을 사용합니다. 새 버전의 WordPress에서 작동 하므로이 플러그인 의 코드를 확인하십시오 .


2
링크가 아니라 실제로 코드를 공유하면 좋을 것입니다.
kaiser

0

이것은 dateFilterAJAX를 두 번 트리거하지만 현재 달로 설정 하는 솔루션 입니다.

.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.