はじめに
Cocoon 2.8.0での見直しにより、ブロックがウィジェットと同様の独自カスタマイズを廃止し、WordPress標準の仕様に戻されました。
このため、以下のブロックではウィジェットと表示が異なります。
そこで対策として、ブロックを使わずに、独自のショートコードを使用して、ウィジェットを表示させます。
この記事では、この方法について説明します。
現状のブロック表示
- アーカイブ
- 2026年10月 (19)
- 2026年9月 (12)
- 2026年8月 (37)
- 2026年7月 (15)
- 2026年6月 (13)
- 2026年5月 (10)
- 2026年4月 (15)
- 2026年3月 (19)
- 2026年2月 (25)
- 2026年1月 (15)
- 2025年12月 (9)
- 2025年11月 (14)
- 2025年10月 (36)
- 2025年9月 (32)
- 2025年8月 (32)
- 2025年7月 (20)
- 2025年6月 (55)
- 2025年5月 (51)
- 2025年4月 (42)
- 2025年3月 (22)
- 2025年2月 (18)
- 2025年1月 (21)
- 2024年12月 (18)
- 2024年11月 (55)
- 2024年10月 (9)
- 2024年9月 (8)
- 2024年8月 (6)
- 2024年7月 (10)
- 2024年6月 (19)
- 2024年5月 (15)
- 2024年4月 (17)
- 2024年3月 (14)
- 2024年2月 (6)
- 2024年1月 (1)
- 2023年12月 (4)
- 2023年10月 (1)
- 2023年9月 (34)
- 2023年7月 (28)
- 2023年6月 (16)
- 2023年5月 (10)
- カテゴリー
- Cocoonカスタマイズ集 (576)
- Cocoonマニュアル (46)
- スキンマニュアル (114)
- プラグイン (4)
- リリースメモ (34)
- 雑談 (29)
- タグクラウド
Cocoonブロック (1) Cocoonマイクロコピー (1) Cocoon汎用ブロック (1) CSS (147) JavaScript (57) PHP (482) WordPress (281) クラシックエディター (1) スタイル (4) テキストブロック (1) ブロック (8) プラグイン (4) リッチテキスト (1)
完成イメージ
- アーカイブ
- カテゴリー
- タグクラウド
使用方法
以下にショートコードを示します。
[my_widget name="ウィジェット名" options='{"オプション名":値,...}']
| ウィジェット名 | オプション | 説明 | 値 | 初期値 |
|---|---|---|---|---|
| WP_Widget_Archives | dropdown | ドロップダウンで表示 | 0=非表示 / 1=表示 | 0 |
| count | 投稿数を表示 | 0=非表示 / 1=表示 | 0 | |
| WP_Widget_Categories | dropdown | ドロップダウンで表示 | 0=非表示 / 1=表示 | 0 |
| count | 投稿数を表示 | 0=非表示 / 1=表示 | 0 | |
| hierarchical | 階層を表示 | 0=非表示 / 1=表示 | 0 | |
| WP_Widget_Tag_Cloud | count | 投稿数を表示 | 0=非表示 / 1=表示 | 0 |
実装手順
以下のコードをfunctions.phpに追加します。
add_shortcode('my_widget', function ($atts) {
$atts = shortcode_atts([
'name' => '',
'options' => '',
], $atts);
if (empty($atts['name'])) {
return '';
}
// 引数をデコード
$instance = !empty($atts['options']) ? json_decode($atts['options'], true) : [];
// タイトルを出力しない
$instance['title'] = '!';
ob_start();
the_widget($atts['name'], $instance);
$output = ob_get_clean();
// Cocoon独自の特定ウィジェットに応じた処理
switch ($atts['name']) {
case 'WP_Widget_Categories':
case 'WP_Widget_Archives':
$output = remove_post_count_parentheses($output, $instance);
break;
case 'WP_Widget_Tag_Cloud':
$instance['show_count'] = isset($instance['count']) && $instance['count'] ? true : false;
$output = wp_tag_cloud_custom($output, $instance);
break;
}
return $output;
});
補足
今回、直接ウィジェットを呼び出すため、以下のようにショートコード用のウィジェットエリアを新たに設ける必要はありません。
以下の方法で、ウィジェットを直接呼び出すことができます。
[my_widget name="RecentCommentsWidgetItem"]
さいごに
今回紹介した方法を使えば、ショートコードを使用してウィジェットを表示することができます。
ウィジェット名とオプションをショートコードの引数として指定することで、カスタマイズされたウィジェットを記事やページに簡単に埋め込むことが可能です。


