You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress+ACF关联数据查询问题:产品页无法获取关联评论

自定义文章类型reviews与WooCommerce产品关联问题

背景

我通过代码创建了自定义文章类型reviews,并使用Advanced Custom Fields插件创建自定义字段。该reviews类型包含一个关系字段,用于关联WooCommerce的product文章类型。目前在review页面中可正常获取关联的产品数据,但在产品页面无法显示其关联的评论内容。

我查阅了Advanced Custom Fields的双向关系相关文档,但后台界面找不到对应的“高级”选项卡,无法设置bidirectional: true。

最初无效代码尝试

我在content-single-page中编写以下代码,结果返回了所有评论,而非当前产品关联的评论:

$args = [
    'post_type' => 'reviews',
    'meta_query' => [
        'key' => 'related_product',
        'value' => '"' . get_the_ID() . '"'
    ]
];
$reviews = get_posts($args);

有效数据库查询语句

直接通过MySQL查询可获取目标数据,返回关联评论对应的post_id:

SELECT * FROM `wp_postmeta` AS M
WHERE M.meta_key = 'related_product'
AND M.meta_value LIKE '%{$productId}%';

核心问题

  1. 为什么Advanced Custom Fields中看不到用于设置双向关系的“高级”选项卡?若能设置双向字段,是否可解决当前问题?
  2. 若必须自行编写SQL查询获取产品关联评论,如何将上述MySQL语句转换为可运行的PHP代码?

更新1:替换字段键后仍无效

将meta_query参数中的字段名称替换为Advanced Custom Field键field_64d8fd0dfc04e后,查询仍返回所有reviews类型文章,推测get_posts可能忽略了meta_query参数值:

$productID = get_the_ID();
$args = [
    'post_type' => 'leirmheasanna',
    'meta_query' => [
        'key' => 'field_64d8fd0dfc04e',
        'value' => $productID 
    ]
];
$reviews = get_posts($args);

更新2:尝试WPDB查询无效

使用$wpdb编写的查询返回0条结果,推测是数据库中该字段存储的值并非仅包含产品ID,改用LIKE替代=后仍无效:

global $wpdb, $product;
$field_key = 'field_648f2aaff9f4b';
$reviews = $wpdb->get_results( $wpdb->prepare("
   SELECT * FROM {$wpdb->prefix}postmeta AS pm
   WHERE pm.meta_key = '%s'
   AND pm.meta_value = %d
   ", $field_key, $post->ID ));

更新3:最终有效的WPDB查询语法

找到了正确的$wpdb->get_results()查询写法,可成功获取产品关联的评论数据:

$column = 'related_product';
$value = '%'.get_the_ID().'%';

$reviews = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}postmeta AS pm
        WHERE pm.meta_key = '%s'
        AND pm.meta_value LIKE '%s'
        ", $column, $value));

内容的提问来源于stack exchange,提问作者Linda Keating

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:56:00