underpin / custom-post-type-loader
Custom Post Type Loader for Underpin
Requires
- underpin/underpin: ^2.0
This package is auto-updated.
Last update: 2024-10-25 04:07:47 UTC
README
Loader That assists with adding custom Post Types to a WordPress website.
Installation
Using Composer
composer require underpin/custom-post-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-custom-post-type/custom-post-types.php');
Setup
- Install Underpin. See Underpin Docs
- Register new custom post types menus as-needed.
Example
A very basic example could look something like this.
// Register custom Post Type underpin()->custom_post_types()->add( 'example_type', [ 'type' => 'example-type', // see register_post_type 'args' => [ /*...*/ ] // see register_post_type ] );
Alternatively, you can extend Custom_Post_Type
and reference the extended class directly, like so:
underpin()->custom_post_types()->add('custom-post-type-key','Namespace\To\Class');
Querying
A Custom Post Type instance includes a method, called query
, which serves as a wrapper for new WP_Query
.
This encapsulates queries for this post type in a method, and gives you a place to override exactly how this post type is queried, should you decide to extend the class.
underpin()->custom_post_types()->get( 'post_type' )->query();
Editing Posts
Like querying, Custom Post Type instances includes a method called save
which serves as a wrapper for wp_insert_post
and wp_update_post
. It also includes notice-logging so you can track what happens on a request.
This encapsulates save actions for this post type in a set of methods, and gives you a place to override exactly how this post type is saved, should you decide to extend the class.
underpin()->custom_post_types()->save( [/* see wp_insert_post */] );
Deleting Posts
This works in the same way as save
and query
. It includes logging, and provides a way to encapsulate the action.
underpin()->custom_post_types()->delete( $id, $force_delete );