WPMLでget_postsを使った時に現在の言語の投稿のみ表示させる

WordPressの多言語化プラグインWPMLでget_posts()を使った時に、現在の言語の投稿のみ表示したい場合は

'suppress_filters'=> false

を設定します。

<?php
	$get_events = get_posts(array(
		'post_type' => 'events',
		'posts_per_page' => 5,
		'suppress_filters'=> false
		));
?>

上記で思い通りの処理ができない時の力技。
スマートでないのでオススメしない。

<?php
	global $wpdb;

	$wp_prefix = $wpdb->prefix;
	$wp_icl_translations = "${wp_prefix}icl_translations";
	if(defined('ICL_LANGUAGE_CODE')):
		$lang_code = ICL_LANGUAGE_CODE;
	else:
	$lang_code = 'ja';
	endif;

	//今の言語のカスタム投稿「events」の投稿取得
	$get_events = $wpdb->get_results( "SELECT * FROM $wpdb->posts LEFT JOIN $wp_icl_translations ON ".$wp_prefix."posts.ID = ".$wp_icl_translations.".element_id WHERE (post_type = 'events') AND post_status = 'publish' AND ".$wp_icl_translations.".language_code = '$lang_code' ORDER BY post_modified DESC limit 0,5");

	if($get_events):
		// var_dump($get_events);
		foreach($get_events as $post):
			setup_postdata($post);
			//何らかの処理
		endforeach;
		wp_reset_postdata();
	endif;

?>
B!

Comment

コメント(0)

コメントはまだありません。

コメントする

Trackback(0)