WordPressで記事・固定ページ毎にDescriptionとKeywordsを設定出来るプラグインを開発致しました。
既に巷に出回っていますが、綺麗にViewとロジックが分離されている物が無かった為、新たに作成しております。
description-and-keyword.zip

主な特徴

Descriptionとキーワードが設定されている記事・投稿のみmetaタグが表示されます。
特に指定されていない場合はタグ自体出力されません。

PHP5.4以降の対応となります。
PHP5.3をお使いの方は既にサポート終了しているので、早急にアップグレードを推奨致します。

以下にソースを提示しますので、出元不明なプラグインを入れる事が心配な方は
ご自身でプラグイン化してインストールされると良いかと思います。
※全て同じディレクトリに配置して下さい。

description-and-keyword.php

プラグインの本体ファイルです。

<?php
/*
Plugin Name: Description And Keyword
Plugin URI:  http://www.axesor.co.jp/others/description-and-keyword
Description: 記事ページと固定ページ毎にDescriptionとKeywordを設定する
Author: 株式会社AXESOR
Version: 0.1
Author URI: https://www.axesor.co.jp
*/
class DescriptionAndKeyword {


	public function __construct()
	{
		add_filter("wp_head", [$this, "showInHeader"]);
		add_action('admin_menu', [$this, "adminMenuCallBack"]);
		add_action('save_post', [$this, "savePostCallBack"]);
	}


	public function adminMenuCallBack()
	{
		add_meta_box(__CLASS__, "DescriptionとKeyword", [$this, "showCustomField"], "post");
		add_meta_box(__CLASS__, "DescriptionとKeyword", [$this, "showCustomField"], "page");
	}


	public function savePostCallBack($postId)
	{
		foreach (["keyword", "description"] as $key)
		{
			update_post_meta($postId, $key, $_POST[$key]);
		}
	}


	public function showCustomField()
	{
		require_once("edit-form.php");
	}


	public function showInHeader()
	{
		require_once("in-header.php");
	}

}
new DescriptionAndKeyword();

edit-form.php

投稿画面にカスタムフィールドを表示させます。

<div>▼キーワード入力</div>
<div>
  <input type="text" name="keyword" value="<?php echo esc_html(get_post_meta(get_the_ID(), 'keyword', true)); ?>" />
</div>
<div>▼ディスクリプション入力</div>
<div>
  <input type="text" name="description" value="<?php echo esc_html(get_post_meta(get_the_ID(), 'description', true)); ?>" />
</div>
<style>
#DescriptionAndKeyword input {
  padding: 3px 8px;
  font-size: 1.7em;
  line-height: 100%;
  height: 1.7em;
  width: 100%;
  outline: 0;
  margin: 0 0 3px;
  background-color: #ffe;
}
</style>

in-header.php

実際にmetaタグを表示させる処理です。

<?php
$custom = get_post_custom();
?>
<?php if (strlen($custom['description'][0]) > 0){ ?>
  <meta name="description" content="<?php echo $custom['description'][0]; ?>" />
<?php } ?>
<?php if (strlen($custom['keyword'][0]) > 0){ ?>
  <meta name="keywords" content="<?php echo $custom['keyword'][0]; ?>" />
<?php } ?>

Githubにもコードは公開しています。
https://github.com/AXESOR/description-and-keyword