Meta
Overview
The Meta module ties together field registration, meta translation, validation, and classic meta box registration. It is the bridge between fluent field builders such as CMB2 fields and the storage/retrieval layer used by object traits.
Types in this module
Lipe\Lib\Meta\Box(interface)Lipe\Lib\Meta\DataType(enum)Lipe\Lib\Meta\MetaType(enum)Lipe\Lib\Meta\Meta_BoxLipe\Lib\Meta\Mutator_Trait(trait)Lipe\Lib\Meta\Register_MetaLipe\Lib\Meta\RegisteredLipe\Lib\Meta\RepoLipe\Lib\Meta\Translate(trait)Lipe\Lib\Meta\Validation
Box
Contract for classic WordPress meta boxes.
Methods
public function get_title(): stringpublic function get_id(): stringpublic function get_priority(): stringpublic function get_context(): stringpublic function get_post_types(): arraypublic function is_classic_editor_fallback(): boolpublic function save(\WP_Post $post): voidpublic function render(\WP_Post $post): void
Meta_Box
Registers a classic meta box with WordPress and handles nonce rendering and saves.
Key public methods
public function __construct(protected Box $box)public function render_nonce(\WP_Post $post): voidpublic function save(int $post_id, \WP_Post $post): voidpublic function register(\WP_Post $post): void
Register_Meta
Fluent wrapper around register_meta(), register_post_meta(), and register_term_meta().
Key public methods
public function __construct(array $existing)public function show_in_rest(?string $name = null, ?Resource_Schema $schema = null, ?callable $prepare_callback = null): staticpublic function merge(ArgsRules $overrides): voidpublic function get_args(): array
Repo
Central repository used to register fields and read/write values according to field data type.
Key public methods
public function register_field(Field $field): Registeredpublic function validate_fields(): voidpublic function pre_update_field(string $key): voidpublic function pre_get_field(string $key): voidpublic function get_value(int|string $object_id, string $field_id, MetaType $meta_type = MetaType::POST): mixedpublic function update_value(int|string $object_id, string $field_id, mixed $value, MetaType $meta_type = MetaType::POST): voidpublic function delete_value(int|string $object_id, string $field_id, MetaType $meta_type): void
Example
<?php
use Lipe\Lib\Meta\MetaType;
use Lipe\Lib\Meta\Repo;
$value = Repo::in()->get_value(42, 'isbn', MetaType::POST);
Registered
Readonly value object returned by Repo::register_field() representing a CMB2 field after it has been registered. Provides typed accessors for the field’s configuration without polluting the Field builder with read-only helpers.
Key public methods
public function get_box(): \Lipe\Lib\CMB2\Boxpublic function get_cmb2_field(int|string $object_id = 0): ?\CMB2_Fieldpublic function get_data_type(): DataTypepublic function get_default(null|int|string $object_id = null): mixedpublic function get_description(): stringpublic function get_escape_cb(): ?callablepublic function get_group(): ?Grouppublic function get_id(): stringpublic function get_meta_sanitizer(): ?callablepublic function get_rest_short_name(): stringpublic function get_sanitization_cb(): ?callablepublic function get_show_in_rest(): string|boolpublic function get_text(string $key): ?stringpublic function get_type(): Typepublic function has_rest_short_name(): boolpublic function is_allowed_to_register_meta(): boolpublic function is_public_rest_data(): boolpublic function is_repeatable(): boolpublic function is_using_array_data(): boolpublic function is_using_object_data(): boolpublic function get_config(): arraypublic static function factory(Field $variation): static
Mutator_Trait
Adds get_meta()/update_meta()/delete_meta() (backed by Repo) plus \ArrayAccess support to any class that supplies get_id() and get_meta_type(). Used by Post_Object_Trait and similar object wrappers.
Key public methods
abstract public function get_id(): string|intabstract public function get_meta_type(): MetaTypepublic function get_meta(string $key, mixed $default_value = null): mixedpublic function update_meta(string $key, mixed $value, mixed $callback_default = null): voidpublic function delete_meta(string $key): voidpublic function offsetGet($field_id): mixedpublic function offsetSet($field_id, $value): voidpublic function offsetUnset($field_id): voidpublic function offsetExists($field_id): bool
Example
<?php
use Lipe\Lib\Meta\Mutator_Trait;
use Lipe\Lib\Meta\MetaType;
final class Book {
use Mutator_Trait;
public function __construct(
protected int $id
) {
}
public function get_id(): int {
return $this->id;
}
public function get_meta_type(): MetaType {
return MetaType::POST;
}
}
$book = new Book(42);
$isbn = $book->get_meta('isbn');
Supporting types
DataTypeandMetaTypeenumerate supported storage shapes and WordPress meta object types.Validationexposespublic function warn_for_repeatable_group_sub_fields(string $field_id, ?Registered $registered): voidandpublic function warn_for_conflicting_taxonomies(array $registered): void.Translatecontains the conversion logic that maps stored values back to the correct runtime shape and exposespublic function supports_taxonomy_relationships(null|BoxType|MetaType $meta_type, Registered $field): bool.