hamworks/wp-taxonomy

0.6.1 2023-11-15 08:39 UTC

This package is auto-updated.

Last update: 2025-08-20 11:58:53 UTC


README

WordPressのカスタムタクソノミーを簡単に作成するためのライブラリです。ビルダーパターンを使用して、タクソノミーの登録、初期タームの設定、管理画面との統合を簡単に行えます。

特徴

  • 初期ターム設定: タクソノミー登録時に自動でデフォルトタームを作成
  • 管理画面統合: 管理カラムとドロップダウンフィルターの自動サポート
  • REST API & GraphQL対応: WordPress REST APIとGraphQL(WPGraphQL)の組み込みサポート
  • 日本語ラベル: 日本語対応のカスタマイズ可能なラベル
  • 階層型タクソノミー: 親子関係のあるタームをサポート

インストール

Composerを使用してインストール:

composer require hamworks/wp-taxonomy

基本的な使用方法

シンプルなタクソノミーの作成

$builder = new HAMWORKS\WP\Taxonomy\Builder( 'product-category', '商品カテゴリ', [ 'product' ] );
$builder->create();

詳細設定を含むタクソノミー

$builder = new HAMWORKS\WP\Taxonomy\Builder( 'product-category', '商品カテゴリ', [ 'product' ] );
$builder->set_options([
    'public'            => true,
    'hierarchical'      => true,
    'show_ui'          => true,
    'show_admin_column' => true,
    'show_in_nav_menus' => true,
    'show_tagcloud'     => true,
    'description'       => '商品を整理するためのカテゴリ',
    'has_archive'       => true,
    'rewrite'          => [
        'slug'       => 'products/category',
        'with_front' => false,
    ],
]);
$builder->create();

初期タームの設定

タクソノミー登録時にデフォルトのタームを自動作成できます:

$builder = new HAMWORKS\WP\Taxonomy\Builder( 'product-category', '商品カテゴリ', [ 'product' ] );

// シンプルなタームを作成
$electronics = new \HAMWORKS\WP\Taxonomy\Term( '家電', 'electronics' );
$clothing = new \HAMWORKS\WP\Taxonomy\Term( '衣類', 'clothing' );

$builder->set_initial_term( $electronics );
$builder->set_initial_term( $clothing );
$builder->create();

メタデータ付きの階層型タームの作成

$builder = new HAMWORKS\WP\Taxonomy\Builder( 'product-category', '商品カテゴリ', [ 'product' ] );

// 親カテゴリ
$electronics = new \HAMWORKS\WP\Taxonomy\Term(
    '家電',                    // 名前
    'electronics',            // スラッグ
    0,                        // 親(0はトップレベル)
    '家電製品のカテゴリ',       // 説明
    '',                       // エイリアス
    [                         // メタデータ
        'featured' => true,
        'color' => '#3498db'
    ]
);

// 子カテゴリ
$smartphones = new \HAMWORKS\WP\Taxonomy\Term(
    'スマートフォン',
    'smartphones',
    'electronics',            // 親スラッグ
    '携帯電話とアクセサリー',
    '',
    [
        'icon' => 'smartphone'
    ]
);

$builder->set_initial_term( $electronics );
$builder->set_initial_term( $smartphones );
$builder->create();

APIリファレンス

Builderクラス

コンストラクタ

new Builder( string $name, string $label, array|string $post_type = ['post'] )
  • $name: タクソノミースラッグ(URLやデータベースで使用)※単数形で指定してください
  • $label: 人が読める形のタクソノミー名
  • $post_type: 関連付ける投稿タイプ

注意: $nameパラメータは単数形で指定してください。ライブラリ内部で自動的に複数形に変換されます(例:categorycategories)。

メソッド

set_options( array $args )

タクソノミー登録引数を設定。デフォルト値とマージされます。

デフォルトオプション:

[
    'show_in_rest'        => true,
    'show_in_graphql'     => true,
    'graphql_single_name' => $singular_slug,
    'graphql_plural_name' => $plural_slug,
    'rest_base'           => $plural_slug,
    'show_admin_column'   => true,
    'rewrite'             => [
        'with_front' => false,
        'slug'       => $singular_slug,
        'walk_dirs'  => false,
    ],
]
set_labels( array $args )

タクソノミーラベルをカスタマイズ。日本語デフォルトとマージされます。

set_initial_term( Term $term )

タクソノミー登録時に自動作成するタームを追加。

create()

タクソノミーを登録し、初期タームを作成。

get_taxonomy()

登録された WP_Taxonomy オブジェクトを返します。

Termクラス

コンストラクタ

new Term( string $name, string $slug = '', int|string $parent = 0, string $description = '', string $alias_of = '', array $meta = [] )
  • $name: ターム表示名
  • $slug: タームスラッグ(空の場合は名前から自動生成)
  • $parent: 階層型タクソノミーの親タームIDまたはスラッグ
  • $description: ターム説明
  • $alias_of: 他のタームのエイリアス
  • $meta: タームメタデータのキーバリュー配列

複数の投稿タイプ

$builder = new HAMWORKS\WP\Taxonomy\Builder( 
    'topic', 
    'トピック', 
    [ 'post', 'page', 'custom_post_type' ] 
);
$builder->create();

カスタムラベル

$builder = new HAMWORKS\WP\Taxonomy\Builder( 'skill', 'スキル', [ 'employee' ] );
$builder->set_labels([
    'name'                => 'スキル',
    'singular_name'       => 'スキル',
    'search_items'        => 'スキルを検索',
    'popular_items'       => '人気のスキル',
    'all_items'          => '全てのスキル',
    'edit_item'          => 'スキルを編集',
    'update_item'        => 'スキルを更新',
    'add_new_item'       => '新しいスキルを追加',
    'new_item_name'      => '新しいスキル名',
    'menu_name'          => 'スキル',
]);
$builder->create();