通过 $wpdb 获取所有帖子的元值

Posted

技术标签:

【中文标题】通过 $wpdb 获取所有帖子的元值【英文标题】:Get Meta Value for all Posts via $wpdb 【发布时间】:2015-08-22 07:52:15 【问题描述】:

我编写了一个函数,它应该为您提供所有帖子的元键值。我不确定为什么我的查询不起作用。当我var_dump 查询时,它给了我一个空的array 作为输出。元键的值存储在array中,所以我使用unserializemysql数组转换为php数组。

函数

function wp_postquiz_total_completed_quizes_by_user( ) 

    global $wpdb;

    $mylink = $wpdb->get_results("
                        SELECT $wpdb->postmeta.meta_value * 
                        FROM $wpdb->postmeta 
                        WHERE $wpdb->postmeta.meta_key = '_pq_users_answered_quiz_on_post'",
                        ARRAY_A);


    $array = unserialize($mylink);

    return $array;

【问题讨论】:

【参考方案1】:

SELECT 子句中有语法错误:

SELECT $wpdb->postmeta.meta_value *

看起来您正在尝试选择 meta_value 和“所有内容”,即使 meta_value 包含在 * 中。做一个或另一个:

SELECT $wpdb->postmeta.meta_value

SELECT *

如果meta_value 是您唯一感兴趣的字段,那么第一个字段就是要走的路。为了将来参考,你可以通过调用得到任何 SQL 错误:

$wpdb->print_error();

【讨论】:

感谢@mtinsley 的解决方案。最后一个问题,我也不想获得带有元值的帖子 ID。我正在尝试添加LEFT JOIN,但它似乎不起作用。我修改了这个SELECT $wpdb->postmeta.meta_value, $wpdb->postmeta.post_id 并添加了LEFT JOIN $wpdb->postmeta.post_id 帖子 ID 已经在 postmeta 行中。你的意思是你想得到帖子(不仅仅是ID)?如果是这样,您可能希望将WP_Query 与元查询一起使用。如果您遇到困难,请创建另一个问题。 刚刚创建了一个新问题,如果您能帮我解决这个问题,我将非常感谢。谢谢。 Question

以上是关于通过 $wpdb 获取所有帖子的元值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 ACF 字段的元值(wordpress)?

删除所有 skus woocommerce

wordpress通过$wpdb获取一个分类下所有的文章

查询所有wordpress帖子标题

Wordpress 自定义 SQL 以获取三个具有给定元值的帖子

显示具有自定义日期元值的wordpress文章,按此日期排序,并具有定义的分类法