我想创建一个条件,以便通过从收音机中选择一个选项,显示特定于该选项的设置。
我搜索了很多关于这个主题的信息,但没有找到任何有用的东西,所以我写了下面的简单代码。
这段代码几乎可以工作,也就是说,通过选择一个收音机选项并刷新整个屏幕,将显示所需选项的设置的实时预览。
是否有一种方法可以在选择收音机选项后立即显示该选项的设置,这样我就不必在每次选择收音机选项时刷新完整的实时预览屏幕?
我在functions.php
文件中放入的代码:
function customize_pro($wp_customize){
$wp_customize->add_section('Select_txt_radio', array(
'title' => esc_html__('Show or hide settings', 'section'),
'priority' => 5,
));
// Create a radio controller
$wp_customize->add_setting( 'setting_radio_main',
array(
'type' => 'theme_mod',
'transport' => 'refresh',
)
);
$wp_customize->add_control('setting_radio_main',
array(
'type' => 'radio',
'label' => esc_html__('Available options'),
'description' => esc_html__('By selecting each option, the corresponding settings will appear'),
'section' => 'Select_txt_radio',
'priority' => 1,
'choices' => array(
'ption1' => 'ption A',
'ption2' => 'ption B',
'ption3' => 'ption C',
),
)
);
// By selecting any option, the following terms apply
$select_control = get_theme_mod( 'setting_radio_main' ); // Radio configuration ID
if( $select_control === 'ption1' ) {
// Display the following settings if you select the first option
$wp_customize->add_setting( 'setting_radio_ption1',
array(
'type' => 'theme_mod',
'transport' => 'refresh',
)
);
$wp_customize->add_control( 'setting_radio_ption1',
array(
'section' => 'Select_txt_radio',
'type' => 'text',
'input_attrs' => array(
'placeholder' => __( 'ption1' ),
),
)
);
return;
} elseif( $select_control === 'ption2' ) {
// Display the following settings if you choose the second option
$wp_customize->add_setting( 'setting_radio_ption2',
array(
'type' => 'theme_mod',
'transport' => 'refresh',
)
);
$wp_customize->add_control( 'setting_radio_ption2',
array(
'section' => 'Select_txt_radio',
'type' => 'text',
'input_attrs' => array(
'placeholder' => __( 'ption2' ),
),
)
);
return;
} elseif( $select_control === 'ption3' ) {
// Display the following settings if you choose the third option
$wp_customize->add_setting( 'setting_radio_ption3',
array(
'type' => 'theme_mod',
'transport' => 'refresh',
)
);
$wp_customize->add_control( 'setting_radio_ption3',
array(
'section' => 'Select_txt_radio',
'type' => 'text',
'input_attrs' => array(
'placeholder' => __( 'ption3' ),
),
)
);
return;
} else{
// Display the following settings if no option is active
$wp_customize->add_setting( 'setting_radio_ptionNon',
array(
'type' => 'theme_mod',
'transport' => 'refresh',
)
);
$wp_customize->add_control( 'setting_radio_ptionNon',
array(
'section' => 'Select_txt_radio',
'type' => 'text',
'input_attrs' => array(
'placeholder' => __( 'default' ),
),
)
);
return;
}
}
add_action( 'customize_register', 'customize_pro' );
字符串
编辑:
我知道页面将被刷新,代码为'transport' => 'refresh'
。
但是当页面刷新时,所需选项的设置不会出现。
选择一个选项后,我必须单击自定义中的发布按钮。然后通过完整的浏览器刷新实时预览页面(通过更新其地址刷新页面);在这种情况下,我可以看到该选项的设置。
我正在寻找一个解决方案,以便当选择一个选项时,其设置将立即出现,而无需单击发布按钮并通过浏览器刷新页面。
我写的代码有一些错误,我需要帮助修复,这段代码只是一个粗略的想法。
2条答案
按热度按时间zpqajqem1#
在添加每个条件设置时,您需要使用
active_callback
参数。此外,不确定ption
是否是代码示例中option
的拼写错误。字符串
hgb9j2n62#
我能够通过搜索互联网和使用以下教程解决我的问题:
What’s new with the Customizer
完整的编辑代码:
**注意:**我下面写的代码并不完全是我在上面的问题中写的代码。此代码已经过编辑,测试和工作。
字符串
我希望这个答案对正在寻找解决这个问题的方法的朋友有用。