테마 사용자 정의 보일러 플레이트 – 조건부 옵션, 하위 테마 및 플러그인

  1. 1. 워드 프레스 테마 커 스터 마이저 소개
  2. 2. WordPress 테마 사용자 정의 프로그램과 상호 작용
  3. 삼. 워드 프레스 테마 커 스터 마이저
  4. 4. WordPress 테마 사용자 정의 보일러 플레이트 확장
  5. 5. 현재 읽고있는 내용 : 테마 사용자 정의 보일러 플레이트 – 조건부 옵션, 하위 테마 및 플러그인

지금까지 Theme Customizer Boilerplate 및 후크를 사용하여 테마 옵션을 처리하는 것이 얼마나 간단한 지 살펴 보았습니다. 아마도 기억 하시겠지만 가장 중요한 단계는 ‘thsp_cbp_options_array’ 필터 후크 및 테마에 사용하려는 옵션 배열 전달.


WordPress 액션 및 필터 후크 (플러그인 API)와 작동 방식에 대해 이미 잘 알고 있지만 여기서는 필터 후크를 예로 사용하여 간단히 살펴 보겠습니다. add_filter 함수를 사용하여 사용자 정의 함수를 정의하고 기존 필터에 연결할 수 있습니다.

add_filter ($ tag, $ function_to_add, $ priority, $ accepted_args);

우선 순위 논증에 초점을 맞추겠습니다. 기본값은 10이므로 다른 숫자를 사용하지 않으면 이것이 함수의 실행 우선 순위입니다. 함수가 빨리 실행되기 전에 숫자를 낮추십시오. 따라서 다음과 같이하면

