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

✨ 主な機能
サイトビルダー向け
- ユニバーサル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以上
インストール
- ダウンロード: プラグインファイルを解凍します。
- アップロード:
easy-sitemapフォルダをサーバーの/wp-content/plugins/ディレクトリに移動します。 - 有効化: WordPress 管理画面 → プラグイン に移動し、Easy Sitemap を有効化します。
- 設定: 設定 → Easy Sitemap に移動し、全体設定を調整するか、ショートコードジェネレーターを使用します。
ショートコードの使用方法
サイトマップを表示するには、任意の投稿、固定ページ、またはウィジェットに
[easy_sitemap]
ショートコードを挿入してください。
ショートコードジェネレーター
推奨: 属性を手動で入力する代わりに、設定 → Easy Sitemap に移動してください。組み込みのジェネレーターを使用すると、UIでオプションを切り替え、生成されたショートコードを自動的にクリップボードにコピーできます。
手動属性リファレンス
以下の属性を使用して出力をカスタマイズできます:
1. コンテンツとフィルタリング
| 属性 | タイプ | デフォルト | 説明 |
|---|---|---|---|
post_type |
string | post |
表示する投稿タイプ(例:page、product、portfolio)。 |
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コミュニティのために ❤️ を込めて作成。