我的定制器的设置没有设置为默认设置,需要在设置之前单击控件的“默认”按钮

时间:2015-05-21 作者:5ervant - techintel.github.io

以下是我的示例customizer的设置和控件:

$wp_customize->add_setting( \'themename_img\', array(
    \'type\'           => \'theme_mod\',
    \'default\'        => get_template_directory_uri() . \'/images/\' . rawurlencode( get_bloginfo( \'name\' ) ) . \'.gif\',
    \'capability\'     => \'edit_theme_options\',
    \'transport\'      => \'refresh\'
));
$wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, \'img\', array(
    \'label\'      => __( \'Image\', \'theme-slug\' ),
    \'section\'    => \'section_id\',
    \'settings\'   => \'themename_img\',
)));
图像位于http://localhost/wordpress/wp-content/themes/theme-name/images/\' . rawurlencode( get_bloginfo( \'name\' ) ) . \'.gif\' 已存在。。但是为什么控件和设置没有设置为默认值,需要单击;“默认”按钮,然后再将其设置为默认值?

但是当我改变\'themename_img\'s默认自\'default\' => get_template_directory_uri() . \'/images/\' . rawurlencode( get_bloginfo( \'name\' ) ) . \'.gif\'\'default\' => \'image.gif\' 即使路径位置无效,设置的默认值也将自动设置为默认值。如何将自定义程序的设置和控件最初设置为get_template_directory_uri() . \'/images/\' . rawurlencode( get_bloginfo( \'name\' ) ) . \'.gif\' 住址有其他选择吗?

更新:

调试后rawurlencode( get_bloginfo( \'name\' ) ) 代码是可疑的,这就是为什么我将其包含在我的示例中!

1 个回复
最合适的回答,由SO网友:5ervant - techintel.github.io 整理而成

正如我所评论的rawurlencode() 原因是WordPress有很多限制。我发现,如果你有% 百分号(在我的例子中,由rawurlencode())在您的\'default\' => $value.

其中一个解决方案是,使用base64_encode():

$encode = get_template_directory_uri().\'/images/\'.get_bloginfo(\'name\').\'.gif\';
...
    \'default\' => $encode,
...
然后用base64_decode() 使用前:

$decode = base64_decode(get_theme_mod(\'themename_img\'));

结束