Arrays 如果值不存在,如何编辑数组值
我正在尝试根据各州的位置查询各州。来自映射位置元键的地址字符串示例:Arrays 如果值不存在,如何编辑数组值,arrays,wordpress,Arrays,Wordpress,我正在尝试根据各州的位置查询各州。来自映射位置元键的地址字符串示例: 澳大利亚新南威尔士州贝特曼湾2536 澳大利亚新南威尔士州贝特曼湾2536 我无法计算“地图位置”值=“新南威尔士州”或“新南威尔士州” $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; $args = array( 'post_type' => 'post', 'paged' => $paged,
- 澳大利亚新南威尔士州贝特曼湾2536
- 澳大利亚新南威尔士州贝特曼湾2536
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'post',
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'listing_status',
'value' => 'current'
),
array(
'key' => 'map_location',
'compare' => 'LIKE',
'value' => 'NSW'
)
)
);
$state_posts = new WP_Query($args);
您可以这样做:--
在这种情况下,问题是部分匹配,分两步进行:找到正确的帖子,然后查询它们。使用分页编辑后,请尝试此(已测试的)解决方案(第二次查询会更容易,但会降低性能): 顺便说一句,没有部分匹配的解决方案更简单:
$args = array(
'meta_query' => array(
array(
'key' => 'listing_status',
'value' => 'current',
'meta_compare' => '='
),
array(
'key' => 'map_location',
'value' => array('NEW SOUTH WALES','BATEMANS BAY NEW SOUTH WALES 2536 Australia'),
'meta_compare' => 'IN'
)
)
);
$the_query = new WP_Query($args);
嗨,谢谢-但那不行。。它不返回任何结果。我遇到了这个问题,但我不太确定这是否是我需要的,我在实现它时遇到了困难。任何指点都将非常感谢。迈克尔,你是一个传奇!!它似乎工作得很好!我现在想知道我需要用什么方法才能让WordPress分页工作..很高兴我能帮忙:),现在我是我的方式,将添加分页到我的解决方案。今天晚些时候。:))迫不及待地想看看你是怎么做的!!我遇到了一个问题,如果我在另一个状态下尝试它:
$meta_value1='%WA%';'$meta_值2='%WESTERN AUSTRALIA%';'代码>“WA”将返回新南威尔士州的结果,因为“WALES”。。HMMM分页添加在上面。WA匹配问题的简单答案,'%WA%',但要更复杂,您需要正则表达式匹配。-你能列出更多的样品吗?
$meta_key1 = 'map_location';
$meta_value1 = '%NSW%';
$meta_key2 = 'map_location';
$meta_value2 = '%NEW SOUTH WALES%';
$meta_key3 = 'listing_status';
$meta_value3 = 'current';
if (get_query_var('paged')) $page_no = get_query_var( 'paged' ) - 1; else $page_no = 0;
$posts_per_page = 1;
global $wpdb;
$postids = $wpdb->get_col( $wpdb->prepare(
"
SELECT key2.post_id
FROM $wpdb->postmeta key2
INNER JOIN $wpdb->postmeta key1
ON key1.post_id = key2.post_id
AND ((key1.meta_key = %s AND key1.meta_value LIKE %s) OR (key1.meta_key = %s AND key1.meta_value LIKE %s))
WHERE key2.meta_key = %s AND key2.meta_value = %s LIMIT %d , %d
",
$meta_key1,
$meta_value1,
$meta_key2,
$meta_value2,
$meta_key3,
$meta_value3,
$page_no,
$posts_per_page
) );
$the_query = new WP_Query( array('post__in' => $postids ) );
$args = array(
'meta_query' => array(
array(
'key' => 'listing_status',
'value' => 'current',
'meta_compare' => '='
),
array(
'key' => 'map_location',
'value' => array('NEW SOUTH WALES','BATEMANS BAY NEW SOUTH WALES 2536 Australia'),
'meta_compare' => 'IN'
)
)
);
$the_query = new WP_Query($args);