目次
固定ページのdescriptionは、[設定]>[一般]のキャッチフレーズをdescriptionじゃなくて、個別にしたい。
functions.phpにこれを足します。
//-----------------------------------------
// 投稿・固定ページ カスタムフィールド追加
//-----------------------------------------
add_action('admin_menu', 'add_custom_fields');
add_action('save_post', 'save_custom_fields');
function add_custom_fields() {
// add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'post');
add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'page');
}
//-----------------------------------------
// カスタムフィールド表示
//-----------------------------------------
function my_custom_fields() {
global $post;
$description = get_post_meta($post->ID,'description',true);
echo '<p>description<br />';
echo '<input type="text" name="description" value="'.esc_html($description).'" size="50" /></p>';
}
//-----------------------------------------
// カスタムフィールドの値を保存
//-----------------------------------------
function save_custom_fields( $post_id ) {
if(!empty($_POST['description']))
update_post_meta($post_id, 'description', $_POST['description'] );
else delete_post_meta($post_id, 'description');
}
//-----------------------------------------
// ページ毎のmata要素とtitleの設定
//-----------------------------------------
function MataTitle() {
// カスタムフィールドの値を読み込む
$custom = get_post_custom();
if(!empty( $custom['description'][0])) {
$description = $custom['description'][0];
}
?>
<?php if(is_home()): // トップページ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php elseif(is_single()): // シングルページ ?>
<meta name="description" content="<?php bloginfo('description'); ?>">
<?php elseif(is_page()): // 固定ページ ?>
<meta name="description" content="<?php echo $description ?>">
<?php elseif (is_category()): // カテゴリーページ ?>
<meta name="description" content="<?php single_cat_title(); ?>の記事一覧" />
<?php elseif (is_tag()): // タグページ ?>
<meta name="description" content="<?php single_tag_title("", true); ?>の記事一覧" />
<?php elseif(is_404()): // 404ページ ?>
<meta name="robots" content="noindex, follow" />
<?php else: // その他ページ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php endif; ?>
<?php
}
トップページ、シングルページ(投稿)などは[設定]からいれられるキャッチフレーズ、固定ページにはカスタムフィールドに入力したdescription文を出す。というもの。
そして、meta情報を入れるあたり(header.php)に
<?php MataTitle(); ?>
これを入れる。
コメント
コメント一覧 (2件)
deep-space.blue さま
初めまして。こんにちは。ヤマダと申します。宜しくお願いします。
貴サイトのこの記事のように、
ページごとに、metaタグを設定したいです。
当方は、
TwentySixteenのテーマでやっています。
サイト作成し、約3年経って気づきました。
descriptionが重複しているんです。
カスタム投稿するプラグインを入れています。
そのプラグインと、「All in One SEO」で、
重複したmetaタグ(keyword、description)を、出してしまっています。
※「All in One SEO」を外そうと考えています。
(サイトマップは、「All in One SEO」の設定でdisableに。
「XML Sitemaps」を本日付けで代用しました)
記事(post_type=”post”)と、
固定ページ(post_type=”page”)については、
現状、metaタグは、重複していません。
カスタム投稿したものは、
(post_type=”fudo”) となっています。
●その他の設定
パーマリンク:
数字ベース https://domain-name/archives/123
としています。
『投稿(post)』は、
https://domain-name/archives/123
となってますが、
カスタム投稿タイプ:
『カスタム投稿タイプ(fudo)』は、
https://domain-name/fudo/123
となっています。
※『投稿(post)』と『固定ページ(page)』だけに、
metaタグを設定したいです。functions.phpの追加でと、
このページを見つけ、質問させて頂きました。
●「Wordpress プラグイン description ページごと -“All in One” -“YoastSEO”」
でググりました。
deep-space.blue さまに、恐縮ですが、
functions.php のことをお教えください。
// 投稿・固定ページ カスタムフィールド追加
を足して、
// カスタムフィールドの値を読み込む
この指定についてです。
シングルページとすると、『カスタム投稿タイプ(fudo)』が、
含まれるんじゃ無いかと、不安です。
テストしてから、質問するのが礼儀ですが、技量不足で、
不安が先行してしまい、
シングルページというのは、投稿・固定ページだけに適用されるのかを、
お教え頂ければ、幸甚でございます。
何卒、お力添えをお願いしたく、質問させて頂きました。
宜しくお願い申し上げます。
この記事に記載のものだと、最終的に固定ページにしかカスタムフィールドを表示させていないのですが、
postにもカスタムフィールドを表示させるのであれば、
このような感じになるでしょうか。
なお、こちらのコードは未テストです
//—————————————–
// 投稿・固定ページ カスタムフィールド追加
//—————————————–
add_action(‘admin_menu’, ‘add_custom_fields’);
add_action(‘save_post’, ‘save_custom_fields’);
function add_custom_fields() {
add_meta_box( ‘my_sectionid’, ‘カスタムフィールド’, ‘my_custom_fields’, ‘post’) //コメントアウトを外しています;
add_meta_box( ‘my_sectionid’, ‘カスタムフィールド’, ‘my_custom_fields’, ‘page’);
}
//—————————————–
// ページ毎のmata要素とtitleの設定
//—————————————–
function MataTitle() {
// <略>