函数文档

_remove_qs_args_if_not_in_url()

💡 云策文档标注

概述

_remove_qs_args_if_not_in_url() 是一个 WordPress 内部函数,用于从查询字符串中移除指定参数,如果这些参数在给定 URL 中不存在。开发者应避免在插件代码中使用此函数。

关键要点

  • 函数作用:根据 URL 检查并移除查询字符串中不存在的参数。
  • 参数:$query_string(字符串,必需)、$args_to_check(数组,必需)、$url(字符串,必需)。
  • 返回值:返回修改后的查询字符串。
  • 注意事项:此函数为 WordPress 核心内部使用,不建议在插件或主题中直接调用。

代码示例

function _remove_qs_args_if_not_in_url( $query_string, array $args_to_check, $url ) {
    $parsed_url = parse_url( $url );

    if ( ! empty( $parsed_url['query'] ) ) {
        parse_str( $parsed_url['query'], $parsed_query );

        foreach ( $args_to_check as $qv ) {
            if ( ! isset( $parsed_query[ $qv ] ) ) {
                $query_string = remove_query_arg( $qv, $query_string );
            }
        }
    } else {
        $query_string = remove_query_arg( $args_to_check, $query_string );
    }

    return $query_string;
}

注意事项

此函数主要用于 WordPress 核心内部处理,如 redirect_canonical() 函数中,开发者应使用 remove_query_arg() 等公共函数替代。


📄 原文内容

Removes arguments from a query string if they are not present in a URL DO NOT use this in plugin code.

Parameters

$query_stringstringrequired
$args_to_checkarrayrequired
$urlstringrequired

Return

string The altered query string

Source

function _remove_qs_args_if_not_in_url( $query_string, array $args_to_check, $url ) {
	$parsed_url = parse_url( $url );

	if ( ! empty( $parsed_url['query'] ) ) {
		parse_str( $parsed_url['query'], $parsed_query );

		foreach ( $args_to_check as $qv ) {
			if ( ! isset( $parsed_query[ $qv ] ) ) {
				$query_string = remove_query_arg( $qv, $query_string );
			}
		}
	} else {
		$query_string = remove_query_arg( $args_to_check, $query_string );
	}

	return $query_string;
}

Changelog

Version Description
3.4.0 Introduced.