お問い合わせはコチラから

カスタム投稿タイプのアーカイブウィジェットを導入する手順

サイト運営

カスタム投稿タイプのアーカイブウェイジェットは、標準では用意されていません。もし、必要ならプラグインを使えば簡単に導入できるだろうと思っていました。

カスタム投稿タイプのアーカイブウェイジェットが必要な場面が今までなかったので、探したことが無かったのですが、確かに、『custom-post-type-widgets』という有名なプラグインがあります。

Custom Post Type Widgets
Custom Post Type Widgets plugin adds default custom post type widgets.

しかし、このプラグインは有名プラグイン『Custom post type permalinks』と相性が悪く、2つのプラグインを同時に有効にするとカスタム投稿タイプの月別アーカイブウィジェットのパーマリンクがおかしくなります。検索すると大量にトラブル事例が出てきますが、まともな解決策は見つかりません。

Custom Post Type Permalinks
カスタム投稿タイプのパーマリンクを編集します。

方法①:プラグインの相性問題を解決する

もともと、Wordpressには カスタム投稿の日付パーマリンクが無いのですが、 『Custom post type permalinks』 と 『 custom-post-type-widgets 』 でそれぞれの独自実装している部分が競合しているそうな。

ウイジットに表示されるリンクがおかしい
ウイジットに表示されるリンクがおかしい itukib (@itukib) 4 years, 5 months ago カスタム投稿のウィジットを表示できる以下のプラグインと一緒に使わせていただいております。 月別アーカイブを表示しているので...

解決策は、特になし。

方法②:標準のアーカイブウィジェットを拡張する方が簡単

パーマリンク回りは、トラブルが起きると根が深く、トラブルが起きると絶望的な気分になります。たかがアーカイブウィジェットでなんでこんなに苦労するのかと、嫌になりました。

そもそも『Custom post type permalinks』を導入するとカスタム投稿の日付アーカイブを出力できるようになります。出力できるようになるだけで、ウィジェットが追加されるわけではありません。

標準のアーカイブウィジェットをフックして使う方法はないのか?と考え始めました。

そうなると話が早く、以下のような有用なコードが見つかりました。

特定の投稿タイプを表示している時だけ、アーカイブウィジェットの動作を変更しています。このコードだとblogという投稿タイプの時だけ、blogのアーカイブを表示するように切り替えています。

<?php
/**
 * ウィジェット「アーカイブ」にフィルター
 * require Custom Post Type Permalinks
 */

add_filter( 'widget_archives_args', 'my_widget_archives_args', 10, 1);
add_filter( 'widget_archives_dropdown_args', 'my_widget_archives_args', 10, 1);
function my_widget_archives_args( $args ){
	if ( ! is_admin() ) {
		if ( 'blog' == get_post_type() ) {
			$args['post_type'] = 'blog';
		}
	}
	return $args;
}

参考:https://gist.github.com/gatespace/7147747

方法③:ショートコードを作るのも実は簡単

アーカイブウィジェットと全く同じ動きになるショートコードを作るのはとても簡単です。

アーカイブウィジェットでもwp_get_archivesを使っているので、パラメータのpost_typeを変えてあげれば同じ動きになります。

<?php
add_shortcode('archive_news',function(){
	ob_start();
?>
<ul>
    <?php wp_get_archives('type=monthly&show_post_count=1&post_type=news'); ?>
</ul>
<?php
	return ob_get_clean();
});

まとめ

自分で何回か同じことをしていても、時間が経つと忘れてしまいます。

内容的には簡単なのですが、検索してもすぐに出てこないので、メモしておこうと思いました。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました