metaプロパティの出力(カスタム投稿タイプ対応)

Filed under: 未分類 — kdcs @ 2025年12月24日 水曜日

カスタム投稿タイプの「meta property=”og:description”」などのmetaプロパティをシングルページで出力させる方法。

まずは、デフォルトの投稿タイプ(post)を「&&is_singular(‘post’)」で設定する必要がある

if (is_single()&&is_singular('post')){
if(have_posts()): while(have_posts()): the_post();
echo '<meta property="og:title" content="'; the_title(); echo '">';echo "\n";
echo '<meta property="og:description" content="'.mb_substr(get_the_excerpt(), 0, 120).'">';echo "\n";
echo '<meta property="og:url" content="'; the_permalink(); echo '">';echo "\n";
echo '<meta property="og:type" content="article">';echo "\n";
endwhile; endif;
}

続けて、カスタム投稿タイプ
※descriptionを投稿内の文章から取得する場合はデフォルトと同じです。
例:カスタム投稿タイプが「catering_plan」で、descriptionをカスタムフィールド「delivery_note」から取得し、100文字以内で区切りのいいところでカットするという方法。(区切りとは「、」や「。」の句読点)

if (is_single() && is_singular('catering_plan')) {
    if (have_posts()): while (have_posts()): the_post();

        // 元のテキスト取得
        $text_items = get_field('delivery_note');

        // 改行削除 → タグ削除 → 連続スペース削除
        $text_items = wp_strip_all_tags($text_items);
        $text_items = preg_replace('/\s+/', ' ', $text_items);
        $text_items = trim($text_items);

        // 100文字で一旦切る
        $short = mb_substr($text_items, 0, 100);

        // 最後の句読点以降を削除して自然な文章にする
        $description = preg_replace('/[^、。..!?!?]*$/u', '', $short);

        // もし句読点が見つからず空になった場合は100文字そのまま
        if ($description === '') {
            $description = $short;
        }

        echo '<meta property="og:title" content="'; the_title(); echo '">' . "\n";
        echo '<meta property="og:description" content="' . esc_attr($description) . '">' . "\n";
        echo '<meta property="og:url" content="'; the_permalink(); echo '">' . "\n";
        echo '<meta property="og:type" content="article">' . "\n";

    endwhile; endif;
}

管理画面のカテゴリー一覧から特定のカテゴリーを除外

Filed under: functions.php — kdcs @ 2025年12月22日 月曜日

ダミーのカテゴリーを作成した場合、そのカテゴリーをチェックリストから非表示する方法。

functions.php

function hide_specific_category_in_editor( $args, $taxonomy ) {
    if ( 'category' === $taxonomy ) {
        // 非表示にしたいカテゴリーIDを指定
        $args['exclude'] = array( 123 );
    }
    return $args;
}
add_filter( 'wp_terms_checklist_args', 'hide_specific_category_in_editor', 10, 2 );

この方法のメリット
・完全にチェックリストから消える
・CSS のように「見えないけど存在する」状態ではなく、UI から除外される

URLのhttps化とwww無しをまとめてリダイレクトさせる設定

Filed under: .htaccess — kdcs @ 2025年12月16日 火曜日

.htaccessでSSL化のためにリダイレクトの設定をしているURLがwww付きだった場合に、このURLをwww無しにするリダイレクトを追加すると別々に記述してしまうと2回リダイレクトが発生してしまうことがあるため、まとめて1回の処理で終わらせる設定。

まとめた記述

<IfModule mod_rewrite.c>
RewriteEngine On

# HTTPS + www除去をまとめて処理
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>

解説
RewriteCond %{HTTPS} off [OR] → HTTPSでない場合にマッチ。
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] → ホスト名が www. で始まる場合にマッチ。
RewriteRule ^(.*)$ https://%1/$1 [R=301,L] → %1 は (.+) のキャプチャ部分(つまり www. を除いたドメイン名)。 → これで「http://www.example.com」でも「http://example.com」でも、最終的に https://example.com/ に一発で飛ぶ。

メリット
リダイレクトは 1回だけ → 無駄なチェーンが発生しない。
記述がシンプル → 管理しやすい。
SEO的にも最適 → 正規URLに直接到達できる。

別々の記述

<IfModule mod_rewrite.c>
RewriteEngine On

# --- HTTPS強制 ---
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# --- www除去 ---
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>

URLのwww付きをwww無しに変更する時の.htaccessのリダイレクト設定

Filed under: .htaccess — kdcs @ 2025年12月15日 月曜日

URLのwww付きをwww無しに変更する時の.htaccessのリダイレクト設定

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

これを.htaccessの先頭に記述する

favicon(ファビコン)やスマホなどのお気に入りアイコン

Filed under: 未分類 — kdcs @ 2025年12月15日 月曜日

推奨記述例

<link rel="icon" href="/favicon.png" type="image/png" sizes="32x32">
<link rel="icon" href="/favicon.ico" type="image/x-icon">

.png は高解像度対応に便利。
.ico は古い環境や一部の場面でまだ使われることがあるので、両方用意すると安心。

従来の「shortcut icon」は Internet Explorer 独自の拡張で、標準仕様ではない。
現在の主要ブラウザ(Chrome, Firefox, Safari, Edge)はすべて 「icon」を解釈。
W3C仕様でも正式に定義されているのは「icon」。

サイト内検索

カテゴリー

最近の投稿

↑上に戻る