php - WP_Query 当元值保存为序列化数组时

标签 php wordpress-theming wordpress

我正在手动获取 woocommerce 产品。

问题是我在产品上有一个自定义字段,即 _locations。一个产品可以属于多个位置,所以我在 wp-admin 的产品添加表单中提供了一个多选列表。

下面是我用来保存元值的函数

function woo_add_custom_general_fields_save( $post_id ){        
    // Select
    $woocommerce_select = $_POST['_locations'];
    if( !empty( $woocommerce_select ) )
        update_post_meta( $post_id, '_locations', esc_attr(maybe_serialize($woocommerce_select )) );
}

请注意,我已经序列化了 meta_value 的数据,因此我只有一个唯一键 _locations以及与之关联的所有位置值。

现在在我取货时出现问题
$args = array(
      'post_type' => 'product',
      'product_cat' => $food_category->slug,
      'meta_key' => '_locations', 
      'meta_value' => 'newyork'   
     );
     $loop = new WP_Query($args);

我想获得仅适用于 newyork 的产品但在数据库中它存储为序列化数组
s:69:"a:2:{i:0;s:7:"newyork";i:1;s:13:"massachusetts";}";

我怎样才能让这个查询只获取纽约产品。

谢谢

最佳答案

尝试:

$args = array(
  'post_type' => 'product',
  'product_cat' => $food_category->slug,
  'meta_query' => array(
     array(
        'key'     => '_location',
        'value'   => '%newyork%',
        'compare' => 'LIKE',
     ),
   ),
 );

关于php - WP_Query 当元值保存为序列化数组时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364378/

相关文章:

javascript - 只执行一次ajax

php - 何时用撇号将 SQL 字段括起来?

WordPress:在子主题中覆盖父主题类功能

php - WordPress: fatal error :无法在第 130 行的写入上下文中使用函数返回值

php - 从 mySQL 中提取前 X 个单词(不仅仅是字符)

php - 没有 HTML 表单的 Laravel 5 AJAX 排序顺序数据(jQuery 可排序)

css - wordpress css 图片链接

wordpress - 如何使用主题选项页面的 Wordpress 设置 API 设置和获取多项选择的值?

css - 通过 cPanel 自定义 CSS WordPress 主题(不更新)

php - 组合数组