WPML: wp_query() returns posts in all languages rather than just current one
When using get_posts(), set suppress_filters to false:
$myPosts = get_posts(array( 'suppress_filters' => false));
http://codex.wordpress.org/Function_Reference/get_posts#Parameters
That's the best way I found to fetch posts on a specific language using WPML...
In my case I need to find a post by it's title on a specific language and return the ID of the post:
$lang='en';$title='The title you are searching!'; function getWpIdByTitle($title, $lang){ global $sitepress; // WPML Super power language switcher... $sitepress->switch_lang( $lang ); $args = array( 'title' => $title, 'post_type' => 'your-post-type', // Default: post 'post_status' => 'publish', 'suppress_filters' => false, 'numberposts' => 1 ); $wp_query = new WP_Query( $args ); return $wp_query->post->ID; }
You may use the $wp_query->post as the result of the fetch and do the echo's of title, content, etc.
This way you don't need to use the
do_action( 'wpml_set_element_language_details', $set_language_args );
to connect your language posts, neither the
icl_object_id(1,'post',false,ICL_LANGUAGE_CODE);
to get the ID of a post on a specific languange.