这里的某个地方可能有答案,但我找不到它,如果我找到了,也无法识别它。情况如下:
我有一个自定义的帖子类型“region”,它显示在单个区域上。php。地区名称为北、南、东、西。
我有另一个自定义帖子类型“news”。与之关联的是一个名为“news\\u region”的自定义字段。创建新闻项时,作者需要为news\\u region(All、N、S、E、W)指定一个值。
我希望在North region页面上列出news\\u region值为“all”或“N”的所有新闻项目。
最终版本有效(感谢@milo让我走上正轨):
// get title of region page for comparison with news_region key
$this_region = get_the_title($post->ID);
// query news items with news_region All or $this_region
$args = array(
\'post_type\' => \'news\',
\'posts_per_page\' => 4,
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'news_region\',
\'value\' => \'All\',
\'compare\' => \'LIKE\'
),
array(
\'key\' => \'news_region\',
\'value\' => $this_region,
\'compare\' => \'LIKE\'
)
)
);
$newslist = new WP_Query( $args );
注意:将news\\u region的值更改为“All,North region,East region,South region,West region”,以匹配完整的地区名称(与single region.php的帖子标题相同)。
最合适的回答,由SO网友:Milo 整理而成
如果我理解正确,你想news_region
meta_query
IN
的比较All
或当前地区帖子标题的第一个字母(N
, S
, E
, W
)
// get first letter of this region post title
$this_region = substr($post->post_title, 0, 1);
// query news items with news_region All or $this_region
$args = array(
\'post_type\' => \'news\',
\'meta_query\' => array(
array(
\'key\' => \'news_region\',
\'value\' => array( \'All\', $this_region ),
\'compare\' => \'IN\'
)
)
);
$news_posts = new WP_Query( $args );