wordpress页面传递参数-WordPress 文章查询教程9:如何自定义字段(post meta)参数

在WordPress中wordpress页面传递参数,使用WP_Query来查询文章是最常见的操作。 如果你学好这个操作,你基本上就学会了WordPress开发的一半。

《WordPress Jam》将通过一系列教程讲解如何使用WP_Query查询WordPress文章。

我写这个系列文章的目的也是为了方便我在使用这些参数的时候查询,所以如果你经常做WordPress的二次开发,建议收藏这篇文章。

第九讲是关于自定义字段相关的参数。 自定义字段相关参数可以获取特定自定义字段的文章。 相关参数有很多。 一、基本参数:

meta_query 还包含一个或多个具有以下键的数组:

仅当日期以 YYYY-MM-DD 格式存储并使用此格式进行测试时,DATE 类型才能与 BETWEEN 比较一起使用。

重要提示:meta_query 的参数应该是元查询数组的数组,它允许您通过最外层数组的关系参数来定义关系。

简单的自定义字段查询

获取自定义字段key为color的文章,value可以是任意值:

$query = new WP_Query( array( 'meta_key' => 'color' ) );

获取自定义字段值为“blue”的文章,key可以为任意值:

$query = new WP_Query( array( 'meta_value' => 'blue' ) );

获取自定义字段值为“blue”且键为任意值的页面:

$args = array(
'meta_value' => 'blue',
'post_type' => 'page'
);
$query = new WP_Query( $args );

获取自定义字段中键为“color”且值为“blue”的文章:

$args = array(
'meta_key' => 'color',
'meta_value' => 'blue'
);
$query = new WP_Query( $args );

获取自定义字段的键为“color”且值不为“blue”的文章:

$args = array(
'meta_key' => 'color',
'meta_value' => 'blue',
'meta_compare' => '!='
);
$query = new WP_Query( $args );

获取自定义字段键为设置日期、值为现在的文章,是显示未过期的活动:

$args = array(
'post_type' => 'event',
'meta_key' => 'event_date',
'meta_value' => date( "Ymd" ), // change to how "event date" is stored
'meta_compare' => '>',
);
$query = new WP_Query( $args );

获取自定义字段key为“price”且小于等于22的商品:

$args = array(
'meta_key' => 'price',
'meta_value' => '22',
'meta_compare' => '<=',
'post_type' => 'product'
);
$query = new WP_Query( $args );

当使用'meta_value'参数时,值99将被视为大于100,因为数据默认为“字符串”而不是“数字”,如果要比较数字,请使用'meta_value_num'参数。

通过自定义字段使用 meta_query 获取文章

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

特别注意,使用meta_query时,即使只有一个自定义字段查询,也需要传递嵌套数组。

通过多个自定义字段使用meta_query 获取文章

获取 20 到 100 之间的元键“颜色”wordpress页面传递参数,而不是“蓝色”或“价格”。

$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 );

'meta_query' 支持多重嵌套来构建复杂的查询,例如获取 color=orange 或 color=red&size=small 产品:

$args = array(
'post_type' => 'product',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'color',
'value' => 'orange',
'compare' => '=',
),
array(
'relation' => 'AND',
array(
'key' => 'color',
'value' => 'red',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'small',
'compare' => '=',
),
),
),
);
$query = new WP_Query( $args );

大家对 WP_Query 使用上有什么问题,请给我留言

点击卡片关注“WordPress Jam”

每天分享 WordPress 技巧