NExT Loop Visibility Threshold
Query Loop ブロック内の投稿総数が閾値以上の場合にインナーブロックを表示する WordPress プラグイン
by NExT-Season · github.com/atsushia/next-loop-visibility-threshold · website
★ 0stars
0forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/atsushia/next-loop-visibility-threshold/archive/refs/heads/main.zipQuery Loop ブロック内の投稿総数が指定した閾値以上の場合にのみ、インナーブロックを表示する WordPress プラグインです。
機能
- 条件付き表示: Query Loop の投稿総数が閾値以上 → インナーブロックを表示 / 未満 → 非表示
- ブロック個別設定: ブロックごとにサイドバーから閾値を設定できる
- サイト共通設定: 管理画面からデフォルト閾値を設定できる
- ビルド不要: JavaScript のビルドステップなしで動作
動作要件
| 項目 | バージョン |
|---|---|
| WordPress | 6.1 以上 |
| PHP | 7.4 以上 |
インストール
- プラグインフォルダを
/wp-content/plugins/NExT-Loop-Visibility-Threshold/に配置する - WordPress 管理画面の「プラグイン」から「NExT Loop Visibility Threshold」を有効化する
使い方
基本手順
- エディターで Query Loop ブロックを配置する
- Query Loop 内(Post Template 内)に 「Loop Visibility Threshold」 ブロックを追加する
- ブロックのインナーブロックに表示したいコンテンツを追加する
- 必要に応じてサイドバーから閾値を設定する
閾値の設定
ブロックのサイドバー「表示閾値設定」→「最低投稿数」に数値を入力します。
| 設定値 | 動作 |
|---|---|
0 |
サイト設定のデフォルト値を使用 |
1 以上 |
入力した数以上の投稿がある場合に表示 |
動作例
閾値を 3 に設定した場合:
| 実際の投稿数 | 表示 |
|---|---|
| 1 | 非表示 |
| 2 | 非表示 |
| 3 | 表示 |
| 10 | 表示 |
管理画面設定
設定 > Loop Visibility Threshold からサイト全体のデフォルト閾値を設定できます。
ブロック個別の閾値が 0 の場合にこのデフォルト値が使われます。
ファイル構成
NExT-Loop-Visibility-Threshold/
├── next-loop-visibility-threshold.php # メインプラグインファイル
├── block.json # ブロックメタデータ
├── assets/
│ ├── editor.js # エディタースクリプト
│ └── style.css # フロントエンドスタイル
└── includes/
├── class-nlvt-settings.php # 管理画面設定ページ
└── class-nlvt-block.php # ブロック登録・レンダリング
開発・テスト
必要なもの
- PHP 8.3
- Composer
- Node.js + npm(wp-env 用)
- Docker(Integration / e2e の wp-env 用)
セットアップ
composer install
npm install
コーディング規約チェック(phpcs / WPCS)
composer run phpcs # チェック
composer run phpcbf # 自動修正
テスト
# Unit テスト(WordPress 非依存・Brain Monkey)
composer run test:unit
# Integration テスト(wp-env 上。Docker が必要)
npm run env:start
composer run test:integration # = npx wp-env run tests-cli ... 経由でも可
ポート 8888/8889 が他の環境と競合する場合は、
WP_ENV_PORT/WP_ENV_TESTS_PORT環境変数、または.wp-env.override.json(gitignore 済み)でポートを変更してください。
CI / リリース
.github/workflows/ci.yml—mainへの push / PR で phpcs・PHPUnit(WP 最新+1世代前 × PHP 8.3/8.4)・Plugin Check を実行.github/workflows/release.yml—1.2.3形式のタグ push で配布用 zip を作成し GitHub Release を発行(タグとプラグインヘッダーの Version が一致しない場合は失敗)
リリース手順:
# メインファイルの Version とタグを一致させる
git tag 1.1.0
git push origin 1.1.0
ライセンス
GPL-2.0-or-later — https://www.gnu.org/licenses/gpl-2.0.html
変更履歴
1.1.1
- 開発・テスト・CI/CD 基盤を追加(phpcs / PHPUnit / GitHub Actions / Plugin Check / タグリリース)
- 配布パッケージから
vendor/を除外(実行時に Composer 依存を使用しないため)
1.1.0
- セキュリティ: フォールバック関数
build_query_args_from_context()の入力値検証を強化post_typeをpost_type_exists()で登録済みタイプのみ許可するよう修正orderをASC/DESCのホワイトリストで検証するよう修正orderbyを WP_Query の許可値ホワイトリストで検証するよう修正
1.0.0
- 初回リリース