正确使用带有协议的esc_url_raw

时间:2015-02-07 作者:Ben Racicot

我正在尝试建立自己的函数,以便在将URL保存到WP数据库之前对其进行清理。但是,我无法让esc\\u url\\u raw针对不需要的协议触发。下面的功能是让所有协议通过。

function scientifik_sanitize_url($url){
    $prots = array(\'http\', \'https\');
    $item  = $url;

    $sanitized = esc_url_raw( $item, $prots );
    if ( is_wp_error( $sanitized ) ) {
        return \'funny\';
        die();
    }

    return $item;

};
我提前感谢任何人使用此功能的经验。

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

您正在执行WP Error object 如果URL的协议无效,但esc_url_raw 在这种情况下返回空字符串(请参阅codex), 不是WP错误对象。所以is_wp_error( $escaped ) 从不验证。此外,您正在检查未定义的$escaped 变量(请注意esc_url_raw 存储在$sanitized 变量):

function scientifik_sanitize_url($url){

    $prots = array(\'http\', \'https\');
    $item  = $url;

    $escaped = esc_url_raw( $item, $prots );
    if ( empty( $escaped ) ) {
        return \'funny\';
        die();
    }

    return $item;

};

结束

相关推荐

Custom user profile URLs

我创建了一个页面“profile”,当使用用户id的get变量访问该页面时,如:http://example.com/profile/?uid=1 然后将显示用户id的配置文件详细信息1. 现在我想重写…http://example.com/profile/?uid=1 …至…http://example.com/profile/admin 如何做到这一点?