勉強したことのメモ

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

Polylangのスイッチャーでクエリを引き継ぐ

   

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で記事検索時に投稿ID順にならない場合

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

さくらvpsにワードプレスを導入

さくらvpsで立ち上げたサーバーにWordPressを導入した際のメモ。 ①ダウ ...

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

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

WordPressを4.8.2にして不具合

WordPressを4.8.2にすると記事の新規追加時にウィジウィグの挙動がおか ...

contact form7で500エラー

WordPressプラグインのcontact form7で送信ボタンを押し、ロー ...

WordPressのxmlrpc.phpへの攻撃

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

WordPressを外部サーバから投稿する方法

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

WordPressにてACFで設定したカスタムフィールドの値を元に記事を並べ替える方法

WordPressにてAdvanced Custom Fieldsで設定したカス ...

WordPressを停止しないままサーバ移設する方法

WordPressを設置しているサーバのリソースがそろそろ危ういので移設を検討す ...

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

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