미디어 모달 박스에 필터 기능 추가


12

미디어 모달을 확장하려고하는데 관련 문서 / 자습서를 찾을 수 없습니다. 나도 백본의 주인이 아니야 ;-)

첨부 파일 게시물 유형에 첨부 된 각 분류 체계에 대해 선택 상자를 추가하고 싶습니다. 현재 하나의 선택 상자 만 표시됩니다.

이것이 제가 생각 해낸 것입니다. 기본 툴바를 대체한다는 점을 제외하고는 훌륭하게 작동합니다.


암호

/**
 * Extended Filters dropdown with taxonomy term selection values
 */
jQuery.each(mediaTaxonomies,function(key,label){

    media.view.AttachmentFilters[key] = media.view.AttachmentFilters.extend({
        className: key,

        createFilters: function() {
            var filters = {};

            _.each( mediaTerms[key] || {}, function( term ) {

                var query = {};

                query[key] = {
                    taxonomy: key,
                    term_id: parseInt( term.id, 10 ),
                    term_slug: term.slug
                };

                filters[ term.slug ] = {
                    text: term.label,
                    props: query
                };
            });

            this.filters = filters;
        }

    });

    /**
     * Replace the media-toolbar with our own
     */
    media.view.AttachmentsBrowser = media.view.AttachmentsBrowser.extend({
        createToolbar: function() {

            media.model.Query.defaultArgs.filterSource = 'filter-media-taxonomies';

            this.toolbar = new media.view.Toolbar({
                controller: this.controller
            });

            this.views.add( this.toolbar );

            this.toolbar.set( 'terms', new media.view.AttachmentFilters[key]({
                controller: this.controller,
                model:      this.collection.props,
                priority:   -80
            }).render() );
        }
    });

});

기발한

여기에 이미지 설명을 입력하십시오


내 결과

여기에 이미지 설명을 입력하십시오


내가 원하는 것

여기에 이미지 설명을 입력하십시오


전체 코드

https://github.com/Horttcore/Media-Taxonomies

답변:


8

Backbone.js와 WP의 멋진 세계 (아무 것도 아는 바가 없습니다).

문제는 당신이 같은 기본값을 호출하고 media.view있다고 생각합니다. 대신 새로운 것을 초기화해야한다고 생각합니다.

예를 들면 다음과 같습니다.

/**
 * Replace the media-toolbar with our own
 */
    var myDrop = media.view.AttachmentsBrowser;

    media.view.AttachmentsBrowser = media.view.AttachmentsBrowser.extend({
    createToolbar: function() {

        media.model.Query.defaultArgs.filterSource = 'filter-media-taxonomies';

        myDrop.prototype.createToolbar.apply(this,arguments);

        this.toolbar.set( key, new media.view.AttachmentFilters[key]({
            controller: this.controller,
            model:      this.collection.props,
            priority:   -80
        }).render() );
    }
});

아래와 같은 것을 줄 것입니다 (나는 철저한 오류 검사를하지 않았지만 작동합니다).


여기에 이미지 설명을 입력하십시오


또한 이와 media.view.AttachmentFilters관련 하여이 작업을 수행하는 것도 고려해야 합니다 window.wp.media;.


좋아 고마워! 모든 새로운 WP 버전에 더 통합되는 것처럼 보이기 때문에 backbone.js에 대해 곧 읽어야합니다.
— Horttcore

1
이 플러그인을 만들어서 답변하기 쉽도록 도와 주셔서 감사합니다.) 사실 WPSE 질문에 대한 github 플러그인을 만들도록 영감을주었습니다.
— Wyck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.