Проблема в том, что вы помещаете заполнитель %s
в одинарные кавычки.В этом нет необходимости, потому что WordPress заменит все экземпляры %s
на правильную строку, содержащую значение, которое вы передали методу prepare()
.
Итак, учитывая это, ваш код становится:
$sql = $wpdb->prepare(
"SELECT {$wpdb->users}.ID FROM {$wpdb->users}
WHERE {$wpdb->users}.user_registered <= %s
AND {$wpdb->usermeta}.meta_key='custom_status'
AND {$wpdb->usermeta}.meta_value=0
INNER JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID= {$wpdb->usermeta}.user_id", $before);
Кроме того, часть вашего запроса INNER JOIN ...
должна быть помещена перед предложением WHERE
, иначе MySQL выдаст недопустимую синтаксическую ошибку:
$sql = $wpdb->prepare(
"SELECT {$wpdb->users}.ID FROM {$wpdb->users}
INNER JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID= {$wpdb->usermeta}.user_id
WHERE {$wpdb->users}.user_registered <= %s
AND {$wpdb->usermeta}.meta_key='custom_status'
AND {$wpdb->usermeta}.meta_value=0", $before);