Repository navigation
Complete the minimal 1.0 API additions - #33
Merged
Merged
Conversation
This was referenced Sep 11, 2026
Closed
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linked issue
Closes #2
Closes #3
Closes #4
Intent
Complete the three approved minimal API additions after the immutable
0.7.0baseline: initialize from an existing
WP_Post, expose slug accessors, and exposemenu-order accessors. T12 API freeze and any further surface changes remain out
of scope.
Behavior
slug and menu order had no symmetric interface/trait accessors.
int|WP_Post|null; supplied post objectsretain identity and use the existing validation/meta/hook lifecycle without an
insert or lookup. Typed chainable slug and menu-order accessors mutate the
corresponding
WP_Postfields in memory and persist throughsavePost().automatically. Manual interface implementations/overrides must implement the
documented signatures. Numeric strings, floats, and booleans previously
accepted by weak
intcoercion must be converted explicitly. No stored-datamigration is required.
policy, autosave, T12 visibility/interface freeze, and RC publication.
SemVer impact
none— no package release required by this change alonePATCH— backward-compatible bug or security fixMINOR— feature/deprecation, or a pre-1.0 compatibility changeMAJOR— incompatible change starting with 1.0Rationale: this is the approved pre-1.0 public API expansion and includes an
explicitly documented initialization-input compatibility change.
Compatibility and security
Risk and compatibility details:
wppaLoadPostExceptionremains the mismatchcontract and preserves ID/model context; invalid non-union inputs now fail with
TypeErrorbefore side effects. Existing hook/meta/JSON behavior is shared andregression-tested. Slug normalization/uniqueness remains owned by Core and is
observed after reload. Any signed integer menu order is accepted without a new
query/reordering promise. PHP 7.4 syntax and WordPress 6.0 remain supported.
The package boundary and secret/artifact scan are clean.
Verification evidence
make checkmake coveragemake test.package-installmake smokemake test.integration.minimumminimum-20260910T233033Z-47568-5574; 16 lifecycle groups; zero fixtures; empty diagnosticsmake test.integration.latestlatest-20260910T233211Z-49057-3120; 16 lifecycle groups; zero fixtures; empty diagnosticsgit diff --checkmaster...dca2940cleanDocumentation
README.mdVERSIONING.mddocs/LOCAL-DEVELOPMENT.mddocs/TESTING.mddocs/RELEASING.mdCONTRIBUTING.mdor repository templatesDocumentation rationale: README covers consumer usage and save/reload semantics;
VERSIONING records the compatibility surface and manual-implementer migration;
TESTING records the expanded real-WordPress lifecycle;
docs/plan-1.0.mdrecordsevery task transition and exact evidence.
Changelog
UnreleasedinCHANGELOG.mdChangelog entry or concrete no-changelog rationale:
Unreleasednow recordsobject initialization, typed slug/menu-order accessors, and upgrade notes for
constructor inputs and manual interface implementations.
Final review
.envvalues, generated dependencies, localWordPress files, coverage reports, or integration artifacts are included.
Final synchronized run
34543321838passed all five required checks. T9–T11 issues stay in
reviewuntil this PRmerges.