WP カスタムポスト アーカイブ のリンクが効かない!? [Custom Post Type Permalinks]のバグ?

HTML/CSS

<2021/12/10追記 最下部に解決法記載>

WPでカスタムポストのアーカイブを組む際に「Custom Post Type Permalinks」プラグインを使用される方も多いと思いますが、私もその一人です。
今回「Custom Post Type Permalinks」を利用してカスタムポストのアーカイブを表示していたのですが、突然リンク先が効かなくなってしまってトラブったのでメモです。

現象としましては、「******/date/2020/5」などのようにアーカイブリンク先が吐き出されるはずなのに
「******/2020/5」と表示され、リンクが効かなくなってしまった。

という感じです。
いろいろ調べたもののこれといって解決策もなく、困ってしまったので、解決法をメモしておきます。

基本的な「Custom Post Type Permalinks」の使い方

まず、該当のカスタムポストのアーカイブを表示させたい箇所に以下を挿入します。

<h3 class="widget-title">Archives</h3>
<ul>
<?php wp_get_archives('post_type=カスタムポスト名&type=monthly'); ?>
</ul>

これで通常であれば正常に表示されます。
(管理画面の「設定」→「パーマリンク」の「カスタムタクソノミーのアーカイブに、 post_type クエリーを追加。」にチェックを入れておく)

ところが今回は表示されなくなったんですね。
おかしいなと言うことで一通り調べたところ。。。
おかしなところが見受けられなかったんです。

解決方法

結局のところ何が悪かったのか…。
「プラグイン」でした。
おそらくバージョンが切り替わった段階で、パーマリンク設定が狂ってしまったのだと思います。

Custom Post Type Permalinksを一旦削除

プラグインの「Custom Post Type Permalinks」を一旦削除して、再度入れ直します。
その上で、パーマリンク設定ページにて「更新」をかけてやることで解決しました。
同じようなトラブルの時は、一度お試しくださいませ。

<2021/12追記>
再度調べてみました。
原因は「カスタム投稿タイプのパーマリンク設定」の中の「/%postname%」を他の「%post_id%」などに変更してしまうと、アーカイブが表示されないことが分かりました。

解決方法 その1 パーマリンク名の変更

このバグの根本はCustom Post Type Permalinksが、「カスタム投稿タイプのパーマリンク設定」において「/%post_id%」を使用することでURLに「date」が抜けた状態で出力することが問題です。
よって、簡単に解決したい場合は、「/%post_id%」を「/%postname%」に変更してあげるのが手っ取り早い解決方法です。
しかし、過去に投稿したURLが「/%post_id%」で作成されていた場合、全ての投稿URLが変わってしまうのは良くないので、次の解決方法を紹介します。

解決方法 その2 %post_id%を使う場合はdateを追加する

jsで追加する方法もありますが、TRANSBitさんが簡単に紹介してくれていましたのでそちらを引用。

<?php
$args= array(
‘type’ => ‘monthly’,
‘echo’ => false,
‘post_type’ => ‘blog’//カスタムポスト名
);
$monthly_list = wp_get_archives($args);
$monthly_list = str_replace(‘/blog/’, ‘/blog/date/’, $monthly_list);//blogの箇所はカスタムポスト名に変更
echo $monthly_list;
?>

これでようやく解決。
お疲れ様でした。

ピックアップ記事

関連記事一覧

  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。