Got 2 functions : gengo_get_cat_intro & gengo_id_from_mk. gengo_cat_intro calls gengo_id_cat. An ID should be returned. The problem is that : -gengo_cat_intro "launches" gengo_id_from_mk. It works because it echoes 477. But the line after; I return this ID to use it back in gengo_get_cat_intro; and there, it tells me $intro_id does not exists !!! Did I miss something ? THanks ! function gengo_id_from_mk($meta_key,$meta_value,$langcode='',$takeback='0') { global $gengo, $wpdb; $gengo_default_id = $gengo->blog_default_language_id; $gengo_current_id = implode(',', $gengo->language_preference_id); if ((empty($meta_key)) || (empty($meta_value))) { return; } if (empty($langcode)) { $langsearch = $gengo_current_id; } else { $langsearch = $langcode; } $now = current_time('mysql'); $query="SELECT ID FROM wp_posts AS posts INNER JOIN wp_post2lang AS post2lang ON posts.ID=post2lang.post_id INNER JOIN wp_postmeta AS postmeta ON posts.ID=postmeta.post_id WHERE posts.post_status = 'publish' AND posts.post_date <= '$now' AND post2lang.language_id IN ($langsearch) AND postmeta.meta_key = '$meta_key' AND postmeta.meta_value = '$meta_value'"; $id = $wpdb->get_var($query); if ($id) { echo $id; //OUTPUTS 477 return $id; } else { if ((empty($langcode)) && ($takeback=='1')) { gengo_id_from_mk($meta_key,$meta_value,$gengo_default_id); } } } function gengo_get_cat_intro($cat) { global $wpdb; $intro_id = gengo_id_from_mk('intro_cat',$cat,'',1); if ($intro_id) { echo 'success'; } else { echo 'failure'; }