はじめに
以下の質問に回答します。
Cocoon標準のsitemapショートコードは、Luxeritasとは異なり、階層表示に対応していません。
そこで、独自のショートコードを使用して、サイトマップをLuxeritasのように階層表示できるようにします。
さらに、カテゴリーごとに折りたたみ表示する機能も追加します。
この記事では、この方法について説明します。
完成イメージ
固定ページ
- Cocoonカスタマイズ一覧
- WordPressテーマ「Cocoon」機能拡張ガイド
- プライバシーポリシー・免責事項
- WordPressテーマ「Cocoon」フォーラムのバグ報告まとめ
- WordPressテーマ「Cocoon」2026年版カスタマイズ完全ガイド
- WordPressテーマ「Cocoon」フロントページサンプル集
投稿
-
Cocoonカスタマイズ集
- 「FAQ」ブロックの見出しを目次に反映する方法
- 「アーカイブ」ウィジェットでカスタム投稿タイプを表示する方法
- 「アーカイブ」ウィジェットでカテゴリーごとの投稿を表示する方法
- 「アーカイブ」ウィジェットで今年だけ月別、過去は年別に表示する方法
- 「アーカイブ」ウィジェットで選択した月の最新投稿ページを表示する方法
- 「アーカイブ」ウィジェットの表示を年別、今年に変更する方法
- 「アーカイブ」ウィジェットを「YYYY-MM」形式に変更する方法
- 「アーカイブ」ウィジェットを年単位で折りたたみ表示する方法
- 「アイコン」ブロックに独自SVGアイコンを追加する方法
- 「アイコンボックス」ブロックのアイコン、ボーダー色をスタイル設定から変更する方法
- 「アイコンリスト」ブロックを使用してリンクリストを作成する方法
- 「アコーディオン(トグル)」「FAQ」ブロックで1つだけ開き他を閉じる方法
- 「アコーディオン(トグル)」ブロックを初期状態で開くようにする方法
- 「ウィジェットの複製」機能を追加する方法
- 「カスタムHTML」ウィジェットに指定期間だけ表示する機能を追加する方法
- 「カスタムHTML」ウィジェットに表示期間を設定し自動でパターンを切り替える方法
- 「カスタムHTML」ブロックでCSSのネスト記法(&)を使うと効かない原因と対策
- 「カテゴリー」ウィジェットでカスタムタクソノミーを表示する方法
- 「カテゴリー」ウィジェットで親カテゴリーのみを表示する方法
- 「カテゴリー」ウィジェットのドロップダウン表示の文言を変更する方法
- 「カテゴリー」ウィジェットの子カテゴリーを折りたたみ表示する方法
- 「カバー」ブロックにSWELL風のパララックス効果を追加する方法
- 「カバー」ブロックの背景画像を固定表示する方法
- 「カバー」ブロックを活用してSWELL風のコンテンツヘッダーを追加する方法
- 「カレンダー」ウィジェットでカスタム投稿タイプを表示する方法
- 「カレンダー」ウィジェットで投稿が1件しかない日は直接記事へジャンプさせる方法
- 「カレンダー」ウィジェットで指定した年月を初期表示する方法
- 「カレンダー」ウィジェットにアイキャッチ像を表示する方法
- 「カレンダー」ウィジェットにカテゴリーラベルと同じ背景色を表示する方法
- 「カレンダー」ウィジェットに予約投稿を表示する方法
- 「カレンダー」ウィジェットに投稿タイトル(title属性)を表示する方法
- 「カレンダー」ウィジェットの土日・祝日に色を付ける方法
- 「カレンダー」ウィジェットを「YYYY-MM」形式に変更する方法
- 「ギャラリー」ウィジェットを綺麗なMasonryレイウトにする方法
- 「ギャラリー」ブロックのキャプションを画像の下に表示する方法
- 「ギャラリー」ブロックの画像サイズを均一にする方法
- 「ギャラリー」ブロックをサムネイル付きスライド表示する方法
- 「ギャラリー」ブロックを自動スクロールさせ表示する方法
- 「グループ」ブロックの名前に直下の「見出し」ブロックのテキストを自動設定する方法
- 「グループ」ブロップを折りたたみ表示する方法
- 「コード」ブロックに独自に行番号を追加する方法
- 「コメントを書き込む」「返信」ボタンの文言を変更する方法
- 「タイムライン」ブロックにアニメーションを追加する方法
- 「タイムライン」ブロックのタイトルを目次に反映する方法
- 「タイムライン」ブロックを折りたたみ表示する方法
- 「タイムライン」ブロックを横向きに表示する方法
- 「タグクラウド」ウィジェットから一定の投稿数以下を非表示にする方法
- 「タグクラウド」ウィジェットにドロップダウン表示を追加する方法
- 「タグクラウド」ウィジェットに現在のカレント表示する方法
- 「タグクラウド」ウィジェットの最大表示数を変更する方法
- 「タグクラウド」ウィジェットをタグ数で折りたたみ表示する方法
- 「タブ」ブロックのタブ切り替えをスライドスイッチ風にアニメーションさせる方法
- 「タブ」ブロックの初期表示をタブ1以外に設定する方法方法
- 「タブ」ブロックをJavaScript不要でステップ表示にカスタマイズする方法
- 「タブ」ブロックをモバイル表示のときタブ表示に変更する方法
- 「タブ見出しボックス」ブロックの見出しを目次に反映する方法
- 「テーブル」ブロックにHTMLタグを入力する方法
- 「テーブル」ブロックにSWELL風のスクロールヒントを表示する方法
- 「テーブル」ブロックにソート機能を追加する方法
- 「テーブル」ブロックの1列目のセル幅を文字幅に合わせ、文字の両端も揃える方法
- 「テーブル」ブロックの行と列をマウスオーバーで強調表示する方法
- 「テーブル」ブロックの角を丸くする方法
- 「テーブル」ブロックを「タイムライン」ブロック風に変更する方法
- 「テーブル」ブロックをチェックボックスにより絞り込み機能を実装する方法
- 「テーブル」ブロック中に開閉リストを追加する方法
- 「テーブル横スクロール」設定で「XO Event Calendar」が崩れる原因と対策
- 「ナビカード」ウィジェットのカスタムリンクにアイキャッチ画像を表示する方法
- 「ナビカード」のリボン文言を変更する方法
- 「ナビゲーションメニュー」ウィジェットにドロップダウン表示を追加する方法
- 「ナビゲーションメニュー」ウィジェットの子メニューを折りたたみ表示する方法
- 「ボタン」ブロックにクリック数を表示する方法
- 「ボタン」ブロックの<a>タグにdownload属性を追加する方法
- 「ボックスメニュー」ウィジェットに現在のカレント表示する方法
- 「ボックスメニュー」でFont Awesomeにないアイコンを設定する方法
- 「ボックスメニュー」などのメニュー設定をカテゴリーページごとに変更する方法
- 「リスト」ブロックで丸数字を使用する方法
- 「リスト」ブロックのリストを階層表示する方法
- 「人気記事」ウィジェットにCocoon設定の除外カテゴリーを反映する方法
- 「人気記事」を「新着情報」と同じデザインで表示する方法
- 「人気記事」を番号付きリスト(ol)にカスタマイズする方法
- 「吹き出し」ブロックに一括してアニメーション効果を追加する方法
- 「吹き出し」ブロックのアイコン画像を一括で変更する方法
- 「年度別アーカイブ」を表示する方法
- 「新着情報」で過去○日以内の記事だけに絞り込んで表示する方法
- 「新着情報」に指定した投稿を表示する方法
- 「新着情報」のアイテム全体をリンクにする方法
- 「新着情報」のカテゴリーラベルに色を付ける方法
- 「新着情報」ブロックを1行表示にする方法
- 「新着情報」をスクロール表示で切り替える方法
- 「新着情報」を自動で切り替えるフェードアニメーションを追加する方法
- 「新着記事」「人気記事」「ナビカード」に現在のカレント表示する方法
- 「新着記事」などにカテゴリー、タグ表示を追加する方法
- 「新着記事」などにページネーションを追加する方法
- 「新着記事」などの大きなサムネイル表示でカードに線を入れる方法
- 「新着記事」など横並び表示にSwiperページネーションを付ける方法
- 「新着記事」の投稿をコメント数順で表示する方法
- 「新着記事」ブロックがを横並びのときカテゴリーページへのリンクを追加する方法
- 「新着記事」ブロックに「もっと見る」ボタンを追加する方法
- 「新着記事」ブロックにページネーションを追加する方法
- 「新着記事」ブロックや「人気記事」ブロックのカードを横並びにする方法
- 「新着記事」ブロックや「人気記事」ブロックの投稿日・更新日の一方を表示する方法
- 「新着記事」ブロックを無限スクロール化する方法
- 「段落」ブロックでPC・モバイルごとに改行を追加する方法
- 「段落」ブロックを縦書きにする方法
- 「画像」ブロックにSWELL風のブラウザ枠を追加する方法
- 「画像」ブロックにWordPress標準の拡大機能を自動で設定する方法
- 「画像」ブロックに添付ファイルページへのリンクを自動で設定する方法
- 「画像」ブロックに画像の拡大効果を自動で設定する方法
- 「画像」ブロックのリンク設定を変更する方法
- 「画像」ブロックをカラムからはみ出し配置する方法
- 「画像」ブロックを徐々に表示する方法
- 「記事を読む時間」の文言などを変更する方法
- 「詳細」ブロックを「アコーディオン(トグル)」ブロック風にし1つだけ開き他を閉じる方法
- 「閲覧履歴」機能を追加する方法
- 1ページだけでもページネーションを表示する方法
- 2023年10月からの景品表示法対応ガイド!新規制に備えた完全マニュアル
- 3年以上経過した古い投稿に自動で警告メッセージを表示する方法
- 404エラーのときフロントページへジャンプする方法
- Arkhe風の神フックが新登場!機能追加でサイトを強化する方法
- Cocoonスキン「SILK」でプロフィールのニックネーム前にある「@」を削除する方法
- Cocoonでカラム内のブロックの高さを簡単に揃える方法
- Cocoonでタイトルのセパレーターが変更できない原因と正しい解決方法
- Cocoonのnoindex制御を拡張する方法
- CocoonのPV数をSWELLに引き継ぐ方法
- Cocoonのオリジナルアイコンについて
- Cocoonのフックについて
- Cocoonのレイアウト配置をドラッグ&ドロップで直感的に変更する方法
- Cocoonの各カードにおけるサムネイル表示の仕様を解説
- Cocoon設定のname属性をタブ・セクションごとに一覧表示する方法
- Cocoon設定のタブを非表示にする方法
- Cocoon設定の拡大効果にfancybox3を追加する方法
- Cocoon設定を拡張し内部・外部ブログカードのスニペットを出力自体させない方法
- Cocoon設定画面に「トップへ戻る」ボタンを追加する方法
- Cocoon設定画面にFont Awesome 6を追加する方法
- Cocoon設定画面にキーワード検索機能を追加する方法
- Cocoon設定画面に独自タブを追加する方法
- Cocoon設定画面に独自タブを追加する方法(Cocoon 2.9.5.1~)
- Cocoon設定画面に独自設定を追加して保存・取得する方法
- Cocoon設定画面のチェックボックスをトグルスイッチ化する方法
- Cocoon設定画面の一部項目だけを選択不可にする方法
- CSS Custom Highlight APIを用いページ内検索をリアルタイムでハイライトする方法
- CSSのみで無限ループスライダーを作る方法
- functions.phpをスマートに分割管理する方法
- getComputedStyleで最終的なスタイルを取得する方法
- Gravatarを使用せずにプロフィール写真を設定する方法
- GutenbergエディターでCocoonブロックカテゴリーを先頭に表示する方法
- Gutenbergエディターでサイドバーに移動したメタボックスを本文下に戻せない問題
- Gutenbergエディターのカラーパレットを変更する方法
- Gutenbergエディターのツールバーへ独自ショートコードのメニューを追加する方法
- GutenbergエディターのブロックにスタイルとCSSを外部JSON/CSSファイルから動的に管理する方法
- Gutenbergエディターのブロックにスタイルボタンを追加する方法
- Gutenbergエディターのブロックに独自のスタイルパネルを追加する方法
- Gutenbergエディターのブロックに独自のスタイル追加する方法
- Gutenbergエディターの見出しレベルを制限する方法
- JSONファイルからパターンを自動登録する方法
- PC画面でもモバイルのスライドインメニューを表示する方法
- PC画面にハンバーガーメニューを追加する方法
- rssショートコードにサイト名かドメイン名を追加する方法
- rssショートコードのサムネイルにアイキャッチ画像を表示する方法
- rssショートコードをスライド表示にする方法
- SNSシェアボタンショートコードを追加する方法
- SNSシェアボタンにThreadsを追加する方法
- SNSシェアボタンをマウスオーバーで拡大表示する方法
- SWELL風のコンテンツヘッダーを追加する方法
- SWELL風の投稿者情報を本文下に表示する方法
- SWELL風の波境界線を追加する方法
- Swiperで無限ループスライダーを作る際の注意点
- table内のdivにheight:100%が効かない理由と解決策
- USドル・円をレート換算して金額を表示する方法
- WordPress 5.8で廃止されたメディアライブラリの無限スクロールを元に戻す方法
- WordPress 6.5で追加された「Block Bindings API」について
- WordPress 6.9で追加された「アコーディオン」ブロックについて
- WordPress 6.9で追加された「ブロックの表示/非表示」機能について
- WordPress 7.0でadd_meta_boxを廃止してGutenberg APIへ完全移行する方法
- WordPress 7.0で追加されたフォントライブラリを活用し追加したフォントをダッシュボードに一覧表示する方法
- WordPress 7.0で追加されたブロックごとの追加CSSで「タイムライン」ブロックのアイテムのポイント色を変更する方法
- WordPress 7.0の新機能を活用してPHPのみでカスタムブロックを作成する方法
- WordPress 7.1で追加された「タブ」ブロックについて
- WordPress REST APIで投稿データを外部に配信する方法
- WordPress「パターン」機能の活用法
- WordPressで「続き」ブロック前の本文だけを取得する方法
- WordPressテーマ変更で起こる問題とは?知っておくべき重要ポイントを徹底説明!
- WordPressでjQueryがエラーになる原因について
- WordPressでPHPの値をJavaScriptに渡す方法
- WordPressで不要なテーマを管理画面から一括削除する方法
- WordPressで不要なテーマを管理画面から非表示にする方法
- WordPressのwpautopとクラシックエディターで起きた表示崩れの原因と解決策
- WordPressのテーマエディターで最初にfunctions.phpを開く方法
- WordPressのパスワード保護ページをカスタマイズする方法
- WordPressのブロック非表示とカラム折り返しのブレークポイントがズレてる問題
- WordPressのログインセッション時間を変更する方法
- WordPressの子テーマ、そもそも何なのかを徹底説明!
- WordPressの未添付画像を自動で記事に紐付ける方法
- WordPressの管理者アカウントが不明なときに新管理者を追加する方法
- WordPress標準の「RSS」ウィジェットやブロックにサムネイル画像(og:image)を表示する方法
- WordPress標準の「最近の投稿」ウィジェットにアイキャッチ画像を表示する方法
- アイキャッチ未設定のとき本文中の画像をサムネイル表示する方法
- アイキャッチ未設定時のOGP画像をカテゴリーやタグから自動設定する方法
- アイキャッチ画像の表示位置を本文上に変更する方法
- アピールエリアにSWELL風のスライドを表示する方法
- アピールエリアにサムネイル画像付きのスライドを追加する方法
- アピールエリアの情報を固定ページごとに変更する方法
- アメブロからWordPressに引っ越しする方法
- インデックスの「除外カテゴリー」に該当する投稿を完全に除外する方法
- インデックスの並び順にコメント数順・人気順を追加する方法
- インデックスの除外カテゴリーをページ送りナビに反映する方法
- ウィジェット、ウィジェットエリア一覧を表示、除外する方法
- ウィジェットに「CSSクラス」オプションを追加する方法
- ウィジェットに「PC・モバイル表示切り替え」オプションを追加する方法
- ウィジェットに「オートプレイ」オプションを追加する方法
- ウィジェットのタイトルにHTMLタグを入力する方法
- ウィジェットの画像をLightboxで拡大表示する方法
- ウィジェット画面で未使用エリアを一括で非表示にする方法
- ウィジェット画面のウィジェットエリアの並び順を変更する方法
- ウィジェット画面のウィジェットを固定化してドラッグ禁止にする方法
- ウィジェット画面のウィジェット一覧の並び順を変更する方法
- ウィジェット画面の特定ウィジェットエリアだけを自動で開く方法
- エディター「更新日の変更」の初期表示を変更する方法
- エディターのドキュメントパネルから「タグ」設定を削除する方法
- エディターを無効化して独自フィールドだけを使う方法
- エントリーカードからコメント欄へのリンクを追加する方法
- エントリーカードにACFで作成したカスタムフィールドを表示する方法
- エントリーカードにリボン表示を追加する方法
- エントリーカードに先頭固定投稿マークを付ける方法
- エントリーカードに読書進捗バーを表示する方法
- エントリーカードのタイトルの文字数を制限する方法
- エントリーカードの並び順を変更するボタンを追加する方法
- エントリーカードの日付を「〇日前」などの相対時間に変換する方法
- エントリーカードの表示件数を選択可能にする方法
- エントリーカード全体がリンクでも、中に別のリンクを追加する方法
- おすすめカードの幅を調整して折り返して表示する方法
- おすすめカードをカテゴリーページごとに変更する方法
- おすすめカードを表示場所ごとに出し分ける方法
- お気に入り一覧ページを追加する方法
- カードタイプ「タイル」をCSSだけでMasonryレイアウトにする方法
- カスタマイザーから余分なメニューを削除する方法
- カスタマイザーでラジオボタンとチェックボックスをトグルUIにする方法
- カスタマイザーのペンマークと設定メニューを連携させる方法
- カスタムフィールドを投稿リビジョンに追加する方法
- カスタム投稿タイプの投稿一覧で先頭固定表示する方法
- カスタム投稿タイプの関連記事を表示する方法
- カスタム投稿タイプをタイプを用いてCSS/JavaScriptを一括を管理する方法
- カスタム投稿タイプを用いて「CTA」ウィジェットを管理する方法
- カスタム投稿タイプを用いて「テンプレート機能」をWordPress標準化する方法
- カスタム投稿タイプを用いて「ランキング機能」をWordPress標準化する方法
- カスタム投稿タイプを用いて「吹き出し機能」をWordPress標準化する方法
- カスタム投稿を追加する方法
- カスタム投稿一覧に「タクソノミー」絞り込み機能を追加する方法
- カテゴリーページでカテゴリごとの新着記事・人気記事を自動表示する方法
- カテゴリーラベルを親カテゴリーに統一表示する方法
- カテゴリーを使った絞り込み検索フォームを表示する方法
- カテゴリー別の最新記事を表示する方法
- カラム、グループ全体をリンクとして設定する方法
- カルーセルにカスタム投稿を表示する方法
- カルーセルに指定した投稿を表示する方法
- カルーセルの表示位置を変更する方法
- カルーセルの表示枚数、最大枚数を変更する方法
- カルーセルを人気順で表示する方法
- キャッチフレーズを改行表示する方法
- クイック編集からカテゴリーのカスタムフィールドを設定する方法
- クイック編集からカテゴリー色を設定し一覧で確認する方法
- クイック編集から先頭固定表示の解除日時を設定する方法
- クイック編集から投稿タイプを変更する方法
- クイック編集から投稿の公開期限を設定する方法
- クシックエディターで作成した投稿を、自動でクラシックエディターに切り替える方法
- クラシックエディターのツールバーに比較表記号を追加する方法
- グローバルナビメニューに検索メニューを追加する方法
- グローバルナビメニューのカテゴリーに投稿数を表示する方法
- グローバルナビメニューをアピールエリアの下に表示する方法
- グローバルナビメニューをカテゴリーページごとに変更する方法
- グローバルナビメニューをタブ切り替え風に表示する方法
- コピーボタンを追加する方法
- コメントの日付形式をCocoon設定に合わせる方法
- コメントを短縮表示して全文表示ボタンを追加する方法
- コメント一覧の日付形式を変更する方法
- コメント数が0のときにコメント数を非表示にする方法
- コメント欄で未入力時に標準の「匿名」ではなく「名無しさん」と表示する方法
- コメント欄にアバーター画像を選択を追加する方法
- コメント欄のコメントリストと入力フォームを逆に表示する方法
- コメント欄の入力フォームの並びを変更する方法
- コメント欄の入力必須項目のマークを変更する方法
- コメント欄や「最近のコメント」ウィジェットに書き込みから一定期間「NEW」マークを表示する方法
- コメント欄を本文の下に表示する方法
- サイドバーに配置した「目次」ウィジェットをハイライト表示させる方法
- サイドバーの目次だけ最初から開いた状態で表示する方法
- サイドバーを左右両方に表示する3カラムレイアウトに変更する方法
- サイドバーを表示/非表示を切り替える方法(1カラム⇔2カラム)
- サイトヘルスに本文で使用しているショートコード一覧を表示する方法
- サイトマップをツリー表示する方法
- サイト全体のアクセス数(PV)を表示する方法
- サムネイルに自動生成画像ではなく元画像を表示する方法
- ショートコードを使用してPHPを読み込ませる方法
- ショートコードを使用してウィジェットを直接表示する方法
- スキン一覧から選択しデモ表示する方法
- スクロールし画面内に入ったブロックをアニメーション表示する方法
- スマートフォンのときタブ一覧をスクロールスナップする方法
- ダークモードを実装する方法
- タイトル、抜粋枠、本文に限定して検索する方法
- タグクラウドの先頭に「#」を追加する方法
- タグクラウドをドロップダウン・チェックボックス形式で表示する方法
- タグクラウドを分類し一覧表示する方法
- タグ一覧から不要なタグを非表示する方法
- ダッシュボードにdebug.logを表示・削除する方法
- ダッシュボードにTheme Modsの内容を表示する方法
- ツールバーに「エディター切替」ボタンを追加する方法
- ツールバーに「削除」ボタンを追加する方法
- ツールバーの「サイト名」や「サイトを表示」を新しいタブで開く方法
- ツールバーをフロントエンドから表示・非表示に切り替える方法
- テーマで使われているブロック一覧を表示する方法
- テンプレート変更不要で好きな要素を追加する方法
- トークン付きURLで特定ユーザーだけに非公開投稿を公開する方法
- トップページの「カードタイプ切り替え」機能を追加する方法
- トップページを「最新記事の一覧」ではなく「最新の投稿本文」へ自動で切り替える方法
- トップへ戻るボタンにスクロール量を表示する方法
- トップへ戻るボタンの戻り先を目次に変更する方法
- トップへ戻るボタンをクリックすると画像を変える方法
- トップメニューのときSWELL風のキャッチフレーズを表示する方法
- はみ出している要素を赤くしてレイアウト崩れの原因を特定する方法
- パンくずリストをタグアーカイブなどに表示する方法
- パンくずリストを上下に設置する方法
- パンくずリストを任意の位置に表示する方法
- フッターモバイルボタンをドラッグ&ドロップで簡単に作成する方法
- プラグイン「grayish MV add Plugin」のパターンファイル設定手順を解説
- プラグインなしで「ToDo」機能を追加する方法
- プラグインなしで「いいねボタン」機能を追加する方法
- プラグインなしで「お気に入り」機能を追加する方法(クッキー版)
- プラグインなしで「お気に入り」機能を追加する方法(ローカルストレージ版)
- プラグインなしで「プロフィール」ウィジェットのリンクを無効にする方法
- プラグインなしで「メガメニュー」を追加する方法
- プラグインなしで「リアクション」機能を追加する方法
- プラグインなしで「休日カレンダー」を表示する方法
- プラグインなしで「投稿の複製」機能を追加する方法
- プラグインなしで「検索サジェスト」機能を追加する方法
- プラグインなしで「画像」ブロックにExif情報を表示する方法
- プラグインなしでCSSだけでポップアップ表示を追加する方法
- プラグインなしでPHPファイルを機能単位で管理する方法
- プラグインなしでuploadsフォルダをZIPダウンロードする方法
- プラグインなしでWordPressバージョンに非対応で長期未更新のプラグインを赤色で強調表示する方法
- プラグインなしでWordPressプラグインの更新履歴と更新日時を一覧画面に表示する方法
- プラグインなしでアップロード画像をWebP形式に変換する方法
- プラグインなしでウィジェットの表示制御する方法
- プラグインなしでウィジェット設定をエクスポート・インポートする方法
- プラグインなしでエディターに独自のメタボックスを追加する方法
- プラグインなしでエディターのカテゴリー設定を1つに制限する方法
- プラグインなしでカテゴリーを好きな順番に並び替える方法
- プラグインなしでコメントに画像を追加投稿する方法
- プラグインなしでコメント欄にランダムなひらがな4桁の確認キーを追加する方法
- プラグインなしでダッシュボードを1〜4カラムレイアウトに変更する方法
- プラグインなしでプロフィール一覧を表示する方法
- プラグインなしでメディアファイルを置き換える方法
- プラグインなしでメディアをカテゴリーに分けて管理する方法
- プラグインなしでログインユーザー以外をリダイレクトさせる方法
- プラグインなしで使用されているテーマのテンプレートファイル名を表示する方法
- プラグインなしで古い投稿を自動で更新する方法
- プラグインなしで右クリックを禁止にする方法
- プラグインなしで固定ページの子ページを表示する方法
- プラグインなしで固定ページを階層構造に並べ替える方法
- プラグインなしで変更前・変更後の画像を切り替え表示する方法
- プラグインなしで投稿・固定ページ一覧のカラム順序を自由に変更する方法
- プラグインなしで本文の一部をパスワード保護する方法
- プラグインなしで本文中の画像リンク切れをチェックする方法
- プラグインなしで検索不要なページを除外する方法
- プラグインなしで独自の問い合わせフォームを自作する方法
- プラグインなしで管理画面のメインナビゲーションのメニューを並び替える方法
- プラグインなしで管理者以外にメンテナンス画面を表示する方法
- プラグインなしで簡易的にWordPressのセキュリティ監視をする方法
- プラグインなしで複数のカスタム投稿タイプを設定画面から追加する方法
- プラグインなしで複数の著者を投稿に表示する方法
- プレビュー時にツールバーを非表示にする方法
- ブログ開設経過日を表示する方法
- プロフィールのSNSフォローボタンを色付きに変更する方法
- プロフィール情報でHTMLタグ入力を有効化する方法
- フロントページ「タブ一覧」に投稿日から一定期間「NEW」を表示する方法
- フロントページ「タブ一覧」のカテゴリータブで「もっと見る」ボタンから2ページ目へ直接遷移させる方法
- フロントページ「タブ一覧」のカテゴリーにページネーションを表示する方法
- フロントページ「タブ一覧」内でページ切り替えする方法
- フロントページが固定ページのとき、専用のCSSを読み込む方法
- フロントページタイプ「タブ一覧」の新着記事を非表示にする方法
- フロントページだけ投稿の並び順を変更する方法
- フロントページと一覧ページでカードタイプを切り替える方法
- フロントページにタクソノミーごとを表示する方法
- フロントページやアーカイブのタイトルに投稿件数を追加する方法
- フロントページを自動で固定ページに設定する方法
- ページごとにheadやbodyタグ直前にコードを埋め込む方法
- ページネーションをドロップダウンに変更する方法
- ページの先頭にページネーション、ページ送りナビを追加する方法
- ページ単位にスキンを変更する方法
- ページ番号を入力して指定ページへ直接ジャンプする方法
- ページ送りナビに予約投稿や下書き記事を表示する方法
- ページ送りナビの並びを左右逆にしモバイルボタンを拡張する方法
- ヘッダーに電話番号と問い合わせリンクを追加する方法
- ヘッダーロゴのリンク先URLを変更する方法
- ヘッダーロゴを固定ページごとに変更する方法
- ヘッダーを固定とした場合でもサブメニューを表示する方法
- ヘッダー固定のときカラーを変更する方法
- ヘッダー画像をPCとモバイルで変更する方法
- マーカーをアニメーションして表示する方法
- マウスホイールに応じ関連記事を横スクロールする方法
- マウス位置に応じ左右に無限ループスライダーを作る方法
- メディア一覧に「アイキャッチ使用中」カラムを追加する方法
- メディア一覧に「未使用の画像」絞り込み機能を追加する方法
- メディア一覧にファイルサイズ表示を追加する方法
- メディア一覧の日付形式を変更する方法
- メディア登録時にタイトルとキャプションを自動入力させない方法
- メニューから除外カテゴリーや非公開ページを非表示にする方法
- メニュー画面でカスタム投稿とタクソノミーをセットにして色分けする方法
- メニュー画面で作成したメニューに管理用メモを追加する方法
- メニュー画面のメニュー項目検索で10件以上表示する方法
- メニュー配置を一覧表で一括管理する方法
- モバイルスライドインメニューにウィジェットを表示する方法
- モバイルボタンのアイコンを画像に変更する方法
- モバイルボタンのサイドバーを左からスライド表示に変更する方法
- モバイルボタンの背景色、文字色を変更する方法
- モバイルメニュー「トップメニュー」のメニューアイコンを修正する方法
- モバイル用フッターを活用して「問い合わせ情報」を表示する方法
- モバイル端末で左右スワイプして前後の記事へページ遷移する方法
- ユーザーごとにエディターで使用可能なカテゴリー・タグを制限する方法
- ランキングの表示を評価順に並び替える方法
- リビジョン保存数を制御する方法
- レーダーチャートを表示する方法
- ローディング画面を追加する方法
- ログインユーザーのみCSS縮小化を無効にする方法
- 一覧では今年の投稿のみを表示し、アーカイブでは過去投稿だけを表示する方法
- 不要なSNSフォロー入力項目を非表示・無効化する方法
- 不要なWP-Cronタスクを特定して完全に停止する方法
- 予約投稿を無効化して未来の投稿を表示する方法
- 人気記事のカウントが更新されない時の対処法
- 今月・来月のカレンダーを表示し、未来の投稿も新着情報に含める方法
- 他テーマでも、Cocoonのようにパターンをショートコードで呼び出す方法
- 任意のカテゴリーを投稿一覧から除外し、「新着記事」のみ表示する方法
- 先頭固定投稿による表示件数のズレを防ぐ方法
- 全ウィジェットエリアを可視化する方法
- 円形に沿ったテキストアニメーションの作成方法
- 分割ページのページネーションを一覧ページと同じ表示にする方法
- 別のページにある「アコーディオン(トグル)」ブロックをリンクから直接開く方法
- 別のページにある「タブ」ブロックをリンクから直接開く方法
- 同サーバー内にある別のWordPressの投稿をリスト一覧で表示する方法
- 固定ページでコメントをデフォルトで有効化する方法
- 固定ページにタイトル順・階層構造でページ送りナビを追加する方法
- 固定ページ一覧に使われているテンプレートを表示する方法
- 外部サイトの画面キャプチャを表示する方法
- 子テーマにZIPでスキンをアップロードし自動展開する機能を追加する方法
- 子テーマ内のCSVファイルを読み込む方法
- 寄稿者にメディアアップロード権限を付与し、自分のアップロード画像だけを表示する方法
- 投稿・固定ページからアイキャッチ、日付を非表示にする方法
- 投稿・固定ページごとにカスタムCSS/JavaScriptを追加する方法
- 投稿・固定ページにPV数を表示する方法
- 投稿・固定ページに設定されたCSS・JavaScript有無を一覧確認する方法
- 投稿・固定ページの本文上にコメント数を表示する方法
- 投稿ごとにコメントだけを表示するページを追加する方法
- 投稿タイトルからアイキャッチ画像を自動生成する方法
- 投稿タグをチェックボックス形式に変更する方法
- 投稿で使用された画像を本文下に一覧表示する方法
- 投稿に独自ステータスを追加する方法
- 投稿のカテゴリーを関連記事のようにカード表示する方法
- 投稿のスラッグを日本語から英字に自動で変更する方法
- 投稿のマルチページURLを自動でリスト表示する方法
- 投稿や固定ページ一覧に「PR表記」絞り込み機能を追加する方法
- 投稿や固定ページ一覧に「アイキャッチ有無」絞り込み機能を追加する方法
- 投稿や固定ページ一覧に「スラッグ」「ID」絞り込み機能を追加する方法
- 投稿や固定ページ一覧に「更新された投稿」絞り込み機能を追加する方法
- 投稿を特定カテゴリーで自動パスワード保護と解除する方法
- 投稿を特定カテゴリーで自動非公開と公開解除する方法
- 投稿一覧に「アーカイブに出力しない」の投稿を色分け表示する方法
- 投稿一覧にPV数をリセットするボタン追加する方法
- 投稿一覧に投稿のタイトルと本文の文字数を表示する方法
- 投稿一覧に更新日をリセットするボタン追加する方法
- 投稿一覧の表示順を更新日順・人気順・コメント数順に変更する方法
- 投稿一覧をステータスに応じ色分け表示する方法
- 投稿一覧を人気順でソートして表示する方法
- 投稿公開前に確認チェックを追加する方法
- 投稿日から一定期間「NEW」を表示する方法
- 投稿日を和暦に変換する方法
- 投稿編集時に更新日を変更する機能を追加する方法
- 投稿者と監修者の構造化データを自動出力する方法
- 新しいSNSフォローボタンを追加する方法
- 既存ウィジェットエリアにウィジェットをコピーする方法
- 既存のウィジェットに独自設定を追加して保存・取得する方法
- 既読チェック機能付きの検索機能を追加する方法
- 日付アーカイブのページタイトルを「YYYY年M月D日」に変更する方法
- 日本地図と各県の投稿件数を表示する方法
- 最終HTML出力前にフィルター関数を追加する方法
- 未ログインユーザーに特定のメニューリンクを無効化・非表示にする方法
- 本文上のアイキャッチにYouTube動画を表示する方法
- 本文下の関連記事を横並びでスクロール表示する方法
- 本文中の広告を特定の見出しH2の前に表示する方法
- 本文中の目次を折りたたみ表示する方法
- 検索キー履歴を表示する方法
- 検索フォーム「サイト内を検索」の文言を変更する方法
- 検索フォームをウィジェットエリア外に表示する方法
- 検索件数を表示する方法
- 検索結果から固定ページを除外し投稿だけにする方法
- 検索結果の並び順を投稿日順・更新日順に変更する方法
- 検索語句を含む投稿を新着順で表示する方法
- 楽天ランキングを自動表示する方法
- 特定カテゴリーの公開済みの投稿を独自のパスワード保護する方法
- 特定のカテゴリーに属するタグクラウドを表示する方法
- 特定のカテゴリーに属する子カテゴリーを表示する方法
- 特定のカテゴリーに属する投稿をドロプッダウンで表示する方法
- 特定のプラグインを一覧から非表示にする方法
- 特定のブロックをPC・モバイルだけ表示する方法
- 特定のページで外部リンクのnofollowを解除する方法
- 特定の投稿だけ目次の表示の深さを変更する方法
- 特定時間外はページを非表示にする方法
- 独自の「ABテスト」ブロックを追加する方法
- 独自の「QRコード」ウィジェットを追加する方法
- 独自の「カウントダウン」ウィジェットを追加する方法
- 独自の「スクロール」ブロックを追加する方法
- 独自の「フルワイド」ブロックを追加する方法
- 独自の「リンク」ブロックを追加する方法
- 独自の「ルビ」修飾を追加する方法
- 独自の「制限」ブロックを追加する方法
- 独自のコメント一覧ページをページネーション付きで表示する方法
- 独自のフォントを使う方法
- 独自のメニュー位置を追加する方法
- 独自設定画面にカラーピッカーなどを追加する方法
- 画像の拡大効果にキャプション表示を追加する方法
- 画像登録時にスラッグもファイル名(タイムスタンプ)に自動変更する方法
- 画像登録時にファイル名を自動変更する方法
- 目次から特定の見出しを除外する方法
- 目次から見出しに付けた特定の文字を削除する方法
- 目次ボタンをCSSのみで追加する方法
- 目次ボタンを追加する方法
- 目次リンクを見出しH2の前に追加する方法
- 目次を本文の先頭に表示する方法
- 空欄検索のときダイアログを表示する方法
- 空欄検索の結果を0件として表示する方法
- 管理画面UIの仕組みを理解してCSSのみでスライダー制御する方法
- 管理画面に独自のCSSを追加、不要なCSSを削除する方法
- 管理画面のカラーテーマを追加する方法
- 管理画面のツールバー「管理メニュー」の不要メニューを削除する方法
- 管理画面のツールバーのメニューを削除・追加する方法
- 管理画面のテキストを自由に変更する方法
- 簡単に、「アイコンボックス」ブロックのアイコンを変更する方法
- 簡単に、Arkhe風の写真フレームを作る方法
- 簡単に、Gutenbergエディターでフロントページを作成する方法
- 簡単に、SWELL風の「フルワイド」ブロックを作成する方法
- 簡単に、SWELL風の動画をアピールエリアに表示する方法
- 簡単に、ブロックをスライド表示する方法
- 簡単に、ブロックを使用してメニュー表を作成する方法
- 簡単に、ブロックを使用して料金表を作成する方法
- 簡単に、ブロックを使用して独自のCTAボックスを作成する方法
- 簡単に、ブロックを使用して順序を比較できるリストボックスを作成する方法
- 簡単に、図の横に説明文を吹き出しで追加する方法
- 簡単に、比較表を作成する方法
- 簡単に、表中にリンクボタンを追加する方法
- 簡単に、配置したブロック全体に段落スタイルを適用する方法
- 緯度・経度から本文下にGoogleマップを表示する方法
- 縦長画像のアイキャッチの左右余白を埋めて表示する方法
- 自動生成されるサムネイルを停止・削除する方法
- 複数RSSをまとめて表示する方法
- 複数の通知メッセージをアニメーション演出で表示する方法
- 複数ユーザー運営時に、ドラッグ&ドロップでユーザーロールを割り当てる方法
- 複数ユーザー運営時に、プラグインなしでユーザーの最終ログイン日時を記録・表示する方法
- 複数ユーザー運営時に、プラグインなしで独自の権限グループを登録する方法
- 複数ユーザー運営時に、メディア一覧に「アップロード者」絞り込み機能を追加する方法
- 複数ユーザー運営時に、ユーザーロール別でGutenbergブロックを制限する方法
- 複数ユーザー運営時に、ユーザー別の投稿数をダッシュボードに表示する方法
- 複数ユーザー運営時に、ログイン中のユーザーを一覧に表示する方法
- 複数ユーザー運営時に、投稿一覧に「最終更新者」を追加する方法
- 複数ユーザー運営時に、投稿編集ロックの解除タイミングを調整する方法
- 複数ユーザー運営時に、特定のユーザーに特定の固定ページだけを編集・削除させる方法
- 複数ユーザー運営時に、管理者承認付きの投稿公開フローを実装する方法
- 視覚障害者向け「読み上げ」機能を追加する方法
- 親カテゴリー一覧を自動でカード表示する方法
- 評価スターのアイコンを変更する方法
- 追加されるCSS・JavaScriptファイルからWordPressのバージョンを削除する方法
- 通知エリアのメッセージをカテゴリーページごとに変更する方法
- 通知エリアのメッセージをスクロール表示する方法
- 通知エリアのメッセージをメニュー設定から複数登録して縦スクロールする方法
- 通知エリアのメッセージを投稿ごとに変更する方法
- 通知エリア用のウィジェットエリアを追加し自由にメッセージを表示する方法
- 通知メッセージを2つ表示する方法
- 通知メッセージを表示条件で切り替え表示する方法
- 過去の投稿のコメント入力を一定期間後に自動で受け付けないようにする方法
- 関連記事からアイキャッチ画像がない投稿を除外する方法
- 関連記事に指定した投稿を先頭に追加する方法
- 閲覧時に一定日数経過した投稿を自動でパスワード付きにする方法
- 除外カテゴリー・除外アーカイブをウィジェットに完全に反映させる方法
- 除外カテゴリーをカテゴリー一覧で確認できるようにする方法
- 非公開になったWordPressプラグインを取得する方法
-
Cocoonマニュアル
- [Cocoon設定] 404ページ
- [Cocoon設定] OGP
- [Cocoon設定] SEO
- [Cocoon設定] SNSシェア
- [Cocoon設定] SNSフォロー
- [Cocoon設定] アクセス解析・認証
- [Cocoon設定] アピール
- [Cocoon設定] インデックス
- [Cocoon設定] ウィジェット
- [Cocoon設定] ウィジェットエリア
- [Cocoon設定] エディター
- [Cocoon設定] おすすめカード
- [Cocoon設定] カラム
- [Cocoon設定] カルーセル
- [Cocoon設定] コード
- [Cocoon設定] コメント
- [Cocoon設定] その他
- [Cocoon設定] タイトル
- [Cocoon設定] フッター
- [Cocoon設定] ブログカード
- [Cocoon設定] ヘッダー
- [Cocoon設定] ボタン
- [Cocoon設定] モバイル
- [Cocoon設定] リセット
- [Cocoon設定] 全体
- [Cocoon設定] 公告
- [Cocoon設定] 固定ページ
- [Cocoon設定] 投稿
- [Cocoon設定] 本文
- [Cocoon設定] 画像
- [Cocoon設定] 目次
- [Cocoon設定] 管理者画面
- [Cocoon設定] 通知
- [独自機能] ウィジェット表示設定
- [独自機能] エディター
- [独自機能] カテゴリー・タグ編集
- [独自機能] メニュー
- アクセス集計
- アフィリエイトタグ
- キャッシュ削除
- ショートコード
- テンプレート
- バックアップ
- ランキング
- 吹き出し
- 高速化
-
スキンマニュアル
- スキン「メイド・イン・ヘブン」について
- 制限・注意事項
- Cocoon設定値
- カスタマイザー
-
スキンをカスタマイズ
- 「SNSシェア」ボタンを「トップへ戻る」ボタンに合わせて表示する方法
- 「アーカイブ」「カテゴリー」「タグクラウド」ブロックのデザインを変更する方法
- 「いいね」ボタンのアイコンを変更する方法
- 「いいね」ボタンをドキドキさせる演出を追加する方法
- 「テーブル」ブロックのスクロールヒントを変更する方法
- 「レーダーチャート」ブロックのチャート色をスキンのサイトカラーに変更する方法
- 【中級者向け】スキン制御を解除し好みの設定に変更する方法
- Cocoon標準のフロントページを「JIN:R」風に変更する方法
- エントリーカードのスニペットを全文表示する方法
- エントリーカードを「大きなサムネイルにタイトルを重ねて表示する」する方法
- オリジナルレイアウトで新着・更新記事の新しい方のタブに自動切り替えする方法
- スキンでヘッダーモバイルメニューを表示する方法
- スキン配色ジェネレーター
- スクロールでメインビジュアルを左右に分割する方法
- メイン・イン・ヘブン設定をリセットするボタンを追加する方法
- 簡単にデザインをスキン「grayish」風にカスタマイズする方法
- その他
- 表示サンプル
-
追加機能
- 「回転テキスト」ブロックを追加
- 「比較ボックス」パターンを追加
- 「画像」ブロックの拡大効果を自動設定
- FAQの質問を目次に表示
- new_listショートコードに「コメント数順」の並び替え機能を追加
- アピールエリア背景画像の固定表示に関するiOSの問題対策
- ウィジェットタイトルのHTML入力可能に変更
- エントリーカードにリボン表示を追加
- ダークモード切り替え機能
- タイトルとURLをコピーを変更
- タイムラインにスタイルを追加
- タイムラインのタイトルを目次に表示
- タグクラウドドロップダウン表示を追加
- タブにスタイルを追加
- タブ一覧の最大カテゴリー数を変更
- テーブル1列目を固定表示の問題対策
- テーブルスクロールヒントを変更
- ブログカードにスタイルを追加
- ブログカードのラベルスタイルを変更
- モバイルシェアボタン表示を変更
- リストにスタイルを追加
- 固定ページをフロントページに設定したとき本文のみ表示に変更
- 投稿一覧へのPV数ソート・絞り込み機能の追加
- 新着記事、人気記事、ナビカードにスタイルを追加
- 管理画面の機能追加
- 見出しボックスにスタイルを追加
- 見出しメニューのカスタマイズ機能
- 通知メッセージ複数表示に変更
- プラグイン
-
リリースメモ
- バグ報告Ver.0.0.0→0.0.1
- バグ報告Ver.0.0.1→0.0.2
- バグ報告Ver.0.0.11→0.0.12
- バグ報告Ver.0.0.3→0.0.4
- バグ報告Ver.0.0.5→0.0.6
- バグ報告Ver.0.0.6→0.0.7
- バグ報告Ver.0.0.7→0.0.8
- バグ報告Ver.0.0.8→0.0.9
- バグ報告Ver.0.0.9→0.0.10
- バグ報告Ver.0.1.2→0.1.3
- バグ報告Ver.1.0.0→1.0.1
- バグ報告Ver.2.12.2→2.12.3
- バグ報告Ver.2.12.3→2.13.0
- バグ報告Ver.2.14.0→2.14.1
- バグ報告Ver.2.2.0→2.2.1
- バグ報告Ver.2.2.1→2.2.2
- バグ報告Ver.2.3.0→2.3.1
- バグ報告Ver.2.3.1→2.3.2
- バグ報告Ver.2.6.0→2.6.1
- バグ報告Ver.2.8.1→2.8.2
- バグ報告Ver.2.9.0→2.9.1
- バグ報告Ver.2.9.1→2.9.2
- 仕様変更Ver.2.0.0→2.0.1
- 仕様変更Ver.2.1.0→2.1.1
- 仕様変更Ver.2.10.0→2.11.0
- 仕様変更Ver.2.11.0→2.12.0
- 仕様変更Ver.2.13.0→2.14.0
- 仕様変更Ver.2.14.1→3.0.0
- 仕様変更Ver.2.7.0→2.8.0
- 改善報告Ver.0.0.16→0.1.0
- 改善報告Ver.2.12.0→2.12.1
- 改善報告Ver.2.12.1→2.12.2
- 改善報告Ver.2.8.0→2.8.1
- 改善報告Ver.2.9.2→2.9.3
- 未分類
-
雑談
- 「アルジャーノンに花束」を添えて綴るWordPress探求の3年間
- ChatGPTなどのAIを使いこなせない人の特徴は「やりたいことを言語化できていない」こと
- Cocoonアップデートに映る1人の限界と個人開発のリアル
- CocoonとSWELLの最新ブロック機能比較ガイド
- CocoonとXwriteの対応速度の違いから考える、開発体制の課題
- Cocoonのスキン「grayish」の詳細と改善点
- Cocoonの収益化機能をどう使いこなすべきか?クリック計測から見えた「配置」と「運用」の真実
- Cocoonの最大のデメリット
- Cocoon本体に統合された機能
- LPは作れてもサイトは作れない?パターンライブラリのメリットと、素人が陥るデザイン不統一の壁
- Webデザイナーに必要な基礎知識と現実
- WordPress TELEXでブロック作成をもっと簡単に
- WordPress×AIの作業爆速化!大量の過去記事メンテナンスとデータ管理を一気通貫で仕組み化した話
- WordPressテーマへの機能要望、どこまで求めるべきか? 個別カスタマイズと標準機能の違い
- WordPressでページが作れない原因は「文章ツールとの勘違い」にあった?
- WordPressで稼げないと思う人が多い理由
- WordPressの脆弱性で「オワコン」と騒ぐ前に考えたいこと
- WordPressパターンライブラリによる効率的なサイト構築
- WordPress初心者に高機能テーマは必要なのか? サイト運営の現実と収益化の考え方
- Xwriteフォーラムに見るノーコード全盛期だからこそ問われる制作者のリテラシー
- あなたの回答は伝わっていますか?技術的な正しさと同じくらい大切な「情報の伝え方」
- エスカレーターのような斜めのスライダー?!
- サーバー代を払ってまで情報発信する意味とは
- サイト型にするのは効果が薄い上、時間の無駄
- ジムの複雑なスケジュール管理を直感的に行えるプラグインを作成
- そこのあなた!Gutenbergエディター使えてますか?
- プラグイン「XO Event Calendar」終了に伴う独自イベントカレンダープラグインの作成
- 初心者が知っておきたいサイト運営の責任範囲 - SWELLフォーラムのPHP脆弱性に関する質問から考える
- 綺麗ごとばかりの宣伝と現実の乖離を問うCocoonフォーラム3年間
- 過去の振り返りとCocoonフォーラム対応の教訓
使用方法
以下にショートコードを示します。
[my_sitemap_tree]
実装手順
以下のコードをfunctions.phpに追加します。
/**
* 固定ページを階層構造で再帰的に表示
*
* @param WP_Post[] $pages 固定ページの配列
* @param int $parent_id 親ページID(初期値0)
* @return string 生成されたHTML
*/
if (!function_exists('sitemap_tree_render_pages')):
function sitemap_tree_render_pages($pages, $parent_id = 0) {
ob_start();
foreach ($pages as $page) {
if ($page->post_parent == $parent_id) {
$permalink = esc_url(get_permalink($page));
$title = esc_html($page->post_title);
$children = sitemap_tree_render_pages($pages, $page->ID);
?>
<li class="sitemap-tree__item">
<a href="<?= $permalink; ?>" class="sitemap-tree__link"><?= $title; ?></a>
<?php if ($children): ?>
<ul class="sitemap-tree__children"><?= $children; ?></ul>
<?php endif; ?>
</li>
<?php
}
}
return ob_get_clean();
}
endif;
/**
* カテゴリーと投稿を階層構造で再帰的に表示
*
* @param array $cat_tree 親IDごとのカテゴリーマップ
* @param array $post_map カテゴリーIDごとの投稿マップ
* @param int $parent_id 親カテゴリーID
* @return string 生成されたHTML
*/
if (!function_exists('sitemap_tree_render_categories')):
function sitemap_tree_render_categories($cat_tree, $post_map, $parent_id = 0) {
if (empty($cat_tree[$parent_id])) {
return '';
}
ob_start();
foreach ($cat_tree[$parent_id] as $category) {
$cat_id = $category->term_id;
// 子カテゴリー群のHTMLを再帰取得
$subcats_html = sitemap_tree_render_categories($cat_tree, $post_map, $cat_id);
// このカテゴリーに属する投稿
$posts = !empty($post_map[$cat_id]) ? $post_map[$cat_id] : [];
// 子要素(子カテゴリまたは記事)が存在するか判定
$has_children = !empty($subcats_html) || !empty($posts);
$li_class = $has_children ? 'sitemap-tree__category-item sitemap-tree__category-item--has-children' : 'sitemap-tree__category-item';
$category_name = esc_html($category->name);
?>
<li class="<?= esc_attr($li_class); ?>">
<span class="sitemap-tree__category-name"><?= $category_name; ?></span>
<?php if ($has_children): ?>
<ul class="sitemap-tree__subcategory-list">
<?php foreach ($posts as $post): ?>
<li class="sitemap-tree__post-item">
<a href="<?= esc_url(get_permalink($post)); ?>" class="sitemap-tree__post-link">
<?= esc_html($post->post_title); ?>
</a>
</li>
<?php endforeach; ?>
<?= $subcats_html; ?>
</ul>
<?php endif; ?>
</li>
<?php
}
return ob_get_clean();
}
endif;
// ショートコードを追加
add_shortcode('my_sitemap_tree', function () {
// 固定ページを一括取得
$pages = get_pages(['sort_column' => 'menu_order']);
// 全カテゴリーを一括取得
$all_categories = get_terms([
'taxonomy' => 'category',
'hide_empty' => false,
]);
// 全公開投稿を一括取得
$all_posts = get_posts([
'post_type' => 'post',
'post_status' => 'publish',
'numberposts' => -1,
'orderby' => 'title',
'order' => 'ASC',
]);
// カテゴリーの階層マップを作成
$cat_tree = [];
if (!is_wp_error($all_categories)) {
foreach ($all_categories as $cat) {
$cat_tree[$cat->parent][] = $cat;
}
}
// 投稿を所属カテゴリーに分類
$post_map = [];
foreach ($all_posts as $post) {
$cats = wp_get_post_categories($post->ID);
foreach ($cats as $cat_id) {
$post_map[$cat_id][] = $post;
}
}
ob_start();
?>
<div class="sitemap-tree">
<h2 class="sitemap-tree__heading">固定ページ</h2>
<ul class="sitemap-tree__list">
<?= sitemap_tree_render_pages($pages); ?>
</ul>
<h2 class="sitemap-tree__heading">投稿</h2>
<ul class="sitemap-tree__list">
<?= sitemap_tree_render_categories($cat_tree, $post_map, 0); ?>
</ul>
</div>
<?php
return ob_get_clean();
});
// フロント用JS・CSSを追加
add_action('wp_enqueue_scripts', function () {
ob_start();
?>
.sitemap-tree__category-item--has-children {
> .sitemap-tree__subcategory-list {
display: none;
}
&.sitemap-tree__category-item--active {
> .sitemap-tree__subcategory-list {
display: block;
}
> .sitemap-tree__category-name::before {
content: '\f07c';
}
}
> .sitemap-tree__category-name {
cursor: pointer;
padding-left: 1.5em;
position: relative;
&::before {
content: '\f07b';
font-family: 'Font Awesome 5 Free';
font-weight: 900;
left: 0;
position: absolute;
}
}
}
.article .sitemap-tree {
overflow-x: auto;
white-space: nowrap;
.sitemap-tree__list {
li {
list-style: none;
margin: 0;
padding-left: 1em;
position: relative;
}
li {
&::before {
background-color: #333;
content: '';
height: 1px;
left: -0.5em;
margin: auto;
position: absolute;
top: 0.75em;
width: 1em;
}
&::after {
background-color: #333;
bottom: 0;
content: '';
height: 100%;
left: -0.5em;
position: absolute;
top: 0;
width: 1px;
}
&:last-child::after {
height: 0.75em;
}
}
}
}
<?php
$handle = 'sitemap-tree';
wp_register_style($handle, false);
wp_enqueue_style($handle);
wp_add_inline_style($handle, ob_get_clean());
ob_start();
?>
jQuery(function ($) {
$('.sitemap-tree__category-item--has-children > .sitemap-tree__category-name').click(function () {
$(this).parent('.sitemap-tree__category-item--has-children').toggleClass('sitemap-tree__category-item--active');
});
});
<?php
wp_add_inline_script('jquery', ob_get_clean());
});
さいごに
今回紹介した方法を使えば、でサイトマップをLuxeritasのように階層表示できます。
固定ページや投稿を整理して表示できるため、訪問者が目的のページにアクセスしやすくなります。
また、カテゴリーごとに折りたたみ表示できるため、サイト構造が複雑でも見やすくなります。


