自定义卫生功能是否在Customizer中触发警报?

时间:2015-08-04 作者:Dejo Dekic

我在主题定制器中有一个图像上载字段:

/* Background Image */
$wp_customize->add_setting(
    \'tcx_background_image\',
    array(
        \'default\'      => \'\',
        \'transport\'    => \'postMessage\',
        \'sanitize_callback\'  => \'is_image\',
    )
);
和清理回调函数:

function is_image( $input ) {
if(getimagesize($input)){   
    return esc_url_raw($input);     
}else{
        return \'\';  
     }
}
此部件工作正常:

我单击选择图像按钮,然后在媒体库中选择我的图像,然后单击选择图像,最后单击保存(&b);发布并正确输出我的图像(到目前为止没有任何错误)

这是可怕的警报问题(单击Customizer中的X按钮时发生):

现在我想删除我的图像,所以我单击删除按钮,现在没有图像,然后单击保存(&b);发布按钮。

当我单击Customizer中的X(退出)按钮时,会出现问题,因为它会触发一个警告框“如果离开此页面,您所做的更改将丢失。是否确实要离开此页面?”。

我已启用define(\'WP_DEBUG\', true); 如果将其设置为false,警报将消失,如果我将\'sanitize_callback\' => \'esc_url_raw\', 警报也会消失只有在使用自定义函数时才会出现is_image();

那么,在使用自定义函数时,如何删除该警报框

这是用于自定义预览的js文件,如果有帮助的话。。。THX!!

wp.customize( \'tcx_background_image\', function( value ) {
    value.bind( function( to ) {

        0 === $.trim( to ).length ?
            $( \'body\' ).css( \'background-image\', \'\' ) :
            $( \'body\' ).css( \'background-image\', \'url( \' + to + \')\' );

    });
});

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

好吧我解决了看起来是这样的getimagesize 如果找不到图像,将生成错误/通知,因此警报框将触发。。。

这直接来自PHP文档:

如果无法访问文件名图像,getimagesize()将生成E\\U级警告错误。读取错误时,getimagesize()将生成级别为E\\U的错误通知。

以下是对我有效的解决方案:

function is_image( $input ) {
   if ( !empty($input) && getimagesize($input)) {
     return esc_url_raw($input);
   } else {
    return \'\';
   }
}
如果有人有更好的解决方案,请告诉我。。。

结束

相关推荐

Optimize shortcode callbacks

我创建了一个插件,在我的WordPress站点中添加了一些短代码。但我是一个PHP新手,所以我相信它可能有一些错误或优化它的方法。它工作正常,显然没有问题。内存使用率为00.04MB。你能看看吗?非常感谢!add_action( \'wp_enqueue_scripts\', \'prefix_add_my_stylesheet\' ); function prefix_add_my_stylesheet() { // Respects SSL, Styl