Using WordPress ‘http_allowed_safe_ports’ PHP filter

The http_allowed_safe_ports WordPress PHP filter allows you to modify and control the list of ports considered safe in the HTTP API, enabling external requests for the HTTP request.

Usage

add_filter('http_allowed_safe_ports', 'your_custom_function', 10, 3);

function your_custom_function($allowed_ports, $host, $url) {
    // your custom code here

    return $allowed_ports;
}

Parameters

  • $allowed_ports (array) – An array of integers representing valid ports.
  • $host (string) – The host name of the requested URL.
  • $url (string) – The requested URL.

More information

See WordPress Developer Resources: http_allowed_safe_ports

Examples

Add a custom port to the allowed list

To allow an additional custom port for external requests, add it to the $allowed_ports array.

add_filter('http_allowed_safe_ports', 'allow_custom_port', 10, 3);

function allow_custom_port($allowed_ports, $host, $url) {
    // Add custom port 8080 to the list of allowed ports
    $allowed_ports[] = 8080;

    return $allowed_ports;
}

Restrict allowed ports to a specific host

Limit the allowed ports to a specific host by checking the $host parameter.

add_filter('http_allowed_safe_ports', 'restrict_ports_for_host', 10, 3);

function restrict_ports_for_host($allowed_ports, $host, $url) {
    // Restrict allowed ports for example.com
    if ($host === 'example.com') {
        $allowed_ports = array(80, 443);
    }

    return $allowed_ports;
}

Remove a port from the allowed list

To remove a port from the allowed list, use the array_diff function.

add_filter('http_allowed_safe_ports', 'remove_allowed_port', 10, 3);

function remove_allowed_port($allowed_ports, $host, $url) {
    // Remove port 80 from the list of allowed ports
    $allowed_ports = array_diff($allowed_ports, array(80));

    return $allowed_ports;
}

Allow all ports

Allow all ports by returning an empty array.

add_filter('http_allowed_safe_ports', 'allow_all_ports', 10, 3);

function allow_all_ports($allowed_ports, $host, $url) {
    // Allow all ports by returning an empty array
    return array();
}

Allow ports based on a specific URL pattern

Allow additional ports for URLs that match a specific pattern.

add_filter('http_allowed_safe_ports', 'allow_ports_for_pattern', 10, 3);

function allow_ports_for_pattern($allowed_ports, $host, $url) {
    // Allow port 8080 for URLs that contain "custom"
    if (strpos($url, 'custom') !== false) {
        $allowed_ports[] = 8080;
    }

    return $allowed_ports;
}