在WP_query之前检查变量是否为空

时间:2015-12-05 12:33:44

标签: php wordpress

我想在进行wp查询之前测试$_GET varriable是否为空。我试过这个:

($miesto_name != '' ? "array('key' => 'miestas', 'value' => $miesto_name)," : '')

在arrgs中:

$args=array(
    'post_type' => $type,
    'posts_per_page' => 32,
    'paged' => $paged,
    'post_status' => 'publish',
    'order'   => 'ASC',
    's' => $_GET['paieska'],
    'meta_query' => array(
        'relation'      => 'AND',
        ($miesto_name != '' ? "array('key' => 'miestas', 'value' => $miesto_name)," : ''),
        array(
            'key' => 'imones_apskritis',
            'value' => $apskritis_name
        ),
        'city_clause' => array(
            'key'       => 'apmoketa'
        )
    ),
    'orderby' => array( 'city_clause' => 'DESC', 'title' => 'ASC' ),
    'tax_query' => array(
        array(
        'taxonomy' => 'veiklos',
        'field' => 'term_id',
        'terms' => $_GET['veikla'])
    )
);

但是这没有用,在进行查询之前还有其他方法可以检查值是否为空?

我真的无法找到办法做到这一点,而且我不想为每种情况创建单独的$ args ...

2 个答案:

答案 0 :(得分:1)

这应该

$paieska = isset( $_GET['paieska'] ) ? $_GET['paieska'] : 'Value if Get is Empty';
$veikla = isset( $_GET['veikla'] ) ? $_GET['veikla'] : 'Value if Get is Empty';
$custom_array = !empty( $miesto_name ) ? array('key' => 'miestas', 'value' => $miesto_name) : array();
$args=array(
    'post_type' => $type,
    'posts_per_page' => 32,
    'paged' => $paged,
    'post_status' => 'publish',
    'order'   => 'ASC',
    's' => $paieska,
    'meta_query' => array(
        'relation'      => 'AND',
        $custom_array,
        array(
            'key' => 'imones_apskritis',
            'value' => $apskritis_name
        ),
        'city_clause' => array(
            'key'       => 'apmoketa'
        )
    ),
    'orderby' => array( 'city_clause' => 'DESC', 'title' => 'ASC' ),
    'tax_query' => array(
        array(
        'taxonomy' => 'veiklos',
        'field' => 'term_id',
        'terms' => $veikla
    )
);

答案 1 :(得分:1)

您可以简单地使用PHP中的filter_input()函数来完成一些事情

  • 检查$_GET变量是否存在

  • 如果找到则返回值,否则返回false

  • 设置过滤器时清理/验证值

您应该注意,永远不会使用来自任何$_GET变量的非经过消毒/未经验证的数据(这也适用于像{{{}这样的网站的任何其他输入1}}和表单字段)。这是黑客用来按顺序将恶意代码注入网站的最喜欢的地方,所以如果你不希望你的网站被黑,总是SANTIZE / VALIDATE / ESCAPE 任何进入网站的数据,从不相信任何人,甚至不相信自己

如果您的$_POST值预计为字符串(根据预期的数据类型调整过滤器),您可以执行以下操作

$_GET