如何正确删除和重命名主题定制器中的自定义设置/部分/控件?

时间:2017-07-14 作者:He Wang

我已经为我的客户创建了一个自定义自定义程序部分,以使用以下代码段设置他们的联系电话号码:

function header_ctas ( $wp_customize ) {

  $wp_customize->add_section( \'cta_section\' , array(
    \'title\'         => \'Call to action buttons\',
    \'description\'   => \'Configure the cta buttons in here for mobile screen\',
    \'priority\'      => 30,
  ) );

  $wp_customize->add_setting( \'cta_settings\' );

  $wp_customize->add_control( \'phone_control\' , array(
    \'label\'         => \'Phone number\',
    \'description\'   => \'enter the phone number here, it will appear in mobile screen\',
    \'section\'       => \'cta_section\',
    \'settings\'      => \'cta_settings\',
    \'type\'          => \'text\',
  ) );
}
add_action( \'customize_register\', \'header_ctas\' );
我可以通过以下方式检索电话号码的值get_theme_mod(\'cta_settings\').

之后,我想正确命名设置,所以我只需更改cta_settingsphone_settings, 当我试图通过get_theme_mod(\'phone_settings\'), 它什么也不返回。事实证明,真正的设置名称仍然是cta_settings, 删除整个函数后,值仍然存在。

我也试着使用$wp_customize->remove_control("phone_control");$wp_customize->remove_section( \'cta_section\' );, 它基本上会删除节,但不会删除值。

我还试图找出如何取消自定义主题定制器的注册,并找到该值在数据库中的位置,但运气不好:(

有人能给我指出一个正确的方向来深入挖掘吗?谢谢

1 个回复
最合适的回答,由SO网友:Weston Ruter 整理而成

将值存储在数据库中的cta_settings 主题模式。如果要重命名设置,则需要移动存储在数据库中的主题mod数据。例如:

if ( get_theme_mod( \'cta_settings\' ) ) {
    set_theme_mod( \'phone_settings\', get_theme_mod( \'cta_settings\' ) );
    remove_theme_mod( \'cta_settings\' );
}

结束

相关推荐