0

我在 WordPress 中创建了一个自定义端点,其中回调根据登录的用户 ID 调用一个函数来查询自定义表。因此,结果将特定于登录用户。

问题是,使用我当前的代码,如果我通过邮递员对我的本地站点进行 api 调用,它会返回空。

[] 

但是,如果我将查询中的 $id 变量换成一个数字,例如 11(它与用户 ID 匹配),它会起作用并且我会得到预期的结果。似乎数据在回调阶段丢失了。

我认为这可能与没有设置“权限回调”有关,但这似乎没有任何区别。任何人都可以解释一下吗?

function completed_peak() {
    
    $current_user = wp_get_current_user();
    $id    = esc_html( $current_user->ID );

    global $wpdb;
    $results = $wpdb->get_results("SELECT *
                                   FROM {$wpdb->prefix}custom_user_data
                                   WHERE user_id = $id",
                                   ARRAY_A
                                );
    return $results;
}

add_action( 'rest_api_init', 'user_completed_peaks');
function user_completed_peaks() {
    register_rest_route( 'wp/v2', '/custom_user_data', array(
        'methods' => 'GET',
        'callback' => 'completed_peak'
    ));
}
4

1 回答 1

0

试试这个:将 $id 放在 SELECT 语句中的引号中:'$id'。对我来说不合逻辑,但对于我的 SELECT 语句来说,这是可行的。例如:“SELECT `title` FROM `table` WHERE `title` = '$san_title_given'”

于 2021-04-17T19:02:34.707 回答