Skip to content

Underpin loader for accessing and manipulating metadata

Notifications You must be signed in to change notification settings

Underpin-WP/meta-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Underpin Meta Loader

Loader That assists with accessing metadata to a WordPress website.

Installation

Using Composer

composer require underpin/meta-record-type-loader

Manually

This plugin uses a built-in autoloader, so as long as it is required before Underpin, it should work as-expected.

require_once(__DIR__ . '/underpin-meta-record-types/meta-record-types.php');

Setup

  1. Install Underpin. See Underpin Docs
  2. Register new metadata fields as-needed.

Example

A very basic example could look something like this.

// Register meta record type
underpin()->meta()->add( 'example-meta-field', [
	'key'           => 'unique_meta_key',
	'description'   => 'Description of the purpose of this field',
	'name'          => 'Human-readable name',
	'default_value' => false,
	'type'          => 'post', // Metadata type. Can be post or user, or any custom meta type.
] );

Alternatively, you can extend Meta_Record_Type and reference the extended class directly, like so:

underpin()->meta()->add('meta-record-type-key','Namespace\To\Class');

Accessing Metadata

Basic Example

// Fetch from global context
$object_id = 1;
underpin()->meta()->get_meta( 'example-meta-field',$object_id );

Access when object is directly accessible

// Fetch, given a meta factory
$meta = underpin()->meta()->get('example-meta-field');
$object_id = 1;

$meta->get( $object_id );

Using Registry Filter method to get all user meta

// Fetch all registered user meta

// Filter the registry for user meta fields.
$registered_user_meta = underpin()->meta()->filter(['type' => 'user']);
$values = [];
$user_id = 1;

foreach($registered_user_meta as $object){
  $values[underpin()->meta()->get_key($object)] = $object->get( $user_id );    
}

Reset all registered post meta for a specified post

// Fetch all registered post meta
// Filter the registry for post meta fields.
$registered_user_meta = underpin()->meta()->filter(['type' => 'post']);
$post_id = 1;

foreach($registered_user_meta as $object){
  $object->reset( $post_id );    
}