微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Wordpress中根据动态meta_key值进行meta_query?

如何解决如何在Wordpress中根据动态meta_key值进行meta_query?

我正在尝试使用get_users函数列出一些用户

我使用的在线学习插件用户元数据中的一些数据另存为Course_COURSEID_access_from。例如;如果课程ID为123,则元数据另存为:course_123_access_from。此元数据的值是一个时间戳。例如; 1600724678。

break

但是我没有任何结果。我在哪里犯错了?

如何基于动态Meta_keys查询wordpress元数据?

解决方法

尝试此代码:

<?php
function filter_request_sql_where($where)
{
    if (strpos($where,"meta_key = 'course_$_access_from")) {
        $where = str_replace("meta_key = 'course_$_access_from","meta_key LIKE 'course_%_access_from",$where);
    }
    return $where;
}

add_filter('posts_where','filter_request_sql_where');

// First day of the month.
$first_day = strtotime(date('Y-m-01'));
// Last day of the month.
$last_day = strtotime(date('Y-m-t'));

$args = array(
    'fields' => 'ID','role' => 'customer','meta_query' => array(
        'relation' => 'AND',array(
            'key' => 'course_$_access_from','value' => array($first_day,$last_day),'type' => 'numeric','compare' => 'BETWEEN'
        ),)
);
$users = get_users($args);
,

基于Fabien的答案,我意识到我可以使用自定义SQL查询解决此问题。我创建了以下SQL查询:

global $wpdb;
$user_ids = $wpdb->get_results( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key LIKE 'course_%_access_from' AND meta_value > $first_day AND meta_value < $last_day" );,

感谢法比恩。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。