勉強したことのメモ

webプログラマが勉強したことのメモ。

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

   

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/?p=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

  関連記事

ACFでセレクトメニューを動的に生成

WordPressでカスタムフィールド設定用のプラグインAdvanced Cus ...

WordPressのxmlrpc.phpへの攻撃

サーバーの死活監視をしているシステムから、1つのサイトが落ちているとアラートがき ...

WordPressにてフッターへ出現する笑顔マーク(smiley)を見えなくする方法

■やりたい事 WordPressにて左下へ勝手に出現する笑顔マーク(smiley ...

WordPressでタグやカテゴリの複数検索

WordPressでカテゴリのアンド検索や、タグとカテゴリの同時検索を行いたかっ ...

WordPressで「データベース接続確立のエラー」

WordPressで設定ファイル(wp-config.php)は触っていないのに ...

WordPressサイトのロードアベレージが高い

あるWordPressサイトのロードアベレージが先月ぐらいまでは通常0.5前後で ...

WordPressで記事検索時に投稿ID順にならない場合

WordPressでサイト上から記事検索を行った場合、通常であれば投稿IDが新し ...

WordPressにインスタグラムの画像を表示

WordPressにインスタグラムへ投稿している画像を表示させたかった。プラグイ ...

contact form7で送信時に別サーバへデータ送信

contact form7でフォーム送信時に別サーバーでフォーム内容をPOST送 ...

WordPressで複数のカテゴリーを取得する

WordPressで1つの記事に対して複数カテゴリを設定していた場合、テーマによ ...