WP Manifestindependent plugin directory
manifest / editor / next-loop-visibility-threshold

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.zip

Query Loop ブロック内の投稿総数が指定した閾値以上の場合にのみ、インナーブロックを表示する WordPress プラグインです。


機能

  • 条件付き表示: Query Loop の投稿総数が閾値以上 → インナーブロックを表示 / 未満 → 非表示
  • ブロック個別設定: ブロックごとにサイドバーから閾値を設定できる
  • サイト共通設定: 管理画面からデフォルト閾値を設定できる
  • ビルド不要: JavaScript のビルドステップなしで動作

動作要件

項目 バージョン
WordPress 6.1 以上
PHP 7.4 以上

インストール

  1. プラグインフォルダを /wp-content/plugins/NExT-Loop-Visibility-Threshold/ に配置する
  2. WordPress 管理画面の「プラグイン」から「NExT Loop Visibility Threshold」を有効化する

使い方

基本手順

  1. エディターで Query Loop ブロックを配置する
  2. Query Loop 内(Post Template 内)に 「Loop Visibility Threshold」 ブロックを追加する
  3. ブロックのインナーブロックに表示したいコンテンツを追加する
  4. 必要に応じてサイドバーから閾値を設定する

閾値の設定

ブロックのサイドバー「表示閾値設定」→「最低投稿数」に数値を入力します。

設定値 動作
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.ymlmain への push / PR で phpcs・PHPUnit(WP 最新+1世代前 × PHP 8.3/8.4)・Plugin Check を実行
  • .github/workflows/release.yml1.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_typepost_type_exists() で登録済みタイプのみ許可するよう修正
    • orderASC / DESC のホワイトリストで検証するよう修正
    • orderby を WP_Query の許可値ホワイトリストで検証するよう修正

1.0.0

  • 初回リリース