pressbooks/pb-cli 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pressbooks/pb-cli

最新稳定版本:3.1.0

Composer 安装命令:

composer require pressbooks/pb-cli

包简介

A suite of wp-cli commands for Pressbooks.

README 文档

README

A suite of wp-cli commands for Pressbooks.

Build Status

Quick links: Using | Installing | Contributing | Support

Using

This package implements the following commands:

wp scaffold book-theme

Generate the files needed for a Pressbooks book theme.

wp scaffold book-theme <slug> <vendor> [--theme_name=<title>] [--description=<description>] [--uri=<uri>] [--author=<author>] [--author_uri=<author_uri>] [--github_account=<github_account>] [--github_repo=<github_repo>] [--license=<license>] [--textdomain=<textdomain>] [--version=<version>] [--dir=<dir>] [--activate] [--enable-network] [--force] 

Default behavior is to create the following files:

  • functions.php
  • .gitignore, .editorconfig, package.json, composer.json, composer.lock, yarn.lock
  • README.md

Unless specified with --dir=<dir>, the theme is placed in the themes directory.

OPTIONS

<slug> Slug for the new theme. <vendor> Vendor for the new theme. Used in composer.json and package.json. [--theme_name=<title>] What to put in the 'Theme Name:' header in 'style.css'. Defaults to <slug>. [--description=<description>] Human-readable description for the theme. [--uri=<uri>] What to put in the 'Theme URI:' header in 'style.css'. [--author=<author>] What to put in the 'Author:' header in 'style.css'. [--author_uri=<author_uri>] What to put in the 'Author URI:' header in 'style.css'. [--github_account=<github_account>] The GitHub account that owns this project (e.g. 'pressbooks'). Defaults to vendor. [--github_repo=<github_repo>] The GitHub repo name for this project (e.g. 'pressbooks-book'). Defaults to slug. [--license=<license>] What to put in the 'License:' header in 'style.css'. --- default: GPL 2.0+ --- [--textdomain=<textdomain>] Text domain for the theme. Defaults to <slug>. [--version=<version>] Version for the theme. --- default: 1.0 --- [--dir=<dir>] Specify a destination directory for the command. Defaults to the themes directory. [--activate] Activate the newly created book theme. [--enable-network] Enable the newly created book theme for the entire network. [--force] Overwrite files that already exist. 

wp pb issue-template

Generate an issue template for a Pressbooks theme or plugin, placing it in .github/ISSUE_TEMPLATE.md.

wp pb issue-template <slug> --type=<type> --owner=<owner> [--dir=<dir>] [--force] 

OPTIONS

<slug> Slug for the theme or plugin (e.g. pressbooks, pressbooks-book). --type=<type> The type of repo for which we're generating an issue template. Must be `theme` or `plugin`. --owner=<owner> The GitHub username of this repo's owner (e.g. pressbooks). [--dir=<dir>] Specify a destination directory for the command. Defaults to the theme or plugin's directory. [--force] Overwrite files that already exist. 

wp pb theme lock

Lock a book's theme.

wp pb theme lock --url=<url> 

OPTIONS

--url=<url> The URL of the target book. 

wp pb theme unlock

Unlock a book's theme.

wp pb theme unlock --url=<url> 

OPTIONS

--url=<url> The URL of the target book. 

wp pb clone

Clone a book.

wp pb clone <source> <destination> --user=<user> 

OPTIONS

<source> URL <destination> Book slug on the current network --user=<user> sets request to a specific WordPress user 

wp pb populate-books-admins

It populates pb_book_admins blog metada for each blog with comma-separated book administrator's user IDs.

wp pb network-aggregate

Aggregate Koko Analytics (visits & referrers) across every site in a Pressbooks multisite using batched processing, retries and failure backoff.

wp pb network-aggregate [--mode=<visits|referrers|both>] [--batch-size=<n>] [--start-id=<blog_id>] [--max-sites=<n>] [--since-failures] [--lock-timeout=<sec>] [--retries=<n>] 

OPTIONS

--mode=<visits|referrers|both> Which data to aggregate. Default: both. --batch-size=<n> Number of blogs per batch (controls memory). Default: 200. --start-id=<blog_id> Begin at this numeric blog ID (skip smaller IDs). Default: 0. --max-sites=<n> Stop after processing this many sites. Default: unlimited. --since-failures Process only previously failed sites whose backoff has expired. --lock-timeout=<sec> Seconds to wait for MySQL GET_LOCK before aborting gracefully. Default: 5. --retries=<n> Max attempts per blog+mode before recording a failure. Default: 3. 

BEHAVIOR

  • Uses a MySQL advisory lock (GET_LOCK) to prevent concurrent runs.
  • Sequential batches scale to large networks without scanning all blogs each retry cycle.
  • Failures stored with exponential backoff; --since-failures reprocesses only due rows.
  • Exit codes: 0 (no failures), 2 (failures recorded), 1 (invalid mode/parameters).

EXAMPLES

Process entire network (both modes):

wp pb network-aggregate --mode=both --batch-size=200 

Visits only with higher retry budget:

wp pb network-aggregate --mode=visits --retries=5 

Retry only previously failed blogs:

wp pb network-aggregate --since-failures --batch-size=300 

Stagger large networks (start at ID 1000, cap at 500 sites):

wp pb network-aggregate --start-id=1000 --max-sites=500 

TROUBLESHOOTING

Symptom Cause Fix
Cannot declare interface Mustache_Loader Duplicate Mustache autoload (WP-CLI + plugin) Run with --skip-plugins=pressbooks,pressbooks-network-analytics or predefine WP_CLI_SKIP_PLUGINS
"Another aggregation is running" Advisory lock held by another process Retry later or raise --lock-timeout
Repeated failures for certain blogs Persistent data/plugin errors Use --since-failures; inspect failure table entries
High memory usage Batch size too large Lower --batch-size (e.g. 100)

Skip plugins if needed:

wp --skip-plugins=pressbooks,pressbooks-network-analytics pb network-aggregate 

Failure table columns: blog_id, mode, last_error, attempts, last_attempt_at, next_attempt_at (cleared on success).

Internal logic (Runner, LockManager, BackoffStrategy, etc.) lives in inc/NetworkStats/.

Installing

Installing this package requires WP-CLI v2.5.0 or greater. Update to the latest stable release with wp cli update.

Once you've done so, you can install this package with:

wp package install git@github.com:pressbooks/pb-cli.git 

Upgrade Notice

2.1.0

  • PB-CLI requires Pressbooks >= 5.21.0

统计信息

  • 总下载量: 75.42k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 3
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 9
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-or-later
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固