humanmade/extended-cpts

Name: extended-cpts

Owner: Human Made

Description: A library which provides extended functionality to WordPress custom post types and taxonomies.

Created: 2018-02-23 13:30:47.0

Updated: 2018-02-23 13:30:49.0

Pushed: 2018-01-06 09:31:39.0

Homepage:

Size: 571

Language: PHP

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Build Status Stable Release License License

Extended CPTs

Extended CPTs is a library which provides extended functionality to WordPress custom post types and taxonomies. This allows developers to quickly build post types and taxonomies without having to write the same code again and again.

See the wiki for full documentation.

Note that Extended Taxonomies was merged into this library with version 4.0. There's now no need to use the separate Extended Taxonomies library.

Improved Defaults for Post Types
Improved Defaults for Taxonomies
Extended Admin Features
Extended Front-end Features for Post Types
Minimum Requirements

PHP: 7.0
WordPress: 4.8

Installation

Extended CPTs is a developer library, not a plugin, which means you need to include it somewhere in your own project. You can use Composer:

oser require johnbillion/extended-cpts

Or you can download the library and include it manually:

ire_once 'extended-cpts/extended-cpts.php';
Usage

Need a simple post type with no frills? You can register a post type with a single parameter:

action( 'init', function() {
register_extended_post_type( 'article' );

And you can register a taxonomy with just two parameters:

action( 'init', function() {
register_extended_taxonomy( 'location', 'post' );

Try it. You'll have a hierarchical public post type with an admin UI, a hierarchical public taxonomy with an admin UI, and all the labels and updated messages for them will be automatically generated.

Or for a bit more functionality:

action( 'init', function() {
register_extended_post_type( 'story', [

    # Add the post type to the site's main RSS feed:
    'show_in_feed' => true,

    # Show all posts on the post type archive:
    'archive' => [
        'nopaging' => true,
    ],

    # Add some custom columns to the admin screen:
    'admin_cols' => [
        'story_featured_image' => [
            'title'          => 'Illustration',
            'featured_image' => 'thumbnail'
        ],
        'story_published' => [
            'title'       => 'Published',
            'meta_key'    => 'published_date',
            'date_format' => 'd/m/Y'
        ],
        'story_genre' => [
            'taxonomy' => 'genre'
        ],
    ],

    # Add a dropdown filter to the admin screen:
    'admin_filters' => [
        'story_genre' => [
            'taxonomy' => 'genre'
        ],
        'story_rating' => [
            'meta_key' => 'star_rating',
        ],
    ],

], [

    # Override the base names used for labels:
    'singular' => 'Story',
    'plural'   => 'Stories',
    'slug'     => 'stories',

] );

register_extended_taxonomy( 'genre', 'story', [

    # Use radio buttons in the meta box for this taxonomy on the post editing screen:
    'meta_box' => 'radio',

    # Add a custom column to the admin screen:
    'admin_cols' => [
        'updated' => [
            'title'       => 'Updated',
            'meta_key'    => 'updated_date',
            'date_format' => 'd/m/Y'
        ],
    ],

] );

Bam, we now have:

The register_extended_post_type() and register_extended_taxonomy() functions are ultimately wrappers for the register_post_type() and register_taxonomy() functions in WordPress core, so any of the parameters from those functions can be used.

There's quite a bit more you can do. See the wiki for full documentation.

Contributing and Testing

Please see CONTRIBUTING.md for information on contributing.

Please see the tests readme for information on running the unit test suite.

License: GPLv2 or later

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.