ページや記事の一覧からショートコードタグを除く

ページや記事の一覧表示をする時に、
  文章文章文章文章[ショートコード] 文章…

  文章文章文章文章文章…
にする。

テーマのfunctions.phpなどに以下と追加

function remove_shortcode ($a) {
// パラメータ$aは表示する文字数
	if(has_excerpt()) {

		$base_content = strip_shortcodes(get_the_excerpt());
		$base_content = str_replace(array("\r\n", "\r", "\n"), "", $base_content);
		$trim_content = mb_substr($base_content, 0, $a ,"utf-8");

	} else {

		$base_content = strip_shortcodes(get_the_content());
		$base_content = preg_replace('!<style.*?>.*?</style.*?>!is', '', $base_content);
		$base_content = preg_replace('!<script.*?>.*?</script.*?>!is', '', $base_content);
		$base_content = strip_tags($base_content);
		$trim_content = mb_substr($base_content, 0, $a ,"utf-8");
		$trim_content = mb_ereg_replace('&nbsp;', '', $trim_content);

	};

	echo $trim_content . '…';
}

使用例
archive.phpなど一覧を表示するテンプレートのループに

<?php if ( have_posts() ) : ?>;
<p><a href="<?php the_permalink(); ?>">
<?php 
if (has_excerpt()) { 
	the_excerpt(); 
} else {
	function_exists('remove_shortcode')) {
		remove_shortcode(150);
	}else{
		the_excerpt();
	}
} 
?></a></p>
<?php endif; ?>

本サイトのトップページでも使用しています。

コメントを残す

メールアドレスが公開されることはありません。