WP 関連記事表示用プラグイン「Contextual Related Posts」の表示をフルカスタマイズする

wordpressの関連記事表示用プラグイン「Contextual Related Posts」。
プラグインの設定画面で、ある程度表示をカスタマイズできるが、フルカスタマイズする方法がある。
'crp_custom_template' フィルタを利用すればよい。

↓これをfunction.php に書く。

//ブログ記事の関連情報 カスタムテンプレート設定(プラグイン用)
function __crp_custom_template($dmy=null, $posts=[], $args=[]){
	//$ret = '';
	$ret = ' ';		//●空の場合、filterの後、抜けずにプラグインのdefaultの処理に進んでしまうため、空白とする(2020.1)
	if ( $posts ) {
		$i = 0;
		foreach ($posts as $_post) {
			$obj = get_post( $_post->ID );	//記事を取得する
			//色々加工する
			$ret .= '<div class="hogehoge">' . $obj->post_title . '</div>';
			$i++;
			if ($i >= 3) {	//3記事で終わる
				break;
			}
		}
	}
	return $ret;
}
add_filter( 'crp_custom_template', '__crp_custom_template', 10, 3 );

パラメタの $posts には、IDと日付だったか、を持つpostオブジェクトが入っている。
$args には、プラグインの設定値が入っているので、必要に応じて使うことができる。

フィルタの適用箇所は、プラグインのソースの以下にある。
/contextual-related-posts/includes/main-query.php

function get_crp( $args = array() ) {
	:
	$custom_template = apply_filters( 'crp_custom_template', null, $results, $args );

●2020.1 追記
該当記事がゼロの時、空白を返すようにした。filterの後、そこで抜けずにプラグインのdefaultの処理に進んでしまうため。(そしてプラグイン側でエラーが出る)
空白が出力されて困る場合は、trim後の文字長で空かどうかを判定し、空でない場合のみ出力する。

if ( function_exists( 'echo_crp' ) ) { 
	$ret = get_crp(['echo'=>false]);
	if (strlen(trim($ret)) > 0) {
		echo $ret;
	}
}