勉強したことのメモ

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

Polylangのスイッチャーとページャーの組み合わせ方法

   2024/02/22  WordPress

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/

 

まとめ

プラグインファイルに追記することで対応が可能。尚、前回と同様プラグインをアップデートした場合は書き換えの必要が出てくると思われるので注意する。

 - WordPress

  関連記事

他所のサーバからWordPressの記事情報をpostIDを指定して取得する方法

他所のサーバからWPの記事IDを指定した上で、当該IDのタイトル・アイキャッチ画 ...

WordPressで画像にカテゴリを設定し、記事投稿の際の画像選択時に指定したカテゴリの画像のみ表示させる方法

WordPressのメディアライブラリに画像を沢山登録していると、記事投稿の際の ...

CSVファイルをアップロードしてWordPressに記事を投稿する方法

CSVファイルをアップロードすることでWordPressに記事を投稿したかった。 ...

WordPressで連載(シリーズ)記事機能を「Series」プラグインで実装する方法

WordPressで連載(シリーズ)記事機能を実装したい。例えば「PHPでBBS ...

WordPressで翌日以降に編集した記事のみ最終更新日を表示する方法

WordPressで翌日以降に編集した記事のみ最終更新日を表示させたい。逆に言う ...