Using WordPress ‘kses_allowed_protocols’ PHP filter

The kses_allowed_protocols WordPress PHP Filter allows you to modify the list of protocols that are allowed in HTML attributes.

Usage

add_filter('kses_allowed_protocols', 'my_custom_allowed_protocols');
function my_custom_allowed_protocols($protocols) {
    // your custom code here
    return $protocols;
}

Parameters

  • $protocols (string[]): An array of allowed protocols such as ‘http’, ‘ftp’, ‘tel’, and more.

More information

See WordPress Developer Resources: kses_allowed_protocols

Examples

Add a Custom Protocol

Add a custom protocol, “myprotocol”, to the allowed list of protocols.

add_filter('kses_allowed_protocols', 'add_myprotocol');
function add_myprotocol($protocols) {
    $protocols[] = 'myprotocol';
    return $protocols;
}

Remove a Protocol

Remove the “ftp” protocol from the allowed list of protocols.

add_filter('kses_allowed_protocols', 'remove_ftp_protocol');
function remove_ftp_protocol($protocols) {
    $key = array_search('ftp', $protocols);
    if ($key !== false) {
        unset($protocols[$key]);
    }
    return $protocols;
}

Allow Only Specific Protocols

Allow only “http” and “https” protocols.

add_filter('kses_allowed_protocols', 'allow_only_http_https');
function allow_only_http_https($protocols) {
    return array('http', 'https');
}

Add Multiple Custom Protocols

Add multiple custom protocols to the allowed list of protocols.

add_filter('kses_allowed_protocols', 'add_multiple_protocols');
function add_multiple_protocols($protocols) {
    $new_protocols = array('myprotocol1', 'myprotocol2', 'myprotocol3');
    return array_merge($protocols, $new_protocols);
}

Clear All Allowed Protocols

Remove all protocols from the allowed list of protocols.

add_filter('kses_allowed_protocols', 'clear_allowed_protocols');
function clear_allowed_protocols($protocols) {
    return array();
}