WPML: wp_query() returns posts in all languages rather than just current one WPML: wp_query() returns posts in all languages rather than just current one wordpress wordpress

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.