以下是我的示例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\' ) )
代码是可疑的,这就是为什么我将其包含在我的示例中!
最合适的回答,由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\'));