【wordpress】固定ページ投稿にdescription入力欄を付ける

  • URLをコピーしました!
目次

固定ページの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(); ?>

これを入れる。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメント一覧 (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() {
      // <略>

      返信

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる