Easy Sitemap (WordPress プラグイン)

WordPress 向けのモダンで高性能な HTML サイトマップジェネレーター。

Easy Sitemap は、強力なショートコードシステムを使用して、ページ、投稿、カスタム投稿タイプ (CPT) の完全にカスタマイズ可能なサイトマップを表示できます。モダンな OOP アーキテクチャで構築されており、インテリジェントなキャッシュ、PSR-4 オートローディング、開発者向けの豊富なフックを備えています。

Easy Sitemap (WordPress Plugin)

✨ 主な機能

サイトビルダー向け

  • ユニバーサルCPT対応: 全ての公開投稿タイプ(WooCommerce製品、ポートフォリオなど含む)を自動検出しサポートします。
  • ビジュアルショートコードジェネレーター: 属性を覚える必要なくコードを生成できる、管理パネル内のインタラクティブビルダー。
  • 階層レイアウト: ページの親子関係や投稿のカテゴリグループを表示します。
  • レスポンシブグリッド: CSSグリッドによるマルチカラムレイアウト(最大6列)をサポート。
  • 安全なカスタムスタイリング: テーマを変更することなく、プラグイン設定内で直接カスタムCSSを追加可能。

⚡ パフォーマンス & 技術

  • インテリジェントキャッシュ: WordPressのTransients APIを使用し、ゲストユーザーにはキャッシュされた出力を提供し、ログイン済みユーザーには動的なコンテンツを表示します。
  • 最適化されたクエリ: no_found_rows や効率的なデータベース呼び出しを活用し、オーバーヘッドを最小限に抑えます。
  • モダンなアーキテクチャ: PSR-4オートローディングを採用したクリーンなOOP設計です。
  • SEOフレンドリー: 意味論的で構造化されたHTMLマークアップを生成します。

必要条件

  • WordPress: 5.0以上
  • PHP: 7.2以上
  • MySQL: 5.6以上

インストール

  1. ダウンロード: プラグインファイルを解凍します。
  2. アップロード: easy-sitemap フォルダをサーバーの /wp-content/plugins/ ディレクトリに移動します。
  3. 有効化: WordPress 管理画面 → プラグイン に移動し、Easy Sitemap を有効化します。
  4. 設定: 設定 → Easy Sitemap に移動し、全体設定を調整するか、ショートコードジェネレーターを使用します。

ショートコードの使用方法

サイトマップを表示するには、任意の投稿、固定ページ、またはウィジェットに
[easy_sitemap]
ショートコードを挿入してください。

ショートコードジェネレーター

推奨: 属性を手動で入力する代わりに、設定 → Easy Sitemap に移動してください。組み込みのジェネレーターを使用すると、UIでオプションを切り替え、生成されたショートコードを自動的にクリップボードにコピーできます。

手動属性リファレンス

以下の属性を使用して出力をカスタマイズできます:

1. コンテンツとフィルタリング

属性 タイプ デフォルト 説明
post_type string post 表示する投稿タイプ(例:pageproductportfolio)。
limit int 1000 表示するアイテムの最大数。
include string null 含めるIDのカンマ区切りリスト(例:10,15,22)。
exclude string null 除外するIDのカンマ区切りリスト。
category string null カテゴリースラッグでフィルタリング(例:news,updates)。
tag string null タグスラッグでフィルタリング。
author int null 著者IDでフィルタリング。
date_from string null 開始日(形式:YYYY-MM-DD)。
date_to string null 終了日(形式:YYYY-MM-DD)。

2. 高度なタクソノミーフィルタリング

カスタムタクソノミー(例:WooCommerce 商品カテゴリー)でフィルタリングするには:

  • taxonomy: タクソノミースラッグ(例:product_cat)。
  • term: 特定のタームスラッグ(例:accessories)。
  • 注意:両方の属性を一緒に使用する必要があります。

3. 並べ替え

属性 オプション デフォルト
orderby date, title, modified, menu_order, rand, ID date
order DESC(降順), ASC(昇順) DESC

4. 表示 & レイアウト

属性 タイプ デフォルト 説明
show_dates bool 0 タイトルの横に公開日を表示します。
show_excerpts bool 0 投稿の抜粋を表示します。
show_images bool 0 アイキャッチ画像(サムネイル)を表示します。
hierarchical bool 0 親/子構造(固定ページ)またはカテゴリーグループ(投稿)を表示します。
columns int 1 リストを列に分割します(最大: 6)。
class string null ラッパーにカスタム CSS クラスを追加します。

