WPML:wp_query()返回所有语言的帖子,而不仅仅是当前的语言

时间:2015-03-03 23:43:19

标签: wp-query wpml

无论我是在法语版还是英文版的页面中使用它,wp_query()都会返回所有语言的自定义帖子类型,而不仅仅是当前版本。 Get_posts()也做同样的事情。

当我用法语访问我的页面时,我希望他们只返回当前语言的CPT。如何实现?

2 个答案:

答案 0 :(得分:1)

使用 get_posts()时,将 suppress_filters 设置为 false

$myPosts = get_posts(array(
    'suppress_filters' => false
));

http://codex.wordpress.org/Function_Reference/get_posts#Parameters

答案 1 :(得分:0)

这是我发现使用WPML提取特定语言帖子的最佳方式...

就我而言,我需要按特定语言的标题查找帖子,并返回帖子的ID:

$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;
    }

您可以使用$ wp_query-> post作为获取的结果,并进行标题,内容等的回显。

这样,您无需使用

do_action( 'wpml_set_element_language_details', $set_language_args );

关联您的语言帖子,

icl_object_id(1,'post',false,ICL_LANGUAGE_CODE);

获取特定languange上帖子的ID。