WordPress Snippet

ワードプレスをカスタマイズしよう

投稿本文の指定した段落の後にコンテンツを差し込む

以下のコードは、投稿本文の指定した段落の後に、ウィジェットを差し込むというものですが、少し変更すると広告等のコンテンツを自動的に差し込むことが出来るようになります。

functions.php

add_filter( 'the_content', 'my_content_filter', 11 );

function my_content_filter( $return_value ) {
	
	$num_p= 2;// 何番目の段落に差し込むか指定します
	
	$return_array= explode( '</p>', trim( $return_value ) );

	$result= '';
	
	foreach( $return_array as $key=> $val ) {
		
		if( $key + 1== $num_p && !empty( $val ) ) { // 段落数調整
			
			$result .= $val.'</p><!--WP_Widget_Calendar-->';//置換ウィジェットをここで指定します。
		}else{
			$result .= $val.'</p>';
		}
	}
	$result= preg_replace_callback( ' |<!--([^-]+)--> |', 'my_get_the_widget', $result, 1, $count );
	if ( $count== 1 ) {

		return $result;
	}
	return $return_value;
}

function my_get_the_widget( $matches ) {

	$names= array(
		"WP_Widget_Archives",
		"WP_Widget_Calendar",
		"WP_Widget_Categories",
		"WP_Widget_Links",
		"WP_Widget_Meta",
		"WP_Widget_Pages",
		"WP_Widget_Recent_Comments",
		"WP_Widget_Recent_Posts",
		"WP_Widget_RSS",
		"WP_Widget_Search",
		"WP_Widget_Tag_Cloud"
	);
	if ( isset( $matches[1] ) && array_search( $matches[1], $names ) !== false ) {
		ob_start();
		the_widget( wp_kses($matches[1], array() ) );
		$out= ob_get_clean();
	}

	return $out;
}

[emulsion_relate_posts]