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

Wordpress WPML:wp_query()返回所有语言的帖子,而不仅仅是当前语言的帖子,wordpress,wpml,Wordpress,Wpml,无论我是从法语版本还是英语版本的页面使用它,wp_query()都会返回所有语言的自定义帖子类型,而不仅仅是当前语言。Get_posts()也做同样的事情 当我用法语访问我的页面时,我希望他们只返回当前语言的CPT。如何实现这一点?当使用获取帖子()时,将抑制过滤器设置为假: $myPosts = get_posts(array( 'suppress_filters' => false )); 这是我发现的使用WPML获取特定语言帖子的最佳方法 在我的情况下,我需要通过特定语言的

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


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

当使用获取帖子()时,将抑制过滤器设置为假:

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

这是我发现的使用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\u action('wpml\u set\u element\u language\u details',$set\u language\u args)

要连接您的语言帖子,无论是

icl\u对象\u id(1,'post',false,icl\u语言\u代码)

获取特定语言上帖子的ID