// 첫 번째 메시지 추가
함수 my_theme_add_first_message ($ content) {
$ content. = '

첫 메시지

'; $ content를 반환; } add_filter ( 'the_content', 'my_theme_add_first_message', 1); // 두 번째 메시지 추가 함수 my_theme_add_second_message ($ content) { $ content. = '

두 번째 메시지

'; $ content를 반환; } add_filter ( 'the_content', 'my_theme_add_second_message', 2);

single.php 또는 다른 템플릿에서 the_content 함수를 호출하면 게시물 내용, 첫 번째 메시지, 두 번째 메시지가 표시됩니다. 이 코드 스 니펫의 순서 때문이 아니라 실행 우선 순위 매개 변수 때문입니다. 마치 언덕을 굴러 내려 오는 눈덩이 인 것처럼 갈고리를 생각하십시오..

이것이 테마 커 스터 마이저 보일러 플레이트에 어떻게 적용됩니까??

당신은 연결할 수 있습니다 ‘thsp_cbp_options_array’ 우선 순위 값이 1로 설정된 사용자 정의 함수 (예 : my_theme_options_array)를 사용하여 테마의 function.php 파일에서 ‘thsp_cbp_options_array’ 필터 훅은 이미 정의한 my_theme_options_array 함수 후에이를 수행합니다. 이 예제를 살펴보십시오.

함수 my_theme_options_array () {
// 도우미 기능을 사용하여 기본 필수 기능 얻기
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = 배열 ​​(
// 섹션 ID
'my_theme_new_section'=> 배열 (

'existing_section'=> 거짓,
'args'=> 배열 (
'title'=> __ ( '새 섹션', 'my_theme_textdomain'),
'우선 순위'=> 10
),
'fields'=> 배열 (
/ *
* 라디오 필드
* /
'my_radio_button'=> 배열 (
'setting_args'=> 배열 (
'default'=> 'option-2',
'type'=> '옵션',
'capability'=> $ thsp_cbp_capability,
'transport'=> '새로 고침',
),
'control_args'=> 배열 (
'label'=> __ ( '내 라디오 버튼', 'my_theme_textdomain'),
'type'=> 'radio', // 무선 제어
'choices'=> 배열 (
'option-1'=> 배열 (
'label'=> __ ( '옵션 1', 'my_theme_textdomain')
),
'option-2'=> 배열 (
'label'=> __ ( '옵션 2', 'my_theme_textdomain')
),
'option-3'=> 배열 (
'label'=> __ ( '옵션 3', 'my_theme_textdomain')
)
),
'우선 순위'=> 3
)
)
)
)
);

반환 $ 옵션;
}
add_filter ( 'thsp_cbp_options_array', 'my_theme_options_array', 1);

그러면 내 라디오 버튼이라는 하나의 필드가있는 테마 사용자 정의 프로그램에 새 섹션이 추가됩니다. 그런 다음 귀하 또는 다른 사람이 귀하의 테마에 대한 하위 테마를 개발하고 새 섹션을 유지하기로 결정하지만 내 라디오 버튼 대신 내 확인란을 사용하는 것이 좋습니다. 쉬운:

함수 my_child_theme_options_array ($ options) {
// 도우미 기능을 사용하여 기본 필수 기능 얻기
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* 이번에는 $ options 배열의 my_theme_new_section에있는 필드 만 편집합니다.
* /
$ options [ 'my_theme_new_section'] [ 'fields'] = 배열 ​​(
'my_checkbox_field'=> 배열 (
'setting_args'=> 배열 (
'default'=> true,
'type'=> '옵션',
'capability'=> $ thsp_cbp_capability,
'transport'=> '새로 고침',
),
'control_args'=> 배열 (
'label'=> __ ( '내 확인란', 'my_theme_textdomain'),
'type'=> 'checkbox', // 확인란 필드 제어
'우선 순위'=> 2
)
)
);

반환 $ 옵션;
}
add_filter ( 'thsp_cbp_options_array', 'my_child_theme_options_array', 2);

$ options 매개 변수를 my_theme_options_array에 전달하지 않고 my_child_theme_options_array 함수에서 전달 했습니까? 내가 처음 연결했을 때 ‘thsp_cbp_options_array’ 후크 Theme Customizer Boilerplate 샘플 옵션을 재정의하고 싶었습니다. 그런 다음 하위 테마에서 다시 연결했을 때 상위 테마의 옵션을 완전히 삭제하고 싶지 않고 약간만 수정하고 싶었습니다. 그렇기 때문에 전체 $ options 배열이 아니라 $ options [‘my_theme_new_section’] [‘fields’] 만 엉망입니다..

물론, 당신은 또한 연결할 수 있습니다 ‘thsp_cbp_options_array’ 테마에 플러그인 영역 기능을 추가하지 않고 플러그인이 원하는 기능을 수행하도록 설정했다고 가정 해 보겠습니다. 이제 특정 플러그인이 활성화 된 경우에만 일부 테마 사용자 정의 프로그램 옵션을 표시하려고합니다. 다시, 쉽게 :

함수 my_plugin_dependency_options_array ($ options) {
// 도우미 기능을 사용하여 기본 필수 기능 얻기
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* 'test-plugin.php'가 활성화 된 경우에만 my_plugin_dependency_section 추가
* /
if (is_plugin_active ( 'test-plugin / test-plugin.php')) {

$ options [ 'my_plugin_dependency_section'] = 배열 ​​(
'existing_section'=> 거짓,
'args'=> 배열 (
'title'=> __ ( '플러그인 종속성', 'my_theme_textdomain'),
'우선 순위'=> 10
),
'fields'=> 배열 (
/ *
* 텍스트 필드
* /
// 필드 ID
'new_text_field'=> 배열 (
'setting_args'=> 배열 (
'default'=> __ ( '', 'my_theme_textdomain'),
'type'=> '옵션',
'capability'=> $ thsp_cbp_capability,
'transport'=> '새로 고침',
),
'control_args'=> 배열 (
'label'=> __ ( '만 표시', 'my_theme_textdomain'),
'type'=> 'text', // 텍스트 필드 제어
'우선 순위'=> 5
)
),
)
);

}

반환 $ 옵션;
}
add_filter ( 'thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

개발하고 싶다 핵심 기능 플러그인 테마와 함께 사용해야합니다 (필요한대로)? 당신은 연결할 수 있습니다 ‘thsp_cbp_options_array’ 테마의 function.php 파일에서와 동일한 방식으로 플러그인 파일 중 하나에서.

옵션 미쳐 가지마

개발할 테마에 옵션을 추가 할 때마다 WordPress의 핵심 원칙 중 하나를 유지해야합니다. 결정이 아닌 옵션 — 명심하십시오. 주제가 가지고있는 모든 사소한 세부 사항에 대해 사용자 옵션을 쉽게 추가하고 시작할 수는 있지만 누구에게도 유리한 것은 아닙니다. 이 플러그인들, 특히 플러그인 종속 옵션을 추가하면 테마 옵션의 개수를 최대한 줄일 수 있기를 바랍니다..

결국, 테마에 모든 단일 요소의 모든 테두리 반경과 같은 옵션이있는 경우 테마가 아니며 WYSIWYG 편집기 일 수도 있고 아마도 위대한 테마는 아닙니다..

흰 셔츠를 사지 마십시오. 약간의 노력을 기울이면 식탁보로 바꿀 수 있고“흰 셔츠”를 좋아하기 때문에 사게됩니다. 워드 프레스 테마도 그와 같은 방식으로 콘텐츠를 특정 방식으로 제시해야하며 상상할 수있는 모든 방식으로 모든 것을 시도하지 않아야합니다. 테마 개발자 인 경우 사용자의 기대치가 사용자의 기대치인지 확인하는 것이 귀하의 임무입니다..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me