web-dev-qa-db-ja.com

WP_Customize_Background_Image_Controlはどのように機能しますか?

このコードを使用して、テーマカスタマイザに2番目の背景画像関数を追加しようとしています。

    // HTML Background Image
$wp_customize->add_setting(
    'html_background_image', 
    array(
        'capability'     => 'edit_theme_options',
));

$wp_customize->add_control( 
    new WP_Customize_Background_Image_Control(
        $wp_customize,
        'background_image', 
        array(
            'label'    => __('HTML Background Image', 'TEXTDOMAIN'),
            'section'  => 'background_image',
            'settings' => 'html_background_image',
)));

しかし、うまくいきません。私はここに何かが足りないのですか?

4
Daniel

このクラスに関する文書はほとんどありませんが、以下はWordPress core からの完全な例です(これは github です)。コアクラスのように$wp_customizeではなく、custom_registerコールバックの引数として取得した$thisオブジェクトを使用することに注意してください。私は検索をして、以下を置き換えます、そして、それは働きます。

        /* CORE COPY PASTE */
        //https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-customize-manager.php#L808

        /* Custom Background */

        $wp_customize->add_section( 'background_image', array(
            'title'          => __( 'Background Image' ),
            'theme_supports' => 'custom-background',
            'priority'       => 80,
        ) );

        $wp_customize->add_setting( 'background_image', array(
            'default'        => get_theme_support( 'custom-background', 'default-image' ),
            'theme_supports' => 'custom-background',
        ) );

        $wp_customize->add_setting( new WP_Customize_Background_Image_Setting( $wp_customize, 'background_image_thumb', array(
            'theme_supports' => 'custom-background',
        ) ) );

        $wp_customize->add_control( new WP_Customize_Background_Image_Control( $wp_customize ) );

        $wp_customize->add_setting( 'background_repeat', array(
            'default'        => 'repeat',
            'theme_supports' => 'custom-background',
        ) );

        $wp_customize->add_control( 'background_repeat', array(
            'label'      => __( 'Background Repeat' ),
            'section'    => 'background_image',
            'type'       => 'radio',
            'choices'    => array(
                'no-repeat'  => __('No Repeat'),
                'repeat'     => __('Tile'),
                'repeat-x'   => __('Tile Horizontally'),
                'repeat-y'   => __('Tile Vertically'),
            ),
        ) );

        $wp_customize->add_setting( 'background_position_x', array(
            'default'        => 'left',
            'theme_supports' => 'custom-background',
        ) );

        $wp_customize->add_control( 'background_position_x', array(
            'label'      => __( 'Background Position' ),
            'section'    => 'background_image',
            'type'       => 'radio',
            'choices'    => array(
                'left'       => __('Left'),
                'center'     => __('Center'),
                'right'      => __('Right'),
            ),
        ) );

        $wp_customize->add_setting( 'background_attachment', array(
            'default'        => 'fixed',
            'theme_supports' => 'custom-background',
        ) );

        $wp_customize->add_control( 'background_attachment', array(
            'label'      => __( 'Background Attachment' ),
            'section'    => 'background_image',
            'type'       => 'radio',
            'choices'    => array(
                'fixed'      => __('Fixed'),
                'scroll'     => __('Scroll'),
            ),
        ) );

カスタマイズできないようです。そして、証拠として、 WP_Customize_Image_Control への3番目の引数については、このコードを調べてください。

1
editor