勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Polylangのスイッチャーでクエリ(GETパラメータ)を引き継ぐ方法

   2024/02/22  WordPress

WordPressで多言語サイトを作成するにあたりPolylangというプラグインを使用したところ、言語スイッチャーを切り替えた際にURLは切り替わるものの「tag=1」や「category=hoge」のようなクエリは引き継がれなかった。ダッシュボードの設定からはどうにもできなさそうだったので、プラグインファイルを編集することで解決した。以下に方法をメモ。

 

プラグインファイルに追記

スイッチャー用ファイル(/plugins/polylang/include/switcher.php)の190行目あたりに以下を追記する。

foreach ( $links->model->get_languages_list() as $language ) {
    /*ここから追記箇所*/
    $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_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/

 

まとめ

プラグインのスイッチャー用ファイルを編集することでクエリを引き継いだ上で、言語変更が行える。尚、プラグインをアップデートした場合は再度書き換えの必要が出てくると思われるのでその点注意する。

 - WordPress

  関連記事

WordPressでテーマファイル内で共通の変数を設定及び使用する方法

WordPressでテーマ内の共通変数を設定し使用したかった。例えば記事一覧ペー ...

XML-RPCライブラリを利用してWordPressを外部サーバから投稿する方法

WordPressをダッシュボードからではなく、外部サーバのプログラムから投稿し ...

WordPressで複数あるクリック広告をランダムで表示させる方法

同じクリック広告をずっと貼っているとクリック単価が下がると聞いた。WordPre ...

PHP8系で「Warning: Attempt to read property "xxxxxx" 」エラーの対応方法

PHP8系&WordPress6.4.3で「Warning: Attem ...

WordPressでスケジュール実行される日時を調べる方法

WordPressであるシステムを実装し、その際に毎日1回スケジュール実行(WP ...