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
}

WP ナビメニューからURL、タイトル、スラッグを取得

<?php
// // 取得するナビを指定 例:company
if ($menu_items = wp_get_nav_menu_items('company')) {

    foreach ($menu_items as $menu_item) {

        //スラッグ名をIDから取得
        $slug = get_post($menu_item->object_id)->post_name;

        // ナビオブジェクトのIDと現在のページIDを比較 (同じならcurrentクラス付与)
        $current = ($menu_item->object_id == get_queried_object_id()) ? 'current' : '';

        echo '<li class="' . $current . '"><a href="' . $menu_item->url . '">' . $menu_item->title . '<span>' . $slug . '</span></a></li>';
    }
}
?>

結果

<li class=""><a href="//localhost:3000/11_menta_corp02/company/message/">代表メッセージ<span>message</span></a></li>

<li class="current"><a href="//localhost:3000/11_menta_corp02/company/philosophy/">企業理念<span>philosophy</span></a></li>

<li class=""><a href="//localhost:3000/11_menta_corp02/company/philosophy-2/">企業情報<span>philosophy-2</span></a></li>

WP 記事IDからカテゴリ・タグを取得

<?php
// カテゴリ
$cats = get_the_category($post_obj->ID);
foreach ($cats as $cat) {
    echo $cat->name;
}
// タグ
$tags = get_the_tags($post_obj->ID);
foreach ($tags as $tag) {
    echo $tag->name;
}
?>

記事IDからカスタムフィールドを取得したい時: main_imgというフィールドを取得したい時は、the_field('main_img')の第2引数にIDを入れれば取得可能です。

<img src="<?php the_field('main_img', $post_obj->ID); ?>">

WP 人気記事ランキング

【2022年最新】WordPress Popular Postsの使い方・カスタマイズ方法

上記の記事を参考にしました。

ウィジェットで挿入ではなく、テンプレートに挿入する場合は挿入したい箇所に下記を記述

<aside class="archive">
    <h2 class="archive_title">人気記事ランキング</h2>
    <?php
    if (function_exists('wpp_get_mostpopular')) {
        $arg = array(
            'range' => 'all', //集計する期間 {daily(1日), weekly(1週間), monthly(1ヶ月), all(全期間)}
            'order_by' => 'views', //表示順{views(閲覧数),comments(コメント数),avg(1日の平均)}
            'post_type' => 'post', //ポストタイプを指定 {post, page, カスタムポスト名}
            'title_length' => '25', //表示させるタイトル文字数
            'excerpt_length' => '0', //抜粋文字数
            'stats_comments' => '0', //コメント数を表示{ 1(表示), 0(非表示) }
            'stats_date' => 0, //日付を表示 { 1(表示), 0(非表示) }
            'stats_date_format' => 'Y.m.d', //日付表示フォーマット
            'limit' => 5, //表示数
            'stats_views' => '0', //閲覧数表示 { 1(表示), 0(非表示) }
            'thumbnail_width' => '150', //サムネイルの幅
            'thumbnail_height' => '150', //サムネイルの高さ
            'stats_category' => 1, //カテゴリー名を使用する { 1(する), 0(しない) } {category}
            'post_html' => '<li>{thumb}<h3>{title}</h3></li>' //表示されるhtmlの設定({thumb}はリンク付きのサムネイル画像,{title}はリンク付きのタイトル,{summary}は抜粋文)
        );
        wpp_get_mostpopular($arg); //リストの出力
    }; ?>
</aside>

WP 投稿記事にテンプレートを使う

【2021年最新】TinyMCE Templatesの使い方!テンプレートを作成して記事投稿を効率化【WordPress】 - ブロガーの森

  1. 上記に従ってテンプレートを作成
  2. テンプレートID確認
  3. 投稿画面でショートコードを選択
  4. [template id="35"]