Untitled

mail@pastecode.io avatar
unknown
javascript
a month ago
2.6 kB
2
Indexable
Never
if ( ! function_exists( 'fusion_add_url_parameter' ) ) {
    function fusion_add_url_parameter( $url, $param_name, $param_value ) {
        $url_data = wp_parse_url( $url );
        if ( ! isset( $url_data['query'] ) ) {
            $url_data['query'] = '';
        }
        $params = [];
        parse_str( $url_data['query'], $params );

        // Hỗ trợ nhiều giá trị cho một tham số
        if ( isset($params[$param_name]) ) {
            if ( is_array($param_value) ) {
                foreach ($param_value as $value) {
                    $params[$param_name][] = $value;
                }
            } else {
                $params[$param_name][] = $param_value;
            }
            $params[$param_name] = array_unique($params[$param_name]);
        } else {
            $params[$param_name] = is_array($param_value) ? $param_value : [$param_value];
        }

        if ( 'product_count' === $param_name && is_paged() ) {
            $params['paged'] = '1';
        }
        
        // Xử lý mảng giá trị cho một tham số để chuyển thành chuỗi, sử dụng hàm rawurlencode cho mỗi giá trị
        foreach ($params as $key => &$param) {
            if (is_array($param)) {
                $param = array_map('rawurlencode', $param);
                $param = implode(',', $param);
            } else {
                $param = rawurlencode($param);
            }
        }

        $url_data['query'] = http_build_query( $params, '', '&', PHP_QUERY_RFC3986 );
        return fusion_build_url( $url_data );
    }
}

if ( ! function_exists( 'fusion_build_url' ) ) {
    function fusion_build_url( $url_data ) {
        $url = '';
        if ( isset( $url_data['host'] ) ) {
            $url .= $url_data['scheme'] . '://';
            if ( isset( $url_data['user'] ) ) {
                $url .= $url_data['user'];
                if ( isset( $url_data['pass'] ) ) {
                    $url .= ':' . $url_data['pass'];
                }
                $url .= '@';
            }
            $url .= $url_data['host'];
            if ( isset( $url_data['port'] ) ) {
                $url .= ':' . $url_data['port'];
            }
        }

        if ( isset( $url_data['path'] ) ) {
            $url .= $url_data['path'];
        }

        if ( isset( $url_data['query'] ) ) {
            $url .= '?' . $url_data['query'];
        }

        if ( isset( $url_data['fragment'] ) ) {
            $url .= '#' . $url_data['fragment'];
        }

        return $url;
    }
}
Leave a Comment