Skip to content

Instantly share code, notes, and snippets.

@hellofromtonya
Last active March 19, 2019 19:07
Show Gist options
  • Save hellofromtonya/54370608b2d2b74b1d03ee74eda36e2f to your computer and use it in GitHub Desktop.
Save hellofromtonya/54370608b2d2b74b1d03ee74eda36e2f to your computer and use it in GitHub Desktop.
Show Custom Taxonomy Panel in the Gutenberg Editor
<?php
/**
* Adds Books to your website.
*
* @package KnowTheCode\Books
* @author hellofromTonya
* @license GPL-2.0+
*
* @wordpress-plugin
* Plugin Name: Books
* Plugin URI: https://KnowTheCode.io
* Description: Adds books to your website.
* Version: 1.0.0
* Author: hellofromTonya
* Author URI: https://KnowTheCode.io
* Text Domain: books
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* GitHub Plugin URI: https://KnowTheCode.io
* Requires PHP: 5.6
* Requires WP: 4.9
*/
namespace KnowTheCode\Books;
add_action( 'init', __NAMESPACE__ . '\register_book_post_type' );
/**
* Register a Book custom post type.
*
* @since 1.0.0
*/
function register_book_post_type() {
$labels = [
'name' => _x( 'Books', 'post type general name', 'books' ),
'singular_name' => _x( 'Book', 'post type singular name', 'books' ),
'menu_name' => _x( 'Books', 'admin menu', 'books' ),
'name_admin_bar' => _x( 'Book', 'add new on admin bar', 'books' ),
'add_new' => _x( 'Add New', 'book', 'books' ),
'add_new_item' => __( 'Add New Book', 'books' ),
'new_item' => __( 'New Book', 'books' ),
'edit_item' => __( 'Edit Book', 'books' ),
'view_item' => __( 'View Book', 'books' ),
'all_items' => __( 'All Books', 'books' ),
'search_items' => __( 'Search Books', 'books' ),
'parent_item_colon' => __( 'Parent Books:', 'books' ),
'not_found' => __( 'No books found.', 'books' ),
'not_found_in_trash' => __( 'No books found in Trash.', 'books' ),
];
$args = [
'labels' => $labels,
'description' => __( 'Cool books.', 'books' ),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_rest' => true, // To use Gutenberg editor.
'query_var' => true,
'rewrite' => [ 'slug' => 'book' ],
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => [ 'title', 'editor', 'author', 'thumbnail', 'excerpt' ],
];
register_post_type( 'book', $args );
}
add_action( 'init', __NAMESPACE__ . '\register_genre_taxonomy', 0 );
/**
* Register the Genre custom taxonomy.
*
* @since 1.0.0
*/
function register_genre_taxonomy() {
$labels = [
'name' => _x( 'Genres', 'taxonomy general name', 'books' ),
'singular_name' => _x( 'Genre', 'taxonomy singular name', 'books' ),
'search_items' => __( 'Search Genres', 'books' ),
'all_items' => __( 'All Genres', 'books' ),
'parent_item' => __( 'Parent Genre', 'books' ),
'parent_item_colon' => __( 'Parent Genre:', 'books' ),
'edit_item' => __( 'Edit Genre', 'books' ),
'update_item' => __( 'Update Genre', 'books' ),
'add_new_item' => __( 'Add New Genre', 'books' ),
'new_item_name' => __( 'New Genre Name', 'books' ),
'menu_name' => __( 'Genre', 'books' ),
];
$args = [
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'show_in_rest' => true, // Needed for tax to appear in Gutenberg editor.
'query_var' => true,
'rewrite' => [ 'slug' => 'genre' ],
];
register_taxonomy( 'genre', [ 'book' ], $args );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment