我有一个名为“points”的自定义字段。这是一个数值,所以有些帖子有2分,有些有10分,等等。
我想计算给定类别中所有具有自定义字段“cf_Category”且值为“章节构建”的帖子的“点数”总数
因此,也许查询类别 X 中的所有帖子,其元键“cf_Category”的值为“Chapter Building”,然后将元键“Points”的值相加,然后回显该数字。
这有道理吗?我可以将所有帖子的所有分数相加,但无法将其限制为一个类别。
提前致谢!
最佳答案
听起来您需要一个子查询。在 SQL 中,您需要这样的东西:
SELECT sum(meta_value) from wp_postmeta
WHERE meta_key = "points"
AND post_id in (SELECT object_id from wp_term_relationships
WHERE term_taxonomy_id = 6)
AND post_id in (SELECT post_id from wp_postmeta
WHERE meta_key = "cf_Category" and meta_value = "Chapter Building")
内部查询将返回分类法中 ID 为 6 的 post_ids 列表。然后,这些帖子 ID 将用作对点字段求和的查询的条件。
仅供引用,wp_term_relationships 表中的 object_id 字段通常与帖子的 ID 相同,并且该表中的 term_taxonomy_id 通常与 term_id 相同。如果您不知道某个类别或标签的 term_id,您可以在编辑该类别时通过查看页面的 URL 来找到它;它作为一个名为“tag_ID”的参数存在。
如果您不熟悉在 Wordpress 中编写自定义 SQL 查询,the Codex has some details.您需要使用 $wpdb->prepare()。
每个OP的最终代码
<?php
$meta_key = 'cf_PointValue';
$point_total = $wpdb->get_var( $wpdb->prepare(
"
SELECT sum(meta_value) from wp_postmeta
WHERE meta_key = %s
AND post_id in (SELECT object_id from wp_term_relationships
WHERE term_taxonomy_id = 17)
AND post_id in (SELECT post_id from wp_postmeta
WHERE meta_key = 'cf_Category' and meta_value = 'Chapter Building')",
$meta_key
) );
echo $point_total;
?>
关于php - wpdb - 添加特定类别中自定义字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30898683/