我注意到WP\\u Customize\\u Image\\u控件确实返回文件名而不是ID,但这仅适用于图像。
那是因为类扩展了WP_Customize_Upload_Control
其类型设置为upload
:
class WP_Customize_Upload_Control extends WP_Customize_Media_Control {
public $type = \'upload\';
public $mime_type = \'\';
...
}
对于使用上述类的定制器控制器,JavaScript控制器是
wp.customize.UploadControl
它保存文件URL而不是附件ID。
因此,如果要保存URL而不是ID,则可以:
扩展WP_Customize_Upload_Control
:
class myUploadControl extends WP_Customize_Upload_Control {
...
}
或在添加控件时,传递
WP_Customize_Upload_Control
:
$wp_customize->add_control( new WP_Customize_Upload_Control( $wp_customize, \'your_setting\', array(
\'label\' => \'Label Here\',
\'section\' => \'section_id\',
...
) ) );
注:
$wp_customize
是的实例
WP_Customize_Manager
班
但是如果您必须保存ID,但需要在JavaScript中动态获取URL,那么您可以使用wp.apiRequest()
向发出API请求/wp/v2/media/<media ID>
:
wp.customize( \'your_setting\', function( value ) {
value.bind( function( to ) {
wp.apiRequest( { path: \'/wp/v2/media/\' + to } )
.then( function ( s ) {
console.log( s.source_url ); // logs the full URL to the file
// do your thing
} );
} );
} );