WP Customize JS Methods를 확장 할 수 있습니까?


9

에서 익명 api객체 의 메소드를 확장 할 수 있는지 궁금합니다 wp-admin/js/customize-control.js. 이 메서드 중 하나를 내 사용자 지정 논리로 덮어 써야하지만 즉시 호출 된 함수 식으로 래핑되어 있기 때문에 불가능한 것 같습니다.

/* globals _wpCustomizeHeader, _wpMediaViewsL10n */
(function( exports, $ ){
// code
})( wp, jQuery );

내가 볼 수있는 한 익명으로 실행되고에서 사용할 수 없기 때문에 창 개체에서 프로토 타입을 확장 할 수 없습니다 window.wp.customize. 그런 일이 가능하다면 어떤 아이디어가 있습니까? .toggle () 메소드 문서 / 설명에서 이것을 재정의하는 것에 대한 언급이 있습니다 : https://github.com/WordPress/WordPress/blob/master/wp-admin/js/customize-controls.js#L110 . 단순히 전체 JS 파일을 포크하여 WP 버전을 대기열에 넣고 자신을 대기열에 넣거나 의미가 있거나 다른 것이 있는지 확실하지 않습니다.

그것은 가능 해야하는 것처럼 보이지만 wp.customize.{method}.extend({ foo: // replace method foo here })공공 기본 클래스 / 객체에만 적용됩니다.wp-admin/js/customize-control.js


3
api익명 이지만 wp.customize전 세계에서 액세스 할 수 있는 동의어 일뿐입니다 (3 행 참조). 그러나 컨트롤에 사용 된 또 다른 개체 모델이 ready함수를 호출하는 것처럼 보이 initialize므로 메서드를 덮어 쓸 수있는 기회를 얻지 못할 수도 있습니다 (즉, 항상 너무 늦음).
bonger

이론적으로, 그것은 의미가 있습니다-제안은 감사합니다. 필자의 경우이 접근 방식이 매우 해킹되어 사용 사례에 적합한 다른 솔루션을 생각해 냈습니다. 그러나 작업 코드에 대한 답변은 유스 케이스에 대한 다른 옵션이없는 사람에게는 여전히 유용 할 수 있습니다. 내가 계획했던 성능은 어쨌든 끔찍했을 것입니다.
Brian

1
저는 JS 전문가가 아닙니다. 그러나 항상 내 확장을 새로 고치는 사용자 정의 스크립트에 작은 테마가 추가되었습니다. wp.customize이 객체로 작업 하고 기능을 추가합니다. 소스 예제는 여기를 참조하십시오 -github.com/bueltge/Documentation/blob/master/js/…
bueltge

답변:


5

귀하의 질문에 대한 작은 의견을 강화하겠습니다. 그러나 다시 힌트; 저는 JS 전문가가 아닙니다. 다음 소스, 힌트는 내 샌드 박스 와 같은 다른 검사, 예를 들어 Customizer를 가지고 놀 때만 사용되었습니다 .

wp.customize

WP 테마 사용자 정의 인터페이스 이해는 wp.customize Javascript 객체 이해를 중심으로합니다. wp.customize목적은 중요하고 당신은 처음에 설정해야합니다.

라이브 예

다음의 작은 예는 이것을 보여줍니다. 처음에는 var api를 사용자 정의 프로그램의 객체로 설정했습니다. 그런 다음 사용자 정의 필드를로 설정 api하고 작은 jQuery 소스로이를 향상시켜 실시간 미리보기 결과를 새로 고칩니다.

( function( $ ) {
    var api = wp.customize;

    // Site title and description.
    api( 'blogname', function( value ) {
        value.bind( function( to ) {
            $( '#header h1 a, #footer a.site-name' ).html( to );
        } );
    } );

    api( 'blogdescription', function( value ) {
        value.bind( function( to ) {
            $( '#header p.site-description' ).html( to );
        } );
    } );

} )( jQuery );

설정 및 컨트롤

제어 개체가 저장 wp.customize.control되고 설정 개체가에 저장됩니다 wp.customize. 가치 클래스에는 많은 기능이 있으며 도움이 될 수 있습니다.

  • instance (id) – 지정된 id를 가진 컬렉션에서 객체를 가져옵니다.
  • has (id) – 컬렉션에 지정된 id를 가진 객체가 포함되어 있으면 true를, 그렇지 않으면 false를 반환합니다.
  • add (id, value) – 지정된 id 및 value를 사용하여 컬렉션에 객체를 추가합니다.
  • remove (id) – 컬렉션에서 객체를 제거합니다.
  • create (id) – 기본 생성자를 사용하여 새 객체를 만들고 컬렉션에 추가합니다.
  • each (callback, context) – 컬렉션 내의 요소를 반복합니다.

맞춤 설정

이 기능을 통해 사용자 정의 설정을 향상시킬 수 있습니다.

var api = wp.customize,
    mysetting = api.instance( 'my_custom_setting' );

배열에도 사용 가능

var api = wp.customize,
    mysetting = api.instance( 'my_custom_settings[my_custom_setting_field]' );

가져 오기

콘솔에서 결과를 확인하십시오.

console.log( api.instance( 'my_custom_settings[my_custom_setting_field]' ).get() );

세트

기능을 통해 설정 값을 변경할 수도 있습니다 set.

api.instance( 'my_custom_settings[my_custom_setting_field]' ).set( 'my new value' ) );

컨트롤을 객체로 사용

console.log( api.control.instance( 'my_custom_setting_field' ) );

유용한 소스

  • wp-admin / js / customize-controls.js
  • wp-includes / js / customize-preview.js
  • wp-includes / js / customize-base.js
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.