게시물에 미디어를 삽입 할 때 미디어 라이브러리의 기본보기를 "모든 미디어 항목"에서 "이 게시물에 업로드"로 변경하는 방법이 있습니까?
이 질문에서 추출한 또 다른 스레드가 있습니다. 첨부 파일 관계를 관리하는 방법
게시물에 미디어를 삽입 할 때 미디어 라이브러리의 기본보기를 "모든 미디어 항목"에서 "이 게시물에 업로드"로 변경하는 방법이 있습니까?
이 질문에서 추출한 또 다른 스레드가 있습니다. 첨부 파일 관계를 관리하는 방법
답변:
이전 답변에 두 가지 사소한 실수가있었습니다.
change
부모 의 이벤트 를 트리거하는 것을 잊었습니다 .고정 코드는 다음과 같습니다.
<?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
}
Add Media
단추 를 클릭 할 때 작동 하지만 단추 를 클릭 할 때는 작동 하지 않습니다 Set featured image
. 거기에서도 작동시킬 수있는 방법이 있습니까?
wp.media.view.UploaderWindow.prototype.on('ready',function() {console.log(jQuery('.media-modal-content'))...your code here...});
하려는 경우 더 적합합니다.
위의 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 크기의 이미지로 뷰어가 기본값임을 발견했습니다. 중간 크기를 사용할 수없는 경우 워드 프레스는 전체 크기 이미지를로드합니다. 그 이후로 중간 크기를 사용하도록 설정했습니다.
@ 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;
}
내가 말했듯이, 이것은 메인 코드에 대한 솔루션이 게시 될 때까지 필사적 인 수정입니다.
이 솔루션의 대부분에 대해 마음에 들지 않는 주요한 점은 많은 화면에서 깜박이고 있다는 것입니다. 특징 이미지 를 클릭하면 모든 이미지가 다시 표시됩니다. 일부 검색 후 나는 이 문제를 해결하는 것처럼 보이는 영구적 인 해결책 ( Ü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
}
새로운 워드 프레스 버전은 미디어 업 로더에 대해 다른 접근 방식 (고급 Backbonejs )을 사용합니다. 새 버전의 WordPress에서 작동 하므로이 플러그인 의 코드를 확인하십시오 .