새로운 WP_Customize API-어떻게 작동합니까?


16

새로운 "사용자 정의"기능을 통해 변경 한 경우 iframe 미리보기 문서 내의 다른 페이지를 탐색 할 때 변경 사항이 저장되지 않은 경우에도 변경 사항이 계속 적용됩니다.

WP가 임시 변경 사항을 어딘가에 저장하고있는 것으로 보입니다. 사이트가 "사용자 정의"모드로 표시되면 사이트에 적용됩니다.

그러나 사이트가 사용자 정의 모드임을 어떻게 알 수 있습니까? 링크 또는 이와 비슷한 것에 추가 된 쿼리 인수가 없기 때문에.

답변:


9

여기에 적용되는 몇 가지 비트가 있지만 짧은 코드는 customize-preview.js다음 과 같습니다.

this.body.on( 'click.preview', 'a', function( event ) {
    event.preventDefault();
    self.send( 'scroll', 0 );
    self.send( 'url', $(this).prop('href') );
});

event.preventDefault는 링크가 실제로 작동하지 못하게합니다. 다음 코드는 a) 페이지 맨 위로 스크롤하고 b) URL을 변경하라는 메시지를 위쪽으로 다시 보냅니다.

여기 메시징의 이유는 하나의 iframe이 없기 때문에 두 가지가 있기 때문입니다. 클릭 한 페이지는 실제로 사용자 정의 프로그램의 설정이 추가되어 ( POST실제로) 다른 iframe 안에로드 된 다음 페이드 효과가 사용되어 이전 페이지를 페이드 아웃하고 새 페이지를 매끄럽게 페이드 아웃합니다. 이렇게하면 새 페이지로 전환 될 때 화면이 하얗고 추악 해지고 깜박이지 않습니다.

또한 테마 코드에서 필터링 등을 수행 할 필요가 없으며 잠재적으로 페이지 모양을 수정할 수 있습니다. 따라서 테마는 컨텐츠의 내용을 크게 변경하지 않고있는 그대로 표시됩니다.

양식 제출이 전혀 작동하지 않도록하기 위해 비슷한 코드가 존재합니다 (아무것도하지 않습니다).

맞춤 설정 도구 값을 가로 채고 처리하기위한 필터는에 class-wp-customize-setting.php있습니다. 이 preview()함수는 들어오는 값을 처리하는 데 필요한 필터를 추가합니다 _preview_filter(). 함수는 해당 필터입니다. 단순히 get_option()또는 get_theme_mod()호출을 취하여 수정 옵션이있을 때 알림을 받고 수정 된 값을 대신 반환합니다.


1

커 스터 마이저 미리보기 창에서 링크를 클릭하면 생성 된 POST요청이 normal이 아니라 요청임을 알 수 GET있습니다. 맞춤 설정 도구 POST는 다음 양식 데이터를 사용하여 링크 클릭을 재정의하고 대신 클릭하는 것으로 보입니다 .

wp_customize: on
theme: themename
customized: {json-encoded-options-here}
customize_messenger_channel: preview-1

사용자 정의 필드는 데이터를 테마로 통과되는 위치 즉, 그래서 당신이 수정 한 옵션을 포함하는 것이다. 그런 다음 커 스터 마이저 코드는 요청시 테마 옵션을 가로 채 (필터를 통해 정확히 어느 것이 확실하지 않은지) 사용자 정의 매개 변수 의 값으로 바꿉니다 .


2
여기를보세요 : /wp-includes/class-wp-customize-manager.php...
brasofilo 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.