WP Manifestindependent plugin directory
manifest / media / wp-plugin-kashiwazaki-seo-tubelist-shortcode

Kashiwazaki SEO TubeList Shortcode

WordPress shortcode plugin that embeds responsive YouTube channel, playlist, or @handle video lists with [ks_tubelist]. Four display modes (grid, paginate, load-more, carousel), YouTube Data API v3 with transient caching, JSON-LD VideoObject schema for SEO, full ARIA/keyboard a11y, auto dark mode, and 21 CSS variables for theming.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/tsuyoshikashiwazaki/wp-plugin-kashiwazaki-seo-tubelist-shortcode/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

YouTube のチャンネルID / プレイリストID / @ハンドルを指定して、固定ページや投稿内にレスポンシブな動画一覧をショートコード [ks_tubelist] で表示する WordPress プラグインです。YouTube Data API v3 を利用し、取得結果は WordPress の transient でキャッシュします。表示モード 4 種、JSON-LD 構造化データ、アクセシビリティ、ダークモード自動対応まで標準装備しています。

主な機能

  • ショートコード [ks_tubelist] による動画一覧の埋め込み
  • 取得元: チャンネルID (UC...) / プレイリストID (PL/UU/FL/RD/OL/LL...) / @ハンドル (@MyChannel) / 単発動画 (video 属性に動画ID・URL をカンマ区切りで複数指定可) に対応
  • 表示モード: グリッド / ページネーション(数字ボタン)/ もっと見る / カルーセル(横スクロール)
  • 並び順: 新しい順 / 古い順 / 人気順(視聴回数)/ ランダム / 取得元の並び順を維持(manual)
  • 表示項目: タイトル / 公開日 / 再生時間 / 視聴回数 / 概要(説明文)
  • 概要文の <details> ベースのアコーディオン展開(JS不要、:has() 非対応ブラウザは JS フォールバック)
  • 見出しレベル制御(heading_level 属性で h2-h6 を選択、目次プラグイン対策)
  • タイトルの行数クランプ(title_lines 属性)
  • 日付フォーマット個別指定(date_format 属性)
  • JSON-LD ItemList + VideoObject 構造化データ出力(SEO 用、jsonld="yes")
  • 管理画面でデフォルト表示モード/ページサイズを保存
  • API キーは password 型入力 + 「表示」「テスト」ボタン
  • API キー変更時に transient キャッシュを自動破棄
  • 管理画面からのキャッシュ手動クリア + admin_notice 通知
  • アクセシビリティ: ARIA region / aria-label / aria-live / aria-controls / aria-current
  • prefers-reduced-motion で smooth scroll / transition を自動無効化
  • prefers-color-scheme: dark でダークモード自動対応(kstls-no-dark クラスで opt-out 可)
  • カルーセルのキーボード操作(ArrowLeft / ArrowRight / Home / End)
  • レスポンシブ対応(900px / 640px / 420px ブレークポイントで自動列調整)
  • 21 個の CSS カスタムプロパティで配色・余白・行数を上書き可能
  • 初回バッチ画像の loading="eager" + fetchpriority="high" で LCP 改善
  • アセットの filemtime() ベース cache busting(CDN キャッシュ自動切替)
  • 本文にショートコード検出時に wp_head で先行 enqueue(FOUC 防止)
  • transient による API レスポンスキャッシュ(秒数指定可)
  • プラグイン一覧からワンクリックで設定画面へ
  • アンインストール時にオプション・transient を完全削除(マルチサイト対応)

インストール

  1. wp-plugin-kashiwazaki-seo-tubelist-shortcode ディレクトリを wp-content/plugins/ にアップロード
  2. WordPress 管理画面の「プラグイン」画面で「Kashiwazaki SEO TubeList Shortcode」を有効化
  3. 管理画面メニュー「Kashiwazaki SEO TubeList Shortcode」から YouTube Data API キーを設定

YouTube Data API キーの取得

  1. Google Cloud Console でプロジェクトを作成
  2. 「APIとサービス」→「ライブラリ」から YouTube Data API v3 を有効化
  3. 「APIとサービス」→「認証情報」から API キーを発行
  4. 取得した API キーを本プラグインの設定画面に貼り付け

