gpt4 book ai didi

php - 在 Wordpress 中使用 meta_query 查询经过清理的数据

转载 作者:行者123 更新时间:2023-11-30 22:48:11 26 4
gpt4 key购买 nike

在谷歌搜索了一段时间后,我发现这应该可以 ref. ,但我似乎没有让它运行。

在后端,我在评论上有一个自定义字段,用于设置喜欢它的用户 ID 列表。它以这种方式存储在数据库中:

a:2:{i:0;s:1:"1";i:1;s:1:"2";}

转化为

Array (
[0] => 1
[1] => 2
)

一个非常简单的平面数组,其中值 1 和 2 是两个喜欢的用户 ID。现在,我想查询userID 1喜欢的评论

$args = array(
'status' => 'approve',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'liked_by',
'value' => array(1),
'compare' => 'IN',
'type' => 'numeric'
)
)
);
// The Query
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );

我没有收到任何评论,这是为什么?

这是生成的查询:

SELECT * FROM wp_comments JOIN wp_posts ON wp_posts.ID = wp_comments.comment_post_ID INNER JOIN wp_commentmeta ON ( wp_comments.comment_ID = wp_commentmeta.comment_id ) WHERE ( comment_approved = '1' ) AND  wp_posts.post_status = 'publish' AND ( 
( wp_commentmeta.meta_key = 'liked_by' AND CAST(wp_commentmeta.meta_value AS SIGNED) IN ('1') )
) GROUP BY wp_comments.comment_ID ORDER BY comment_date_gmt DESC

最佳答案

我想对序列化数据执行此操作,即使我引用了一个 URL 说

don't store array of ids in one row instead loop through ids array and normalize your likes data manually Don't serialize data into a database field.

这是因为我使用了 ACF 并添加了一个 Users 字段,该字段使用了序列化数据。我通过避免 ACF 并仅使用评论元 API 解决了我的问题。

// UserID 1 likes commentID 9
add_comment_meta(9, 'like', 1, false);

// Get comments liked by userID 1
$args = array(
'status' => 'approve',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'like',
'value' => 1,
'compare' => '=',
'type' => 'numeric'
)
)
);

// The Query
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
// Surprise, it's commentID 9

请注意我是如何使用 add_comment_meta 和 unique=false 的,而不是将数组序列化到数据库中,使其无法用于查询。

关于php - 在 Wordpress 中使用 meta_query 查询经过清理的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com