首先,一个人永远不应该依赖原始的$_REQUEST
: 相信我,这是一个安全问题。
PHP有2个功能:filter_input
和filter_input_array
这有助于清理请求数据。
此外,在您的请求转储中,我没有看到任何$_REQUEST[\'custom_bath\']
, 但您正在使用该值,这可能是问题的原因。在使用变量之前,应该检查它是否已设置。
使用我的建议,您的代码会变成这样
$args = array(
\'custom_textarea\' => FILTER_SANITIZE_STRING,
\'custom_price\' => FILTER_VALIDATE_INT,
\'custom_price1\' => FILTER_VALIDATE_INT,
\'custom_beds\' => FILTER_SANITIZE_STRING,
\'custom_bath\' => FILTER_SANITIZE_STRING,
\'custom_garage\' => FILTER_SANITIZE_STRING
);
$get = filter_input_array( INPUT_GET, $args, TRUE );
$post = filter_input_array( INPUT_POST, $args, TRUE );
$request = array_merge( $get, $post );
$query_args = array( \'relation\' => \'OR\' );
if ( ! empty( $request[\'custom_textarea\'] ) ) {
$query_args[] = array(
\'key\' => \'custom_textarea\',
\'value\' => "%{$request[\'custom_textarea\']}%",
\'compare\' => \'LIKE\'
);
}
if ( ! empty( $request[\'custom_price\'] ) && ! empty($request[\'custom_price1\']) ) {
$query_args[] = array(
\'key\' => \'custom_price\',
\'value\' => array( "{$request[\'custom_price\']}", "{$request[\'custom_price1\']}" ),
\'compare\' => \'BETWEEN\',
\'type\' => \'SIGNED\'
);
}
if ( ! empty( $request[\'custom_beds\'] ) ) {
$query_args[] = array(
\'key\' => \'custom_beds\',
\'value\' => "{$request[\'custom_beds\']}",
);
}
if ( ! empty( $request[\'custom_bath\'] ) ) {
$query_args[] = array(
\'key\' => \'custom_bath\',
\'value\' => "{$request[\'custom_bath\']}",
);
}
if ( ! empty( $request[\'custom_garage\'] ) ) {
$query_args[] = array(
\'key\' => \'custom_garage\',
\'value\' => "{$request[\'custom_garage\']}",
);
}
$query = new WP_Query( $query_args );