目次
固定ページの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() {
// <略>