Using WordPress ‘determine_current_user’ PHP filter

The determine_current_user WordPress PHP filter allows you to modify or determine the current user based on the request’s cookies.

Usage

add_filter('determine_current_user', 'your_custom_function', 10, 1);

function your_custom_function($user_id) {
    // your custom code here
    return $user_id;
}

Parameters

  • $user_id (int|false): User ID if one has been determined, false otherwise.

More information

See WordPress Developer Resources: determine_current_user

Examples

Modify user ID based on a custom condition

In this example, we’ll set the user ID to 42 if a custom condition is met.

add_filter('determine_current_user', 'change_user_id_based_on_condition', 10, 1);

function change_user_id_based_on_condition($user_id) {
    if (your_custom_condition()) {
        $user_id = 42;
    }
    return $user_id;
}

Prevent user login based on IP address

In this example, we’ll prevent users from logging in if their IP address is in a list of blocked IPs.

add_filter('determine_current_user', 'block_users_from_ip', 10, 1);

function block_users_from_ip($user_id) {
    $blocked_ips = array('192.168.0.1', '192.168.0.2');
    if (in_array($_SERVER['REMOTE_ADDR'], $blocked_ips)) {
        return false;
    }
    return $user_id;
}

Set current user based on a custom authentication system

In this example, we’ll use a custom authentication system to set the current user.

add_filter('determine_current_user', 'set_user_based_on_custom_auth', 10, 1);

function set_user_based_on_custom_auth($user_id) {
    $user_id_from_custom_auth = get_user_id_from_custom_auth();
    if ($user_id_from_custom_auth) {
        return $user_id_from_custom_auth;
    }
    return $user_id;
}

Allow guest users to be treated as a specific user

In this example, we’ll set a specific user ID for guests visiting the site.

add_filter('determine_current_user', 'set_guest_user_id', 10, 1);

function set_guest_user_id($user_id) {
    if (!$user_id) {
        return 42; // Set user ID to 42 for guest users
    }
    return $user_id;
}

Override user ID based on query parameter

In this example, we’ll override the user ID based on a query parameter in the URL.

add_filter('determine_current_user', 'override_user_id_with_query_parameter', 10, 1);

function override_user_id_with_query_parameter($user_id) {
    if (isset($_GET['override_user_id']) && is_numeric($_GET['override_user_id'])) {
        return (int)$_GET['override_user_id'];
    }
    return $user_id;
}