--- /dev/null
+<?php
+
+/*
+Plugin Name: GLM Rooms
+Plugin URI: https://gaslightmedia.com
+Description: Plugin for rooms and ammeniities
+Version: 20160911
+Author: Anthony Talarico : Gaslight Media
+Author URI: https://gaslightmedia.com
+License: GPL2
+License URI: https://www.gnu.org/licenses/gpl-2.0.html
+Text Domain: glm rooms
+Domain Path: /languages
+*/
+defined( 'ABSPATH' ) or die( );
+
+define( 'GLM_ROOM_POST_TYPE', 'glm-rooms' );
+define( 'GLM_ROOM_SINGLE', 'Room' );
+define( 'GLM_ROOM_PLURAL', 'Rooms' );
+define( 'GLM_ROOM_CATEGORY_NAME', 'rooms_category' );
+define( 'GLM_ROOM_CATEGORY_SLUG', 'rooms-category' );
+define( 'GLM_ROOM_CATEGORY_SINGLE', 'Type' );
+define( 'GLM_ROOM_CATEGORY_PLURAL', 'Room Types' );
+
+// Register Custom Post Type.
+/**
+ * Rooms_custom_post_type
+ *
+ * Setup of the Wordpress Custom Post Type
+ *
+ * @access public
+ * @return void
+ */
+function rooms_custom_post_type() {
+
+ $labels = array(
+ 'name' => _x( GLM_ROOM_PLURAL, 'Post Type General Name' ),
+ 'singular_name' => _x( GLM_ROOM_SINGLE, 'Post Type Singular Name' ),
+ 'menu_name' => __( GLM_ROOM_PLURAL ),
+ 'name_admin_bar' => __( GLM_ROOM_PLURAL ),
+ 'archives' => __( GLM_ROOM_SINGLE . ' Archives' ),
+ 'parent_item_colon' => __( 'Parent Room:' ),
+ 'all_items' => __( 'All Rooms' ),
+ 'add_new_item' => __( 'Add New Room' ),
+ 'add_new' => __( 'Add New Room' ),
+ 'new_item' => __( 'New Room' ),
+ 'edit_item' => __( 'Edit Room' ),
+ 'update_item' => __( 'Update Room' ),
+ 'view_item' => __( 'View Room' ),
+ 'search_items' => __( 'Search Room' ),
+ 'not_found' => __( 'Not found' ),
+ 'not_found_in_trash' => __( 'Not found in Trash' ),
+ 'featured_image' => __( 'Featured Image' ),
+ 'set_featured_image' => __( 'Set featured image' ),
+ 'remove_featured_image' => __( 'Remove featured image' ),
+ 'use_featured_image' => __( 'Use as featured image' ),
+ 'insert_into_item' => __( 'Insert into item' ),
+ 'uploaded_to_this_item' => __( 'Uploaded to this item' ),
+ 'items_list' => __( 'Rooms list' ),
+ 'items_list_navigation' => __( 'Rooms list navigation' ),
+ 'filter_items_list' => __( 'Filter items list' ),
+ );
+
+ $rewrite = array(
+ 'slug' => GLM_ROOM_POST_TYPE ,
+ 'with_front' => false,
+ 'pages' => false,
+ 'feeds' => false,
+ );
+
+ $args = array(
+ 'label' => __( GLM_ROOM_SINGLE ),
+ 'description' => __( 'Custom ' . GLM_ROOM_PLURAL ),
+ 'labels' => $labels,
+ 'supports' => array( 'title', 'thumbnail', 'revisions', 'editor', 'page-attributes'),
+ 'hierarchical' => true,
+ 'public' => true,
+ 'show_ui' => true,
+ 'show_in_menu' => true,
+ 'menu_position' => 5,
+ 'menu_icon' => 'dashicons-building',
+ 'show_in_admin_bar' => true,
+ 'show_in_nav_menus' => true,
+ 'can_export' => true,
+ 'has_archive' => true,
+ 'exclude_from_search' => false,
+ 'publicly_queryable' => true,
+ 'rewrite' => $rewrite,
+ 'capability_type' => 'page'
+ );
+
+ register_post_type( GLM_ROOM_POST_TYPE , $args );
+ register_taxonomy_for_object_type( GLM_ROOM_CATEGORY_NAME, GLM_ROOM_POST_TYPE );
+}
+
+
+/**
+ * rooms_taxonomies
+ *
+ * Setup of the Taxonomies for the post type
+ *
+ * @access public
+ * @return void
+ */
+function rooms_taxonomies() {
+
+ // Experiences
+ $labels = array(
+ 'name' => _x( GLM_ROOM_CATEGORY_NAME, 'taxonomy general name' ),
+ 'singular_name' => _x( GLM_ROOM_CATEGORY_NAME, 'taxonomy singular name' ),
+ 'search_items' => __( 'Search ' . GLM_ROOM_CATEGORY_PLURAL ),
+ 'all_items' => __( 'All ' . GLM_ROOM_CATEGORY_PLURAL ),
+ 'parent_item' => __( 'Parent ' . GLM_ROOM_CATEGORY_SINGLE ),
+ 'parent_item_colon' => __( 'Parent ' . GLM_ROOM_CATEGORY_SINGLE ),
+ 'edit_item' => __( 'Edit ' . GLM_ROOM_CATEGORY_SINGLE ),
+ 'update_item' => __( 'Update ' . GLM_ROOM_CATEGORY_SINGLE ),
+ 'add_new_item' => __( 'Add New ' . GLM_ROOM_CATEGORY_SINGLE ),
+ 'new_item_name' => __( 'New ' . GLM_ROOM_CATEGORY_SINGLE . ' Name' ),
+ 'menu_name' => __( 'Site ' . GLM_ROOM_CATEGORY_SINGLE ),
+ );
+
+ $capabilities = array(
+ 'manage_terms' => 'manage_categories',
+ 'edit_terms' => 'manage_categories',
+ 'delete_terms' => 'manage_categories',
+ 'assign_terms' => 'edit_posts',
+ );
+
+ $args = array(
+ 'label' => __( GLM_ROOM_CATEGORY_PLURAL ),
+ 'rewrite' => array( 'slug' => GLM_ROOM_CATEGORY_SLUG ),
+ 'capabilities' => $capabilities,
+ 'public ' => true,
+ 'show_in_quick_edit' => true,
+ 'show_in_admin_column' => true,
+ 'hierarchical' => true
+ );
+
+ register_taxonomy(
+ GLM_ROOM_CATEGORY_NAME,
+ GLM_ROOM_POST_TYPE ,
+ $args
+ );
+}
+
+/**
+ * rooms_taxonomy_filter_restrict_manage_posts
+ *
+ * This will setup the Filter for the Custom taxonomies.
+ *
+ * @access public
+ * @return void
+ */
+function rooms_taxonomy_filter_restrict_manage_posts() {
+ global $typenow;
+
+ $post_types = get_post_types( array( '_builtin' => false ) );
+
+ if ( in_array( $typenow, $post_types ) ) {
+ $filters = get_object_taxonomies( $typenow );
+
+ foreach ( $filters as $tax_slug ) {
+ $tax_obj = get_taxonomy( $tax_slug );
+ wp_dropdown_categories( array(
+ 'show_option_all' => __( 'Show All ' . $tax_obj->label ),
+ 'taxonomy' => $tax_slug,
+ 'name' => $tax_obj->name,
+ 'orderby' => 'menu_order',
+ 'selected' => ( isset( $_GET[$tax_slug] ) ),
+ 'hierarchical' => $tax_obj->hierarchical,
+ 'show_count' => false,
+ 'hide_empty' => true,
+ ) );
+ }
+ }
+}
+
+add_action( 'restrict_manage_posts', 'rooms_taxonomy_filter_restrict_manage_posts' );
+
+/**
+ * Rooms_taxonomy_filter_post_type_request
+ *
+ * Filter the post request for the Taxonomy Filter
+ *
+ * @param mixed $query
+ * @access public
+ * @return void
+ */
+function rooms_taxonomy_filter_post_type_request( $query ) {
+ global $pagenow, $typenow;
+
+ if ( 'edit.php' === $pagenow ) {
+ $filters = get_object_taxonomies( $typenow );
+ foreach ( $filters as $tax_slug ) {
+ $var = &$query->query_vars[ $tax_slug ];
+
+ if ( isset( $var ) ) {
+ $term = get_term_by( 'id', $var, $tax_slug );
+
+ $var = $term->slug;
+ }
+ }
+ }
+}
+add_filter( 'parse_query', 'rooms_taxonomy_filter_post_type_request' );
+add_action( 'init', 'rooms_custom_post_type' );
+add_action( 'init', 'rooms_taxonomies' );
+
+
+/**
+ * Rooms_set_admin_columns
+ *
+ * Setup of the list columns
+ *
+ * @access public
+ * @return void
+ */
+function rooms_set_admin_columns() {
+ add_filter( 'manage_edit-rooms_columns', 'rooms_admin_edit_columns' );
+ add_action( 'manage_rooms_posts_custom_column', 'rooms_admin_custom_columns' );
+}
+
+add_action( 'admin_init', 'rooms_set_admin_columns' );
+
+/**
+ * Rooms_admin_edit_columns
+ *
+ * Setup of the edit columns. This will create the headers for each column.
+ *
+ * @param mixed $columns
+ * @access public
+ * @return void
+ */
+function rooms_admin_edit_columns( $columns ) {
+ $columns = array(
+ 'cb' => '<input type="checkbox">',
+ 'title' => GLM_ROOM_SINGLE . ' Title',
+ 'rooms_col_cat' => GLM_ROOM_CATEGORY_SINGLE,
+ );
+ return $columns;
+}
\ No newline at end of file