Repository navigation
html-php
Directory actions
More options
Directory actions
More options
html-php
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
=== HTML.PHP ===
Contributors: paulmann
Tags: templates, ssi, i18n, shortcodes, maintenance
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 8.3
Stable tag: 5.0.0
License: MIT
Template engine with Apache SSI directives, gettext-compatible i18n and a
WordPress maintenance toolkit. Zero dependencies.
== Description ==
HTML.PHP 5 is a production template processor for any PHP 8.3+ code, with
WordPress as a first-class (but optional) host:
* `%{VAR|filters}` substitution with auto-escaping by default
* Inline expressions: `%{= (part / total) * 100 | round:1 }` — sandboxed
math, nested/dynamic keys (`rows[0].name`, `hash[keyVar]`, `get(name)`),
arithmetic filters (`pct`, `mul`, `add`, `sum`, `avg`, `clamp`, …)
* Loops, expression conditionals, layout inheritance, scoped partials
* Full Apache mod_include SSI: #include, #echo, #if/#elif/#else, #set,
#config, #fsize, #flastmod, #printenv, #block/stub, policy-gated #exec
* gettext i18n: PO/MO/JSON/PHP catalogues, plural rules for 60+ languages,
contexts, domains, fallback chains, extraction and audit tooling
* Render cache (WP object cache/transients or files), rotating logs,
diagnostics, events mirrored to WP hooks
* Shortcode, theme template loader, `htmlphp_render()` helper, admin screen
under Tools, and `wp htmlphp` CLI commands
== Installation ==
1. Upload the plugin folder to `/wp-content/plugins/`.
2. Ship the library: either `composer install` inside the plugin folder, or
copy `php83/html.php` (PHP 8.3/8.4) or `php85/html.php` (PHP 8.5+) into
`lib/php83/` resp. `lib/php85/`.
3. Activate. Find the admin screen under Tools → HTML.PHP.
== Changelog ==
= 5.0.0 =
* Inline expressions in substitutions: `%{= expr |filters}` (gated by
`syntax.expressions`, sandboxed evaluator, auto-escaped output).
* Nested/dynamic variable access: `[…]` indexing, `.prop` chains after
indexes, indirect `get(name)` lookups — in every expression position.
* New math: expression functions `pow/sqrt/sum/avg/clamp/get`; filters
`add/sub/mul/mod/pow/sqrt/pct/sum/avg/clamp`.
* Hardening: bounded AST memo, iteration budgets on host iterables,
key validation for dynamic indexes, fixed expression-level ranges.
* Linter: validates `%{= …}`, warns on variable-looking numeric filter
arguments; new diagnostics codes `expr-invalid`, `expr-disabled`.
= 4.0.0 =
* Full rewrite: immutable Config object + DI container, no $GLOBALS,
instance-based services, PSR-shaped cache/log/event contracts.
* New: layouts (@Extends/@Section), partials, expression language,
@Trans blocks, linter, i18n extract/audit, JSON/PHP catalogues,
#printenv, #block/stub, echo encodings, WP object-cache backend,
admin screen, Mailer, RenderStats admin bar.
* Removed: the legacy html4.pl API and all HTML_* global config keys
(see docs/MIGRATION-3.x-TO-4.0.md).