WordPress | 投稿一覧ページに記事毎の文字数を表示する方法

2023-02-21WordPress カスタマイズ,WordPress

WordPress | 投稿一覧ページに記事毎の文字数を表示する方法

WordPress管理画面での記事一覧ページに記事毎の文字数を取得して表示する方法を紹介しています。
SEOの為に文字数に拘る事はありませんが、一覧ページで記事の文字数がチェックできるのは何かと有用でもあります。

投稿一覧ページに記事毎の文字数を表示する

紹介する方法で投稿一覧ページに記事毎の文字数を表示した場合は以下のような表示になります。

投稿一覧に記事の文字数を表示
投稿一覧ページに記事毎の文字数を表示

この方法を実装するためには以下の手順を「functions.php」で追加します。

  1. 文字数表示用のカラム一覧を取得、追加する
  2. 文字数を取得して表示する

文字数表示用のカラム一覧を取得、追加する

manage_posts_columns()関数を使って投稿一覧ページのカラム一覧を取得、追加します。

// 文字数表示用のカラムを追加
add_filter('manage_posts_columns', function($columns) {
	$columns['count'] = "文字数";
	return $columns;
});

任意の新しい配列のキー名と値(表示時、カラムのタイトルになります)を設定します。
WordPress固有のキー名(author、categories 、tags、comments、date)とは重複しない様にして下さい。

文字数を取得して表示する

manage_posts_custom_column()関数にて追加したカラムの場合に記事本文を取得して文字数をカウント、表示します。
manage_posts_custom_column()関数は1ページに表示される記事の数だけループさせます。

// 文字数を取得して表示する
add_action('manage_posts_custom_column', function ($column_name, $post_id) {
	if ($column_name == 'count') {
		echo mb_strlen(str_replace(array("\r\n", "\r", "\n"), '', strip_tags(get_post($post_id)->post_content)), "UTF-8");
	}
});

上記サンプルコードはカウント部分を1行にまとめてしまっているので、そうでないバージョンも紹介しておきます。

// 文字数を取得して表示
add_action('manage_posts_custom_column', function ($column_name, $post_id) {
	if ($column_name == 'count') {
		$post_data = get_post($post_id); //投稿データ取得
		$content = $post_data->post_content; //本文取得
		$content = strip_tags($content); //HTMLタグ除去
		$content = str_replace(array("\r\n", "\r", "\n"), '', $content); //改行除去
		$content = mb_strlen($content, "UTF-8"); //文字数カウント
		echo $content;
	}
});

今回の目的は管理画面上の処理ですので、毎回文字数をカウントしていますが、もしサイト上に文字数を表示したい場合は、記事の投稿・更新時にカスタムフィールドを用意しておいて文字数を保管しておいて呼び出した方が軽量だと思います。

投稿ページで確認できる文字数と比較

このコードで表示される文字数はGutenbergの投稿ページで確認できる文字数と同じになりました。

関連:WordPress | Gutenbergで記事の文字数を確認する方法 | ONE NOTES