Polylangのスイッチャーとページャーの組み合わせ方法
2024/02/22
WordPressで多言語サイトを作成するにあたりPolylangというプラグインを使用したところ、言語スイッチャーを切り替えた際にURLは切り替わるものの「page/2」のようなページャー情報は引き継げなかった。以下に対応方法をメモ。
プラグインファイルを編集
スイッチャー用ファイル(/plugins/polylang/include/switcher.php)の190行目あたりに以下を追記する。
foreach ( $links->model->get_languages_list() as $language ) { $tmp_page = (int)get_query_var('paged'); $tmp_page_query = ''; if( $tmp_page ){ $tmp_page_query = '/page/'.$tmp_page; } $url = $links->get_translation_url( $language ) . $tmp_page_query; $urls[ $language->slug ] = $args['force_home'] || empty( $url ) ? $links->get_home_url( $language ) : $url; }
また、以前以下記事で「tag=1」や「category=hoge」のようなクエリを引き継ぐ方法をメモした。
https://taitan916.info/blog/archives/2897
上記クエリとあわせてページャー情報も引き継ぐ場合は以下のように追記する。
foreach ( $links->model->get_languages_list() as $language ) { $tmp_page = (int)get_query_var('paged'); $tmp_page_query = ''; if( $tmp_page ){ $tmp_page_query = '/page/'.$tmp_page; } $tmp_query = ''; if( $_GET['category'] ){ $tmp_query = '?category=' . $_GET['category']; } if( $_GET['tag'] ){ $tmp_query = '?tag=' . $_GET['tag']; } $url = $links->get_translation_url( $language ) . $tmp_page_query . $tmp_query; $urls[ $language->slug ] = $args['force_home'] || empty( $url ) ? $links->get_home_url( $language ) : $url; }
プラグインのバージョン
使用中のバージョンは2.3.4になる。また、プラグインは以下の通り。
https://ja.wordpress.org/plugins/polylang/
まとめ
プラグインファイルに追記することで対応が可能。尚、前回と同様プラグインをアップデートした場合は書き換えの必要が出てくると思われるので注意する。
関連記事
-
wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法
WordPress内に設置されたお問い合わせのフォームようなシステムでエンベロー ...
-
WordPressにてAdvanced Custom Fieldsを用いて連載(シリーズ)記事機能を実装する方法
先日「Series」プラグインで連載(シリーズ)記事機能の実装方法をメモしたが、 ...
-
WordPressの記事公開・更新時に何らかの処理を行う方法
WordPressで記事を公開(予約公開含む)もしくは更新した際に何らかの処理を ...
-
WordPressのPolylangで言語毎に分岐処理する方法
WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...
-
WordPressでサイト及びサーバ内ファイルが改ざんされた際の対処方法
WordPressで立ち上げたサイトがあり、しばらく放置していたが久しぶりにチェ ...