Not sure what you’re collecting from the database and what kind of query you want to do to acheive that but I set a cookie the other day by putting some simple functions in my functions file. Basically when a user first comes to this site, a multi language site, it ask which language you want. Then, it sets a cookie so you don’t have to be asked again and redirects you to the languages homepage.
This function set the cookie:
function site_set_user_language() {
if(!isset($_COOKIE['site_language'])){
setcookie('site_language', 'en', time() + (86400 * 7));
} elseif (is_page('esp')){
setcookie('site_language', 'esp', time() + (86400 * 7));
} elseif (is_page('fr')){
setcookie('site_language', 'fr', time() + (86400 * 7));
} elseif (is_page('en')){
setcookie('site_language', 'en', time() + (86400 * 7));
}
}
add_action( 'wp', 'site_set_user_language',10,1);
Then this function checked the cookie and redirected:
function site_lang_home_redirect()
{
if( is_front_page() ){
$value = $_COOKIE['site_language'];
if($value == 'esp') {
wp_redirect( get_bloginfo('url') . '/esp');
exit();
} elseif($value == 'fr') {
wp_redirect( get_bloginfo('url') . '/fr');
exit();
} elseif(is_page('en')) {
wp_redirect( get_bloginfo('url'));
exit();
}
}
}
add_action( 'template_redirect', 'site_lang_home_redirect',9 );