5. キャッシング (インスタンスごと)

属性 説明
cache 特定のショートコードに対してキャッシュを無効にするには 0 に設定します(グローバル設定を上書きします)。
cache_expiry 秒単位の期間(デフォルト: 3600)。

標準ブログリスト

[easy_sitemap post_type="post" show_dates="1" category="news"]

WooCommerce商品グリッド
12個の電子製品を画像付きで3列グリッドで表示します。

[easy_sitemap post_type="product" taxonomy="product_cat" term="electronics" show_images="1" columns="3" limit="12"]

階層型ページ
目次やサイトインデックスに最適です。

[easy_sitemap post_type="page" hierarchical="1" orderby="menu_order" order="ASC"]

日付範囲別ポートフォリオ

[easy_sitemap post_type="portfolio" date_from="2023-01-01" date_to="2023-12-31"]

⚙️ 設定とパフォーマンス

インテリジェントキャッシュ

このプラグインは、大規模なサイトマップでもサイトの高速性を維持するために、スマートなキャッシュシステムを使用しています。

  • グローバル設定: 設定 → Easy Sitemap でキャッシュを設定します。
  • ゲスト専用モード: キャッシュはログインしていないユーザー(ゲスト)にのみ適用されます。ログインしている管理者は常にライブデータを確認できます。
  • Transients: ネイティブWordPressのTransientsを使用します。
  • 自動クリア: プラグインが無効化されると、キャッシュは自動的にクリアされます。

カスタムスタイリング

プラグイン設定のカスタムCSSボックスを使用して、サイトマップのスタイルを設定できます。

一般的なセレクタ:

/* コンテナ */
.easy-sitemap { margin-bottom: 30px; }

/* リスト項目 */
.easy-sitemap-item { border-bottom: 1px solid #eee; }

/* 画像 */
.easy-sitemap-image { border-radius: 4px; max-width: 80px; }

/* 日付 */
.easy-sitemap-date { font-size: 0.85em; color: #888; }

‍ 開発者向けドキュメント

アーキテクチャ

このプラグインは、管理画面、フロントエンド、コアロジックの間で関心の分離を行い、厳格なPSR-4標準に従っています。

classes/
├── EasySitemap/
│   ├── Admin/          # 設定 & UI
│   ├── Frontend/       # ショートコードエンジン & アセット
│   ├── Autoloader.php
│   └── Plugin.php      # ブートストラップ

フック & フィルター

以下のフィルターを使用して、プログラムで動作を変更できます:

1. クエリ引数の変更
サイトマップが取得される前に、
WP_Query
の引数を調整します。

add_filter( 'easy_sitemap_query_args', function( $query_args, $atts ) {
    // 例:すべてのサイトマップで特定のカテゴリーIDを強制的に除外する
    $query_args['category__not_in'] = [ 99 ];
    return $query_args;
}, 10, 2 );

2. 出力HTMLを変更する
最終的なHTMLがレンダリングされる前にフィルターをかけます。

add_filter( 'easy_sitemap_output', function( $output, $atts, $posts ) {
    return '<div class="my-wrapper">' . $output . '</div>';
}, 10, 3 );

3. 画像サイズを変更する
ソース画像のサイズを変更します(デフォルトは ‘thumbnail’)。

add_filter( 'easy_sitemap_image_size', function( $size ) {
    return 'medium';
} );

4. サポート対象の投稿タイプを追加する
自動検出が失敗した場合、複雑なカスタム投稿タイプのサポートを手動で追加します。

add_filter( 'easy_sitemap_supported_post_types', function( $post_types ) {
    $post_types['my_custom_type'] = 'My Custom Type';
    return $post_types;
} );

トラブルシューティング

  • 画像が表示されませんか? show_images="1" 属性が指定されていることと、お使いのテーマが投稿サムネイルをサポートしていることを確認してください。
  • 変更が反映されませんか? キャッシュが有効になっている場合、有効期限(デフォルトは1時間)が切れるのを待つか、プラグインの設定ページを保存してキャッシュを手動でクリアしてください。
  • ショートコードジェネレーターに問題がありますか? お使いのブラウザがクリップボードへのアクセスを許可していることを確認してください。「コピー」ボタンが機能しない場合は、ジェネレーターボックスからテキストを手動でコピーしてください。

ライセンス & クレジット

ライセンス: GNU General Public License v2.0 またはそれ以降。

WordPressコミュニティのために ❤️ を込めて作成。