block_core_navigation_link_maybe_urldecode

The timeline below displays how wordpress function block_core_navigation_link_maybe_urldecode has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Decodes a url if it's encoded, returning the same url if not.
 *
 * @param string $url The url to decode.
 *
 * @return string $url Returns the decoded url.
 */
function block_core_navigation_link_maybe_urldecode($url)
{
    $is_url_encoded = false;
    $query = parse_url($url, PHP_URL_QUERY);
    $query_params = wp_parse_args($query);
    foreach ($query_params as $query_param) {
        $can_query_param_be_encoded = is_string($query_param) && !empty($query_param);
        if (!$can_query_param_be_encoded) {
            continue;
        }
        if (rawurldecode($query_param) !== $query_param) {
            $is_url_encoded = true;
            break;
        }
    }
    if ($is_url_encoded) {
        return rawurldecode($url);
    }
    return $url;
}

WordPress Version: 6.2

/**
 * Decodes a url if it's encoded, returning the same url if not.
 *
 * @param string $url The url to decode.
 *
 * @return string $url Returns the decoded url.
 */
function block_core_navigation_link_maybe_urldecode($url)
{
    $is_url_encoded = false;
    $query = parse_url($url, PHP_URL_QUERY);
    $query_params = wp_parse_args($query);
    foreach ($query_params as $query_param) {
        if (rawurldecode($query_param) !== $query_param) {
            $is_url_encoded = true;
            break;
        }
    }
    if ($is_url_encoded) {
        return rawurldecode($url);
    }
    return $url;
}