web-dev-qa-db-ja.com

テーマカスタマイザコントロールへの説明の追加

$wp_customize->add_controlに説明を追加する方法を教えてください。私は本当にいくつかのコントロールに簡単な説明を含める必要があることに気付きましたが、それが可能であるようには見えません。

$wp_customize->add_sectionに説明を追加できることに気付きましたが、それは単なるツールヒントです。

これは理想的には私がやりたいことですが、それを出力する方法とこれが可能であるかどうか不確実です:

$wp_customize->add_control( 'theme_options[some_option_name]', array(
    'label'   => 'This Is Some Option',
    'section' => 'theme_name_section',
    'type'    => 'text',
    'description' => 'Wish this existed', // this isn't possible
));
6
Andrew

これはあなたが使いたいコントロールを拡張することによってそれをする一つの方法です。

以下は、テキストコントロールを拡張し、スクリーンショットに表示されているような追加の説明を追加した例です。

enter image description here

function mytheme_customizer( $wp_customize ) {
    class Custom_Text_Control extends WP_Customize_Control {
        public $type = 'customtext';
        public $extra = ''; // we add this for the extra description
        public function render_content() {
        ?>
        <label>
            <span><?php echo esc_html( $this->extra ); ?></span>
            <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
            <input type="text" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?> />
        </label>
        <?php
        }
    }
    $wp_customize->add_section('customtext_section', array(
            'title'=>__('My Custom Text','mytheme'),
        )
    );     
    $wp_customize->add_setting('mytheme_options[customtext]', array(
            'default' => '',
            'type' => 'customtext_control',
            'capability' => 'edit_theme_options',
            'transport' => 'refresh',
        )
    );
    $wp_customize->add_control( new Custom_Text_Control( $wp_customize, 'customtext_control', array(
        'label' => 'My custom Text Setting',
        'section' => 'customtext_section',
        'settings' => 'mytheme_options[customtext]',
        'extra' =>'Here is my extra description text ...'
        ) ) 
    );
}
add_action( 'customize_register', 'mytheme_customizer' ,10,1);

WP_Customize_Controlクラスのソースをチェックアウトすると便利です。

https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-customize-control.php

お役に立てれば。

8
birgire

WordPress 4.0のリリース後にこの問題に遭遇した人のために、カスタムコントロールはもう必要ありません。この機能はWordPressに直接組み込まれています: https://core.trac.wordpress.org/ticket/27981

7

Description引数は、制御下に説明を追加します。追加のヘッダーなどのように、コントロールのタイトルの上に何かを追加したい場合は、customize_render_control_{id}アクションを使用できます。たとえば、IDがhi_shawnのコントロールの上にボタンを追加する場合は、次のようにします。

add_action( 'customize_render_control_hi_shawn', function(){
    printf( '<a href="%s">%s</a>', 'http://hiroy.club', __( 'Hi Shawn', 'text-domain' ) );
});
2
JPollock