php - wpdb - 添加特定类别中自定义字段的值

标签 php wordpress

我有一个名为“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/

相关文章:

php - 写入 csv 文件时转义分号字符

php - 具有数据库读/写功能的 PHP 骰子滚子

mysql - WordPress 到 ftp 没有 mysql 数据库

尽管错误报告被关闭,PHP 警告

wordpress - 增加 Wordpress WXR (.xml) 导入最大文件大小?

php - 在 if 条件下更改全局变量值,然后在 else 中访问该值

php - GD 绘制带半径的矩形

php - mysql 数据库结构 - 数据仅与每个用户相关,因此用户表?

mysql - 无法通过 PHPmyAdmin 导入 Wordpress 数据库 - 无法通过插件执行迁移

php - 如何在其原始单列中显示第一篇文章,并在两列中显示所有其他文章? WordPress的