Wordpress 3.5 매체 관리자에 메뉴 항목 추가


34

새 Wordpress 3.5 Media Manager의 왼쪽 표시 줄에있는 "URL에서 삽입"아래에 새 메뉴 항목을 추가하려면 어떻게합니까?

나는 백본 js를보고 있었고 내 JS로 성공했지만 성공하지 못했습니다.

편집 2 : 이것은 트릭을 수행하는 것 같습니다 :

http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html

간단한 작업을 수행해야하지만 Javascript에서 동일한 작업을 수행하는 것도 가능합니다. 새 미디어 관리자 내부 작업 방법에 대한 자습서 / 설명이 있으면 좋을 것입니다.


새로운 메뉴는 무엇을해야합니까? 메뉴 항목을 추가하는 것은 주요 문제가 아니며 올바른 방향으로 가고 있지만 설정이 변경되어 메뉴에 기본보기와 다른 항목이 표시되는 경우 Backbone에는 메뉴 항목에 대한보기가 필요합니다. 그뿐만 아니라 내가
붙어

메뉴 항목을 클릭하면 다른보기가 표시됩니다. 메뉴 항목을 표시하는 것이 첫 번째 단계입니다
erezie

1
내 150 포인트 바니에 대해 : 원래 URL의 목표는 JS 기반 방법을 사용하여 "URL에서 삽입"아래에 새로운 상태 메뉴 항목을 추가하고 포스트 편집기의 기본 미디어 모달에 새로운 뷰를 연결하는 것입니다.
Scott Kingsley Clark

@erezie, Fabien Quatravaux가 제공 한 답변 으로이 답변을 표시 할 수 있습니까?
Scott Kingsley Clark

답변:


19

좋아, 나는 대답에 가장 가까운 것이 있다고 생각한다.

나는 내 코드를 요점 에 넣었다.

결과는 다음과 같습니다. 맞춤 메뉴 스크린 샷

MVC 패턴을 존중하기 위해 몇 가지 Backbone 객체를 만들었습니다. controller.Custom모든 로직을 담당하고 view.Toolbar.Custom툴바 버튼을 다루며 view.Custom내부 UI를 표시합니다.


2
지금까지 무엇을 놓치고 있습니까?
카이저

좋은 시작 +1! 그러나 그렇습니다.이 기능을 수행하기 위해이를 구현해야하는 대신 스냅 샷이 매우 편리합니다 . 또한 해당 주석 줄을 //build an empty view (needs more work)응답의 내용으로 가져옵니다.
brasofilo

결과를 보여주기 위해 스크린 샷을 추가했습니다. 다음으로해야 할 일은 HTML 구성 요소를 표시하고 사용자 상호 작용에 반응하는보기 자체를 구현하는 것입니다.
Fabien Quatravaux

멋지다, 그것은 시작이다! 현상금은 가치가 있지만 필요하다고 느끼면 다음 단계로 자유롭게 가져 가십시오.
Scott Kingsley Clark

현상금 Scott에게 감사합니다! 작업중인 프로젝트에 필요하기 때문에 좀 더 깊이 파고들 것입니다. 코드를 사용할 수있게 되 자마자 다시 게시하겠습니다.
Fabien Quatravaux

10

"라우터 메뉴"( "미디어 라이브러리"의 오른쪽 추가)에 버튼을 추가하려고하지만 시스템은 동일합니다.

<script type="text/javascript">
    jQuery(window).on('load', function() {
        var media   = window.wp.media,  
        Attachment  = media.model.Attachment,
        Attachments = media.model.Attachments,
        Query       = media.model.Query,
        l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n,
        NewMenuItem;

        jQuery(document).on( 'click', '.insert-media', function( event ) {
            var workflow = wp.media.editor.get();
            var options = workflow.options;
            if( undefined == NewMenuItem ) {
                NewMenuItem = new wp.media.view.RouterItem( _.extend( options, { text: 'New Item!' } ) );
                workflow.menu.view.views.set( '.media-menu', NewMenuItem, _.extend( options, { add: true } ) );
            }

        });
    });
</script>

이제는 아직 아무것도하지 않습니다. 다음 단계입니다!


2
운이 좋습니까? JS 기반 솔루션은 제가보고 싶은 것이지만 원래의 포스터 편집에서 이미 언급 한 iframe PHP 솔루션과 다른 답변은 아닙니다
Scott Kingsley Clark

7

media_upload_tabs필터에 연결 하여 탭을 추가 할 수 있습니다 . 다음은 Network Shared Media 플러그인 에서 사용하는 방법입니다 .

function wpse_76980_add_upload_tab( $tabs ) {
    $newtab = array( 'tab_slug' => 'Tab Name' );
    return array_merge( $tabs, $newtab );
}
add_filter( 'media_upload_tabs', 'wpse_76980_add_upload_tab' );

그런 다음 media_upload_tab_slug작업에 연결하여 ( tab_slug위에서 사용 된) 탭 내용을 표시 할 수 있습니다.

function wpse_76980_media_upload() {
    // display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );

2
이것은 탭을 추가하는 오래된 방법입니다. 여전히 작동하지만 WP가 멀리 떨어져 있다고 생각합니다.
Jenny

2
@ 제니, 우리 이 필터를 믿고 있다고 생각 합니다. 관련 티켓 . (: oh and +1, nice snipett :)
brasofilo

3

나는 해결책이 없지만 힌트를 준다. 문자열은 배열에서 가져옵니다. hook을 통해 필터링 할 수 있습니다 media_view_strings. 클릭 후 모달 상자는 자바 스크립트이며 WP 3.5부터 backbone.js로 빌드됩니다. /wp-includes/js/media-views.js해결책을 참조하십시오 . 백본도 나에게도 새롭고 스크립트에는 많은 소스가 있습니다.


좋은 힌트 였지만 부족하다고 생각합니다. media.view.settingsJS VAR은 새로운 탭을 추가하는 PHP 필터 쥐게 될 수 있지만, 그 후, 탭은 iframe을 통해 렌더링된다 (참조 createIframeStates의 방법 media-views.js).
Fabien Quatravaux

어쩌면 자습서, 요점을 블로그 oo에 추가하여 미디어보기 내부에 간단한 링크를 추가 하고이 링크를 클릭하면 사용자 정의 작업을 추가 할 수 있습니까? 현재 요점은 매우 복잡하고 많은 사용자 지정 작업이 있습니다.
bueltge

불행히도, 나는 이것을 달성하는 더 간단한 방법을 찾지 못했습니다. 이 코드 는 하나의 기본 작업을 수행합니다. 왼쪽에 자체 컨텐츠보기, 도구 모음 및 컨트롤러가있는 사용자 정의 메뉴 항목을 추가하십시오. 이 모든 구성은 Backbone에 필요한 뷰와 컨트롤러를 구축하는 데 필요합니다. 그러나 더 간단한 해결책이 있다면 내 요점을 자유롭게 포크하십시오.
Fabien Quatravaux

예, 이것을 보았고 테스트 해 보았습니다. 그러나 기본 미디어 화면 내에서 버튼이나 링크 및 콜백 기능에 대해서만 요점을 만들면 좋을 것 같습니다.
bueltge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.