Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如果值不存在,如何编辑数组值_Arrays_Wordpress - Fatal编程技术网

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