WP タイトルタグ・ディスクリプションのカスタマイズ

タイトルタグ

 * タイトルタグのテキストを変更する
 */
add_filter('document_title_parts', 'my_document_title_parts');
function my_document_title_parts($title)
{
    if (is_home()) {

        $title['title'] = 'コラムの記事一覧 | Acots';
        unset($title['tagline']); //フロントページの場合のキャッチフレーズを非表示
    } elseif (is_category()) {

        $title['title'] = 'コラムの' . $title['title'] . '一覧';
    } elseif (is_tag()) {

        $title['title'] = 'コラムの' .  $title['title'] . '一覧';
    }
    return $title;
}

上記のようにすると TOPページのタイトルはコラムの記事一覧 | Acots

カテゴリページのタイトルはコラムの該当カテゴリ一覧 | Acots

タグ一覧ページのタイトルはコラムの該当タグ一覧 | Acots

ディスクリプション

<?php if (is_home() || is_front_page()) : ?>
    <meta name="description" content="<?php bloginfo('description'); ?>">

<?php elseif (is_category()) : ?>
    <meta name="description" content="<?php echo category_description(); ?>">

<?php elseif (is_tag()) : ?>
    <meta name="description" content="<?php echo tag_description(); ?>">

<?php elseif (is_singular()) : ?>
    <meta name="description" content="<?php echo get_the_excerpt(); ?>">

<?php endif; ?>

TOPでは設定したディスクリプションが表示。 カテゴリ・タグページではカテゴリ・タグで設定したディスクリプションが表示。 シングルページでは抜粋が表示

■もし、カテゴリ一覧・タグ一覧で表示をカスタマイズしたい時(カテゴリのタイトルを使用したい時)

<?php if (is_home() || is_front_page()) : ?>
    <meta name="description" content="<?php bloginfo('description'); ?>">

<?php elseif (is_category() || is_tag()) : ?>
    <meta name="description" content="コラム記事の<?php wp_title(''); ?>一覧です。">

<?php elseif (is_singular()) : ?>
    <meta name="description" content="<?php echo get_the_excerpt(); ?>">

<?php endif; ?>

上記の方法で前後に余白が入る時はfunctions.phpに下記を記述

/**
 * wp_titleの$separatorの余分な余白削除
 */
function my_title_fix($title, $separator, $seplocation)
{
    if (!$separator || $separator == '|') {
        $title = str_replace(' ' . $separator . ' ', $separator, $title);
    }
    return $title;
}
add_filter('wp_title', 'my_title_fix', 10, 3);

条件分岐で切り分け

アーカイブ(is_archive)は引数を取らないので下記のように記述

 <?php elseif (is_archive() && is_post_type_archive('service')) : 
  ?>

関数リファレンス/is archive - WordPress Codex 日本語版

※第2階層の指定(例:recuite/faqを指定)

  <?php elseif (is_page() && in_array('faq', $uri)) : // 固定ページ (採用情報TOP よくある質問)
  ?>

条件で切り分けをfunctions.phpで関数作成

functions.phpに下記を記述して、headに<?php page_description(); ?>で呼び込み

function page_description()
{
  global $post;
  $uri = explode("/", $_SERVER["REQUEST_URI"]);
  $uri = array_filter($uri);

  $description = "当社では、運用設計、システム運用保守、ソフトウェア設計・開発、インフラ設計・構築を行っており、ITシステムをワンストップで提供します。 運用センタでは、すべての業務をITIL及びISO20000に基づき、規定・設計・実施・改善を行っております。";
  $og_img = "https://http://mimoza-care.com//wp-content/uploads/2022/09/ogp.jpg";
?>
  <?php if (is_front_page()) : // トップページ 
  ?>
    <meta name="description" content="トップページ<?= $description ?>">
    <meta property="og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />

  <?php elseif (is_page('about')) : // 固定ページ 
  ?>
    <meta name="description" content="<?= $description ?>">
    <meta property="og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />


  <?php elseif (is_archive() && is_post_type_archive('service')) : // アーカイブ(サービス )
  ?>

    <meta name="description" content="サービス<?= $description ?>">
    <meta property="og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />


  <?php elseif (is_page() && in_array('faq', $uri)) : // 固定ページ (採用情報TOP よくある質問)
  ?>
    <meta name="description" content="よくある質問<?= $description ?>">
    <meta property="og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />


  <?php elseif (is_page('privacy')) : // 固定ページ (プライバシーポリシー)
  ?>
    <meta name="description" content="プライバシーポリシー<?= $description ?>">
    <meta property="og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />


  <?php elseif (is_single() && in_array('cases', $uri)) : // シングルページ cases
  ?>
    <meta name="description" content="シングルページ cases<?= $description ?>">
    <meta property=" og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />

  <?php elseif (is_single()) : // シングルページ 
  ?>
    <meta name="description" content="<?= $description ?>">
    <meta property=" og:locale" content="ja_JP">
    <meta property="og:url" content="<?php echo (is_ssl() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta property="og:description" content="<?= $description ?>" />
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
    <meta property="og:image" content="<?= $og_img ?>" />
    <meta property="og:image:secure_url" content="<?= $og_img ?>">

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="<?= get_the_title(); ?> | <?php bloginfo('name'); ?>" />
    <meta name="twitter:description" content="<?= $description ?>" />
    <meta name="twitter:image" content="<?= $og_img ?>" />


  <?php
  elseif (is_archive()) : // ニュース
  ?>

  <?php else : // その他ページ 
  ?>
    <meta name="robots" content="index, follow">
  <?php endif; ?>
<?php
}