라이브 미리보기 사용자 정의 패널에 새로운 종류의 컨트롤을 추가하는 방법을 찾고 있습니다. 사용하여 패널에 새 섹션을 추가하는 방법을 보았습니다.
add_action( 'customize_register'...
구현하려는 컨트롤은 다른 종류의 색상 선택기입니다. 에서 이전 후 , 우리는 위젯을 추가하는 코어 클래스를 확장하는 방법을 볼 수 있지만, 내가 여기에 부족한 것은 범위에 내 목적을 가지고 저를있게 훅입니다 – WP_Customize_Palette_Control. 에서
여기에서 코드 의 시작 부분을 볼 수 있습니다 . 이 코드는 functions.php
내 테마 파일에 있습니다.
도움을 주셔서 감사합니다. 롭
코드를 방금 업데이트했습니다. 이제 require_once
수업을 가져와야합니다. 이제 PHP 오류가 없지만 새로운 컨트롤 HTML이 나타나지 않습니다.
<?php
require_once( ABSPATH . WPINC . '/class-wp-customize-setting.php' );
require_once( ABSPATH . WPINC . '/class-wp-customize-section.php' );
require_once( ABSPATH . WPINC . '/class-wp-customize-control.php' );
class WP_Customize_Palette_Control extends WP_Customize_Image_Control {
public $type = 'palette';
public $removed = '';
public $context;
public function enqueue() {
//wp_enqueue_script( 'wp-plupload' );
}
public function to_json() {
parent::to_json();
$this->json['removed'] = $this->removed;
if ( $this->context )
$this->json['context'] = $this->context;
}
public function render_content() {
?>
<label>
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
<div>
<a href="#" class="button-secondary upload"><?php _e( 'Upload' ); ?></a>
<a href="#" class="remove"><?php _e( 'Remove' ); ?></a>
</div>
</label>
<?php
}
}
//new WP_Customize_Palette_Control();
//add_action('customize_controls_init', 'WP_Customize_Palette_Control');
// add an option to the customize panel
function sci_customize_controls_init($wp_customize) {
$wp_customize->add_section( 'themename_color_scheme', array(
'title' => __( 'Color Scheme', 'themename' ),
'priority' => 35,
) );
$wp_customize->add_setting( 'themename_theme_options[color_scheme]', array(
'default' => 'some-default-value',
'type' => 'option',
'capability' => 'edit_theme_options',
) );
$wp_customize->add_control( 'themename_color_scheme', array(
'label' => __( 'Color Scheme', 'themename' ),
'section' => 'themename_color_scheme',
'settings' => 'themename_theme_options[color_scheme]',
'type' => 'palette',
'choices' => array(
'value1' => 'Choice 1',
'value2' => 'Choice 2',
'value3' => 'Choice 3',
),
) );
}
add_action( 'customize_register', 'sci_customize_controls_init' );
답변
사용 예 및 클래스
내 현재 테마에서 이것을 사용하는 방법을 볼 수 있습니다. 또한 클래스를 사용할 수 있습니다. Github 에서이 클래스 를 참조하십시오 functions.php
.
시작 및 초기화
customize_register
후크 를 통해 테마 사용자 정의 프로그램에 대한 사용자 정의 설정을 등록 할 수 있습니다 .
add_action( 'customize_register', 'themedemo_customize' );
function themedemo_customize($wp_customize) {
$wp_customize->add_section( 'themedemo_demo_settings', array(
'title' => 'Demonstration Stuff',
'priority' => 35,
) );
$wp_customize->add_setting( 'some_setting', array(
'default' => 'default_value',
) );
$wp_customize->add_control( 'some_setting', array(
'label' => 'Text Setting',
'section' => 'themedemo_demo_settings',
'type' => 'text',
) );
$wp_customize->add_setting( 'some_other_setting', array(
'default' => '#000000',
) );
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'some_other_setting', array(
'label' => 'Color Setting',
'section' => 'themedemo_demo_settings',
'settings' => 'some_other_setting',
) ) );
}
테마 사용법 :
아래 예와 같이 ↓를 사용하십시오.
echo 'some_setting => ' .get_theme_mod( 'some_setting', 'default_value' )."\n";
echo 'some_other_setting => ' .get_theme_mod( 'some_other_setting', '#000000' )."\n";
echo 'non_existent_setting => '.get_theme_mod( 'non_existent_setting', 'default_value' )."\n";
조정
컨트롤을 변경할 수도 있습니다.
$wp_customize->add_control( 'themename_color_scheme', array(
'label' => __( 'Color Scheme', 'themename' ),
'section' => 'themename_color_scheme',
'settings' => 'themename_theme_options[color_scheme]',
'type' => 'radio',
'choices' => array(
'value1' => 'Choice 1',
'value2' => 'Choice 2',
'value3' => 'Choice 3',
),
) );
기본 제어 유형은 text
입니다. 텍스트 상자 컨트롤을 만듭니다. 또 다른 컨트롤 유형은 dropdown-pages
입니다. WordPress 페이지의 드롭 다운 목록을 만듭니다.
그러나 이것이 전부는 아닙니다. 실제로 몇 가지가 더 있지만 사용자 정의이기 때문에 다르게 선언됩니다.
이것은 OOP를 사용합니다.
$wp_customize->add_control(
new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
'label' => __( 'Link Color', 'themename' ),
'section' => 'themename_color_scheme',
'settings' => 'themename_theme_options[link_color]',
) )
);
추가 사항 :
WP_Customize_Upload_Control
– 파일 업로드 상자를 제공합니다. 그러나 직접 사용하지 않을 수도 있습니다. 다음과 같이 다른 용도로 확장하고 싶을 것입니다.
WP_Customize_Image_Control
– 이미지 선택기와 업 로더 상자를 제공합니다. 업로드 컨트롤러를 확장합니다. 사용자가 배경 이미지가 될 새 파일을 업로드 할 수있는 사용자 정의 배경 부분에서 실제로 볼 수 있습니다.WP_Customize_Header_Image_Control
– 헤더 부분의 크기를 조정 조치,이 특수 처리 및 디스플레이의 비트를 필요로하기 때문에, 그래서이WP_Customize_Header_Image_Control
확장WP_Customize_Image_Control
그 기능을 추가합니다. 사용자 정의 헤더 부분에서 실제로 볼 수 있으며 사용자는 헤더 이미지가 될 새 파일을 업로드 할 수 있습니다.
” 블로그 테마”에 대한 자세한 내용은 ottos 블로그를 참조하십시오 .
2012 년 11 월 6 일 업데이트
읽기 가능성과 더 많은 예제를위한 라이브 예제 는 소스 및 doku에 대한 공개 저장소 를 참조하십시오 .
2013 년 1 월 15 일 업데이트
우리는 github에서 사용자 정의 클래스 를 사용하여 쉽고 빠르게 사용할 수있는 저장소를 만들었습니다 . 어쩌면 당신은 그것을 사용하거나 아이디어와 솔루션으로 발전 할 수 있습니다.
답변
좋아, 여기에 방법이 있습니다. 제어 클래스를 하나 이상의 새 파일로 분리하십시오.
customize_register에 함수 또는 메소드가 연결되어 있습니까? 해당 기능 또는 방법에서 사용자 정의 컨트롤을 추가하기 직전에 새 파일을 한 번만 요구하십시오. 그러면 PHP는 클래스 재정의에 대해 불평하지 않습니다.
참고 : 이것은 즉시 작동하지는 않지만 트릭을 보여줍니다.
add_action('customize_register', array('myAddControl', 'customize_register') );
class myAddControl{
public function customize_register()
{
global $wp_customize;
//This will do the trick
require_once(dirname(__FILE__).'/class-gctfw-theme-control.php');
$wp_customize->add_section( 'gctfw_switch_theme' , array(
'title' => 'Switch theme',
'priority' => 25,
) );
$wp_customize->add_setting( 'gctfw_select_theme' , array(
'default' => $wp_customize->theme()->get('Name'),
'transport' => 'refresh',
'capabilities' => 'manage_options'
) );
$myControl = new gctfw_Theme_Control( $wp_customize, 'gctfw_select_theme', array(
'label' => __( 'Select theme', 'mytheme' ),
'section' => 'gctfw_switch_theme',
'settings' => 'gctfw_select_theme',
) ) ;
$wp_customize->add_control( $myControl );
}
}//class
답변
당신은 수업을 사용하지 않습니다. 클래스의 새 인스턴스를 add_control 메소드에 전달하십시오.
$control_args = array(
// your args here
);
$my_control = new WP_Customize_Palette_Control(
$wp_customize, 'themename_color_scheme', $control_args);
$wp_customize->add_control($my_control);
또한 WP는 설정의 옵션 이름이 배열의 일부라는 것을 알고 있다고 생각하지 않습니다. 아마도 themename_theme_options_color_scheme
대신 대신 하는 것이 좋습니다 themename_theme_options[color_scheme]
.
확장 클래스는 이미지 업로드 컨트롤에 속합니다. 색상 선택기를 만드는 경우 WP_Customize_Control 클래스를 확장해야합니다 .
답변
완전성을 위해 : 테마 사용자 정의 프로그램에 숫자 필드를 추가하는 방법에 대한 예.
class Customize_Number_Control extends WP_Customize_Control
{
public $type = 'number';
public function render_content()
{
?>
<label>
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
<input type="number" size="2" step="1" min="0" value="<?php echo esc_attr( $this->value() ); ?>" />
</label>
<?php
}
}
답변
WP_Customize 전에 백 슬래시를 추가해야한다고 생각합니다. 그래서 그것은
class WP_Customize_Palette_Control extends \WP_Customize_Image_Control
백 슬래시 는 WP_Customize_Image_Control이 동일한 네임 스페이스에 있지 않다고 가정 했기 때문에
도움이되었는지 알려주세요