【问题标题】:meta query for serialized value not working序列化值的元查询不起作用
【发布时间】:2019-08-29 04:52:57
【问题描述】:

我有两个带有复选框的元框。它在以下代码中命名为test2test3。我已将这两个值保存在一个帖子元键中。在检查时我发现它保存为以下内容。

a:4:{s:5:"test1";s:0:"";s:5:"test2";b:1;s:5:"test3";b:1;}

我希望在元查询中使用 test3 值。我有以下查询,

$args = array (
    'post_type'         => 'my_custom_cpt',
    'meta_query'        => array (
        array (
            'key'       => 'test3',
            'value'     => 1,
            'compare' => 'LIKE',
        )
    ),
);
$loop = new WP_Query( $args );

我将帖子元数据保存在密钥 my_test_pm 中。我尝试将其作为meta query 键中的键。仍然没有返回任何帖子。

【问题讨论】:

标签: wordpress


【解决方案1】:

你试过这样吗?

$args = array(
    'post_type' => 'my_custom_cpt',
    'meta_query' => array(
        array(
            'key' => 'test3',
            'value' => sprintf(':"%s";', 1),
            'compare' => 'LIKE'
        )
    )
);

$loop = new WP_Query( $args );

或使用自定义查询

global $wpdb; 

$query = $wpdb->prepare("SELECT `post_id` FROM `wp_postmeta` WHERE `post_id` IN (SELECT `ID` FROM `wp_posts` WHERE `post_type` = 'my_custom_cpt')
AND `meta_key` = 'test3' AND `meta_value` LIKE '%s'",'%1%');

$ids = $wpdb->get_col($query);

$args = array(
    'post__in' => $ids,
    'post_type' => 'my_custom_cpt' 
);

$posts = get_posts($args);


print_r($posts);

【讨论】:

  • 你可以发布你的test3数组值而不是序列化数据吗?
  • test3 不是数组。这只是真值或假值。
  • $settings['test3'] = $_POST['test3'] == 'on' ? true : false;
  • 这个序列化值a:4:{s:5:"test1";s:0:"";s:5:"test2";b:1;s:5:"test3";b:1;}保存在键my_test_pm中。我想要test3这个序列化的键。
  • 好的。给我几分钟。
【解决方案2】:

$args = array('post_type' => 'my_custom_cpt','meta_query' => array( 大批( 'key' => 'my_test_pm', '值' => 数组('test3'), '比较' => '喜欢', ), ), ); $query = new WP_Query($args); 你试过这样吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2013-09-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多