使い方

プレイリストから取得

[ks_tubelist playlist="PLxxxx" count="12" cols="3" order="newest" show="title,date"]

チャンネルから取得

[ks_tubelist channel="UCxxxx" count="8" cols="4" order="popular" show="title,date,duration"]

@ハンドルから取得

[ks_tubelist handle="@MyChannel" count="6" cols="3" mode="loadmore" per_page="6"]

単発動画・動画URLから取得

動画ID または動画URL(watch?v= / youtu.be / shorts / embed / live 形式)をカンマ区切りで指定できます。count 未指定なら指定した動画を全件表示、order 未指定なら記述順のまま表示します。

[ks_tubelist video="dQw4w9WgXcQ" cols="1"]
[ks_tubelist video="dQw4w9WgXcQ, https://youtu.be/xxxxxxxxxxx, https://www.youtube.com/watch?v=yyyyyyyyyyy" cols="3"]

もっと見る + 説明文 + JSON-LD 出力

[ks_tubelist channel="UCxxxx" count="60" cols="3" mode="loadmore" per_page="6"
             show="title,date,description" excerpt_length="160" jsonld="yes"]

属性一覧

属性 初期値 説明
channel ― YouTube チャンネルID(UC で始まる識別子)
playlist ― プレイリストID(PL / UU / FL / RD / OL / LL 始まり)
handle ― @ハンドル(例: @MyChannel)。内部で API がチャンネルIDに解決
video ― 動画ID(11文字)または動画URL。カンマ区切りで複数指定可(最大200件)

取得元(channel / playlist / handle / video)は通常いずれか 1 つを指定します。複数同時指定した場合は video > playlist > handle > channel の優先順で 1 つだけが採用されます。 | count | 12 | 取得する動画件数(1〜200)。video 指定時に未指定なら指定した動画を全件表示 | | mode | 管理画面の既定値 | 表示モード。grid / paginate / loadmore / carousel | | per_page | 管理画面の既定値 | 1ページ(1スクリーン)に表示する件数 | | cols | 3 | グリッドの列数(1〜8)。画面幅に応じて自動で減少 | | order | newest | 並び順。newest / oldest / popular / random / manual(取得元の並びを維持。video 指定時に未指定なら記述順 = manual 扱い) | | show | title,date | 表示項目をカンマ区切りで指定。title / date / duration / views / description | | excerpt_length | 120 | description を表示する際の最大文字数。0 で全文表示 | | cache | 3600 | 取得結果のキャッシュ秒数。0 で無効化 | | heading_level | 3 | タイトルの見出しレベル(2〜6) | | title_lines | 2 | タイトルの行数クランプ(1〜6) | | date_format | WP 設定値 | PHP 日付フォーマット文字列(例: Y/m/d) | | jsonld | no | yes で ItemList + VideoObject の JSON-LD を出力(SEO 用) |

CSS カスタマイズ

主要な見た目は 21 個の CSS カスタムプロパティで上書きできます。

.kstls-tubelist {
    --kstls-gap: 24px;
    --kstls-radius: 10px;
    --kstls-title-color: #111;
    --kstls-title-lines: 3;
    --kstls-sub-color: #888;
    --kstls-link-color: inherit;
    --kstls-control-bg: #ffffff;
    --kstls-control-active-bg: #1d2327;
    --kstls-duration-bg: rgba(0, 0, 0, 0.8);
    --kstls-scroll-offset: 80px;
}

ダークモードは @media (prefers-color-scheme: dark) で自動的に色変数を切り替えます。無効化したい場合はショートコードを囲む要素に kstls-no-dark クラスを付与してください。

ドキュメント

利用者向けの完全マニュアルは docs/ に同梱しています。GitHub Pages で公開する場合は Settings → Pages → Source: Deploy from a branch → main / docs を選択してください。

動作環境

  • WordPress 5.0 以上 (Tested up to 6.7)
  • PHP 7.2 以上
  • YouTube Data API v3 のキー
  • mbstring 拡張(推奨。description の文字数カウントに使用)

ライセンス

GPL v2 or later