qtranslate の投稿を言語ごとに分ける

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

公式には開発終了している多言語プラグインqtranslate を使用中止して言語別に表示、あるいは投稿を別に作成するタイプのプラグインに移行する準備として。

多言語プラグインのqtranslate、後継のqtranslate-xt は言語タブ切り替えで投稿を作成するようになっていて、プラグインを無効にすると、投稿は
*日本語と英語の場合、
[:ja]日本語の投稿[:en]英語の投稿[:] のようになっている。

これをAdvanced Custom Fields で用意した各言語用のフィールドに分けて保存したい。

$content = get_the_content($post_id);
$sep1 = "[:ja]";
$sep2 = "[:en]";
$start = strpos($content, $sep1) + strlen($sep1);
$end = strpos($content, $sep2) - $start;
$value = substr($content, $start, $end );

のようにして、acf/load_value で値をロードできるので、更新して保存できる。
投稿を言語ごとにフィールドを分け、PHPでブラウザの言語で表示することも可能。

保存後は、ACFでタブを付けると↓のような表示も可能

qtranslate タグの投稿

qtranslate の投稿を言語ごとに分ける・その2

qtranslate からpolylang への移行を試す

その他のAdvanced Custom Fields に関する記事一覧

Advanced Custom Fields に関する記事一覧ページへ