自定义字段

有关自定义字段的查询,可用使用 9 个参数:

meta_key(字符串):自定义字段的名(key)
meta_value(字符串):自定义字段的值(value)
meta_value_num(数字):自定义字段的值(value)
meta_compare(字符串):匹配方法(=、!=、>、>=、<、<=),默认是 “=” meta_query(数组):处理复杂的查询 relation(字符串):条件的逻辑关系,OR(或者)或 AND(和) key(字符串):自定义字段的名(key) value(字符串):自定义字段的值(value) compare(字符串):匹配方法(=、!=、>、>=、<、<=、LIKE、NOT LIKE、IN、NOT IN、BETWEEN、NOT BETWEEN、EXISTS、NOT EXISTS),默认是 “=” type(字符串):自定义字段的类型(NUMERIC、BINARY、CHAR、DATE、DATETIME、DECIMAL、SIGNED、TIME、UNSIGNED),默认是 “CHAR”


//简单的自定义字段查询
//获取拥有自定义字段 color 的文章:
$query = new WP_Query( 'meta_key=color' );
//获取自定义字段的值为 “blue” 的文章,不管字段的键值是什么:
$query = new WP_Query( 'meta_value=blue' );
//获取自定义字段的值为 “blue” 的页面,不管字段的键值是什么:
$query = new WP_Query( 'meta_value=blue&post_type=page' );
//获取自定义字段 color 是 “blue” 的文章:
$query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );
//获取自定义字段 color 不是 “blue” 的文章:
$query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );
//获取文章类型是 “product” 的文章,并且自定义字段 price 小于或者等于 22:
$query = new WP_Query( array( 'meta_key' => 'price', 'meta_value' => '22', 'meta_compare' => '<=', 'post_type' => 'product' ) );

简单的复杂查询
获取 product 自定义文章类型中 color 自定义字段不包含 “blue” 的文章:


$args = array(
    'post_type'  => 'product',
    'meta_query' => array(
        array(
            'key'     => 'color',
            'value'   => 'blue',
            'compare' => 'NOT LIKE',
        ),
    ),
);
$query = new WP_Query( $args );

复杂的查询
多自定义字段匹配:


$args = array(
    'post_type'  => 'product',
    'meta_query' => array(
        array(
            'key'     => 'color',
            'value'   => 'blue',
            'compare' => 'NOT LIKE',
        ),
        array(
            'key' => 'price',
            'value'   => array( 20, 100 ),
            'type'    => 'numeric',
            'compare' => 'BETWEEN',
        ),
    ),
);
$query = new WP_Query( $args );

在 product 自定义文章类型里获取 color 自定义字段不包含 “blue” 或者 price 字段是 20 到 100 之间的文章:


$args = array(
    'post_type'  => 'product',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key'     => 'color',
            'value'   => 'blue',
            'compare' => 'NOT LIKE',
        ),
        array(
            'key'     => 'price',
            'value'   => array( 20, 100 ),
            'type'    => 'numeric',
            'compare' => 'BETWEEN',
        ),
    ),
);
$query = new WP_Query( $args );