web-dev-qa-db-ja.com

カスタマイザで依存フィールドを作成する方法

カスタマイザに依存フィールドを持たせようとしています。 1つのフィールドはチェックボックスEnable Custom Excerpt Lengthです。もう1つはテキストフィールドCustom Excerpt Lengthです。 active_callbackを使ってコンテキストフィールドを実装したいです。私はこの記事をフォローしています。 https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/

コールバック関数で制御値をチェックするのに問題があります。

  $wp_customize->add_setting( 'blueplanet_options[theme_enable_custom_excerpt]',
     array(
        'default'    => false,
        'capability' => 'edit_theme_options',
     )
  );
  $wp_customize->add_control(
      'theme_enable_custom_excerpt',
      array(
        'label'       => 'Enable Custom Excerpt Length',
        'section'     => 'admin_section',
        'settings'    => 'blueplanet_options[theme_enable_custom_excerpt]',
        'type'        => 'checkbox',
      )
    );
  $wp_customize->add_setting( 'blueplanet_options[theme_custom_excerpt_length]',
     array(
        'default'              => 20,
        'capability'           => 'edit_theme_options',
     )
  );
  $wp_customize->add_control(
      'theme_custom_excerpt_length',
      array(
        'label'           => 'Custom Excerpt Length',
        'section'         => 'admin_section',
        'settings'        => 'blueplanet_options[theme_custom_excerpt_length]',
        'type'            => 'text',
        'active_callback' => 'flag_is_custom_excerpt_enabled',
      )
    );

  // Callback function
  function flag_is_custom_excerpt_enabled(){
    // how to check if `theme_enable_custom_excerpt` is enabled or disabled
  }
1
Nilambar

あなたが通常どこでもするようにあなたはあなたのテーマのmodの値を取得してチェックすることができます。

このコードはテスト済みで動作しています(cyb_customizer()内のコードは、質問に投稿したコードとまったく同じです。add_section部分のみが追加されています)。

function flag_is_custom_excerpt_enabled(){
    $blueplanet_options = get_theme_mod( 'blueplanet_options');
    if( empty( $blueplanet_options['theme_enable_custom_excerpt'] ) ) {
        return false;
    }
    return true;
}

add_action( 'customize_register', 'cyb_customizer' );
function cyb_customizer( $wp_customize ) {


    $wp_customize->add_section(
        'admin_section',
        array(
            'title' => 'Admin section',
            'description' => 'Admin section',
            'priority' => 0,            
        )
    );

    $wp_customize->add_setting( 'blueplanet_options[theme_enable_custom_excerpt]',
        array(
            'default'    => false,
            'capability' => 'edit_theme_options',
         )
      );
      $wp_customize->add_control(
          'theme_enable_custom_excerpt',
          array(
            'label'       => 'Enable Custom Excerpt Length',
            'section'     => 'admin_section',
            'settings'    => 'blueplanet_options[theme_enable_custom_excerpt]',
            'type'        => 'checkbox',
          )
       );
      $wp_customize->add_setting( 'blueplanet_options[theme_custom_excerpt_length]',
         array(
            'default'              => 20,
            'capability'           => 'edit_theme_options',
         )
      );
      $wp_customize->add_control(
          'theme_custom_excerpt_length',
          array(
            'label'           => 'Custom Excerpt Length',
            'section'         => 'admin_section',
            'settings'        => 'blueplanet_options[theme_custom_excerpt_length]',
            'type'            => 'text',
            'active_callback' => 'flag_is_custom_excerpt_enabled',
          )
        );

    }
1
cybmeta