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