Algoliaにインポートする記事のURLを任意の値に書き換える

Algoliaという便利な検索エンジンサービスがあるのですが、素晴らしいことにWordPressとの連携プラグインなんてものまで出ています。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-28-15-52-26

この連携プラグインをWordPressに入れておけば、WordPressの記事をAlgoliaの検索エンジンで検索できるようになります。

ただ、たまにWordPress管理画面のドメインと公開されているwebサイトのURLが違う場合があるのですが、その場合のAlgoliaの検索結果は管理画面のドメインの方になってしまいます。

ということでAlgoliaにインデックスさせる前にURLを書き換えてしまいましょう。

add_filter( 'algolia_post_shared_attributes', 'replace_algolia_link', 10, 1 );
function replace_algolia_link(  $shared_attributes ){
	$replaced_domain = 'REPLACED_DOMAIN';
	$url = $shared_attributes['permalink'];
	$parsed_url = parse_url( $url );
	$replace_target = $parsed_url['host'];
	if ( isset( $parsed_url['port'] ) && $parsed_url['port'] ) {
		$replace_target .= ":{$parsed_url['port']}";
	}
	$shared_attributes['permalink'] = preg_replace( "#{$replace_target}#i", $replaced_domain, $url );
	return $shared_attributes;
}

3行目の$replaced_domain = 'REPLACED_DOMAIN';の部分に変更したいドメインを設定してください。(例:example.com

このコードをmu-pluginsあたりに仕込んでおくことで、以下の画像のようにパーマリンクを任意の値に書き換えてAlgoliaへインデックスさせることができます。

hosted_cloud_search_as_a_service___algolia

このあたり管理画面からカスタマイズできたりしたら便利かなとは思いますが、個別に対応できる範囲内であればこのコードでとりあえず事足りるかと思います。

Follow me!

Okamoto Hidetaka
デジタルキューブのインフラエンジニア。勉強会に和太鼓の練習から直行することが多く「太鼓の人」とかよばれてます。 思いつきで公式ディレクトリにテーマやプラグインをアップしたりテーマレビューやったりしています。 AWS / WordPress / LinkedOpenData周りで活動していて、APIをどうこうして何か作るというのが多いです。 ひとこと
mautic is open source marketing automation