在后台设置了一个站点logo图片地址的参数,考虑到后期可能更换,有手动输入的需求,所以准备设计成仅输入文件名称,指定文件的文件夹,当用户输入后由系统组装文件夹地址与图片名称,从而得到完整的图片地址。
虽然知道add_setting支持回调,真正使用的时候将这个sanitize_callback误放到了add_control里,所以一直没有获得正确的返回。
文档与回调函数
以下是add_setting函数的文档地址:
https://developer.wordpress.org/reference/classes/wp_customize_manager/add_setting/
- validate_callback: 设置值的服务器端验证回调;
- sanitize_callback: 定义一个函数以检验或过滤控件传回的原始值;
- sanitize_js_callback: 回调将Customize PHP设置值转换为JSON可序列化的值。
实际应用中的尝试
回调函数本意是对用户的输入值采取谨慎的态度,定义一些限制或过滤条件以确保存入值安全。
$wp_customize->add_setting('august_options[bannerimg]',array(
'transport' => 'postMessage',
'type' => 'option',
'sanitize_callback' => 'august_add_iconpath',
));
$wp_customize->add_control( 'august_options[bannerimg]', array(
'label' => 'Logo图片',
'type' => 'text',
'section' => 'august_global',
'description' => '<i>主Logo采用图片或图文形式则必须填写该项,仅填写文件名即可,Logo图片请放入主题<span style="color:darkred;"><b> icons </b></span>文件夹内。</i>',
));
暂时对安全输入没有什么概念,先满足自己的需求,简化输入,定义了一个组装链接的回调函数:
function august_add_iconpath($input){
$input=get_template_directory_uri().'/icons/'.$input;
return $input;
}