fixing the rooms and blog post types
authorAnthony Talarico <talarico@gaslightmedia.com>
Thu, 10 May 2018 12:47:36 +0000 (08:47 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Thu, 10 May 2018 12:47:36 +0000 (08:47 -0400)
functions.php
inc/blog.php [new file with mode: 0644]
inc/rooms.php

index 8258465..1848cda 100644 (file)
@@ -202,9 +202,10 @@ function accesspress_parallax_scripts() {
 }
 add_action( 'wp_enqueue_scripts', 'accesspress_parallax_scripts' );
 /**
- * Implement the Custom Header feature.
+ * Implement the rooms feature.
  */
 require get_template_directory() . '/inc/rooms.php';
+require get_template_directory() . '/inc/blog.php';
 /**
  * Implement the Custom Header feature.
  */
diff --git a/inc/blog.php b/inc/blog.php
new file mode 100644 (file)
index 0000000..770dbbf
--- /dev/null
@@ -0,0 +1,738 @@
+<?php
+/**
+ * Plugin Name: Blog Posts
+ * Plugin URI:
+ * Description: Gaslight Media Catalog Plugin
+ * Version: 0.0.1
+ * Author: Steve Sutton <steve@gaslightmedia.com>
+ * Author URI:
+ * License: GPLv2
+ **/
+
+define( 'GLM_BLOG_POST_TYPE', 'glm-blog' );
+define( 'GLM_BLOG_SINGLE', 'Blog' );
+define( 'GLM_BLOG_PLURAL', 'Blog Posts' );
+define( 'GLM_BLOG_CATEGORY_NAME', 'blog_category' );
+define( 'GLM_BLOG_CATEGORY_SLUG', 'blog-posts-category' );
+define( 'GLM_BLOG_CATEGORY_SINGLE', 'Blog Type' );
+define( 'GLM_BLOG_CATEGORY_PLURAL', 'Blog Types' );
+
+// Register Custom Post Type.
+/**
+ * Blog Posts_custom_post_type
+ *
+ * Setup of the Wordpress Custom Post Type
+ *
+ * @access public
+ * @return void
+ */
+function blogs_custom_post_type() {
+
+    $labels = array(
+        'name'                  => _x( GLM_BLOG_PLURAL, 'Post Type General Name' ),
+        'singular_name'         => _x( GLM_BLOG_SINGLE, 'Post Type Singular Name' ),
+        'menu_name'             => __( GLM_BLOG_PLURAL ),
+        'name_admin_bar'        => __( GLM_BLOG_PLURAL ),
+        'archives'              => __( GLM_BLOG_SINGLE . ' Archives' ),
+        'parent_item_colon'     => __( 'Parent Blog Post:' ),
+        'all_items'             => __( 'All Blog Posts' ),
+        'add_new_item'          => __( 'Add New Blog Post' ),
+        'add_new'               => __( 'Add New' ),
+        'new_item'              => __( 'New Blog Post' ),
+        'edit_item'             => __( 'Edit Room' ),
+        'update_item'           => __( 'Update Room' ),
+        'view_item'             => __( 'View Blog Post' ),
+        'search_items'          => __( 'Search Blog Posts' ),
+        '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'            => __( 'Blog Posts list' ),
+        'items_list_navigation' => __( 'Blog Posts list navigation' ),
+        'filter_items_list'     => __( 'Filter items list' ),
+    );
+
+    $rewrite = array(
+        'slug'                  => GLM_BLOG_POST_TYPE,
+        'with_front'            => false,
+        'pages'                 => false,
+        'feeds'                 => false,
+    );
+
+    $args = array(
+        'label'                 => __( GLM_BLOG_SINGLE ),
+        'description'           => __( 'Custom ' . GLM_BLOG_PLURAL ),
+        'labels'                => $labels,
+        'supports'              => array( 'title', 'thumbnail', 'revisions', 'editor', 'author'),
+        'hierarchical'          => true,
+        'public'                => true,
+        'show_ui'               => true,
+        'show_in_menu'          => true,
+        'menu_position'         => 5,
+        'menu_icon'             => 'dashicons-lightbulb',
+        '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_meta_box_cb'  => 'blogs_add_metaboxes',
+    );
+
+    register_post_type( GLM_BLOG_POST_TYPE, $args );
+    register_taxonomy_for_object_type( GLM_BLOG_CATEGORY_NAME, GLM_BLOG_POST_TYPE );
+}
+
+/**
+ * Blog Posts_add_metaboxes
+ *
+ * Add the meta fields
+ *
+ * @access public
+ * @return void
+ */
+function blogs_add_metaboxes() {
+    add_meta_box( 'blogs_water', 'Water', 'blogs_water', GLM_BLOG_POST_TYPE, 'side', 'low' );
+    add_meta_box( 'blogs_sewer', 'Sewer', 'blogs_sewer', GLM_BLOG_POST_TYPE, 'side', 'low' );
+    add_meta_box( 'blogs_power', 'Power', 'blogs_power', GLM_BLOG_POST_TYPE, 'side', 'low' );
+    add_meta_box( 'blogs_loop', 'Loop', 'blogs_loop', GLM_BLOG_POST_TYPE, 'side', 'low' );
+//    add_meta_box( 'blogs_tents', 'Tents', 'blogs_tents', GLM_BLOG_POST_TYPE, 'side', 'low' );
+}
+
+/**
+ * Blog Posts_water
+ *
+ * Add field for the water availability
+ *
+ * @access public
+ * @return void
+ */
+function blogs_water() {
+    global $post;
+    $checked = '';
+    // Get the features for the post.
+    $water = get_post_meta( $post->ID, 'blogs_water', true );
+    
+    // Output field.
+    if ( 'yes' === $water ) {
+        $checked = 'checked="checked"';
+    }
+    ?>
+<input type="checkbox" name="blogs_water" value="yes" <?php echo $checked; ?> />
+    <?php
+
+}
+/**
+ * Blog Posts_tents
+ *
+ * Add field for the water availability
+ *
+ * @access public
+ * @return void
+ */
+//function blogs_tents() {
+//    global $post;
+//
+//    // Get the features for the post.
+//    $tents = get_post_meta( $post->ID, 'blogs_tents', true );
+//    
+//    // Output field.
+//    if ( 'yes' === $tents ) {
+//        $checked = 'checked="checked"';
+//    }
+//    
+
+   
+//
+//}
+/**
+ * Blog Posts_loop
+ *
+ * Add field for the loop
+ *
+ * @access public
+ * @return void
+ */
+function blogs_loop() {
+    global $post;
+    $value = '';
+    // Noncename needed to verify where the data originated.
+    $nonce = wp_create_nonce( 'blogsmeta-meta-noncename' );
+    echo '<input type="hidden" name="blogsmeta-meta-noncename" id="blogsmeta-meta-noncename-loop" value="' . $nonce . '" />';
+
+    // Get the features for the post.
+    $loop = get_post_meta( $post->ID, 'blogs_loop', true );
+    // Output field.
+    if ( !empty( $loop ) ) {
+        $value = "value=".'"'.$loop .'"';
+    }
+
+    ?>
+    <input type="text" name="blogs_loop" <?php echo $value; ?> />
+    <?php
+
+}
+
+/**
+ * Blog Posts_sewer
+ *
+ * Adds the field for sewer availibility
+ *
+ * @access public
+ * @return void
+ */
+function blogs_sewer() {
+    global $post;
+    $checked = '';
+    // Noncename needed to verify where the data originated.
+    $nonce = wp_create_nonce( 'blogsmeta-meta-noncename' );
+    echo '<input type="hidden" name="blogsmeta-meta-noncename" id="blogsmeta-meta-noncename-sewer" value="' . $nonce . '" />';
+    // Get the features for the post.
+    $sewer = get_post_meta( $post->ID, 'blogs_sewer', true );
+
+    // Output field.
+    if ( "yes" === $sewer ) {
+        $checked = 'checked="checked"';
+    }
+
+    ?>
+    <input type="checkbox" name="blogs_sewer" value="yes" <?php echo $checked; ?> />
+    <?php
+
+}
+/**
+ * Blog Posts_campers
+ *
+ * Adds the field for camper types
+ *
+ * @access public
+ * @return void
+ */
+function blogs_campers() {
+    global $post;
+
+    // Get the features for the post.
+    $campers = get_post_meta( $post->ID, 'blogs_campers', true );
+    
+    // Output field.
+    if ( !empty( $campers ) ) {
+        $value = "value=".'"'.$campers .'"';
+    }
+    ?>
+    <input type="text" name="blogs_campers" <?php echo $value; ?> />
+    <?php
+}
+/**
+ * Blog Posts_power
+ *
+ * Adds the field for power availability
+ * @access public
+ * @return void
+ */
+function blogs_power() {
+    global $post;
+    $value = '';
+    // Noncename needed to verify where the data originated.
+    $nonce = wp_create_nonce( 'blogsmeta-meta-noncename' );
+    echo '<input type="hidden" name="blogsmeta-meta-noncename" id="blogsmeta-meta-noncename-power" value="' . $nonce . '" />';
+
+    // Get the features for the post.
+    $power = get_post_meta( $post->ID, 'blogs_power', true );
+    // Output field.
+    if ( !empty( $power ) ) {
+        $value = "value=".'"'.$power .'"';
+    }
+
+    ?>
+    <input type="text" name="blogs_power" <?php echo $value; ?> />
+    <?php
+}
+
+/**
+ * Blog Posts_save_meta
+ *
+ * Saves the meta fields for the product
+ *
+ * @access public
+ * @return void
+ */
+function blogs_save_meta() {
+    global $post;
+    if ( ! wp_verify_nonce( $_POST['blogsmeta-meta-noncename'], 'blogsmeta-meta-noncename' ) ) {
+        return $post->ID;
+    }
+    if ( ! current_user_can( 'edit_post', $post->ID ) ) {
+        return $post->ID;
+    }
+    $water         = (isset($_POST['blogs_water']) ? filter_var( $_POST['blogs_water'] ) : '' );
+    $sewer         = (isset($_POST['blogs_sewer']) ? filter_var( $_POST['blogs_sewer'] ) : '' );
+    $power         = (isset($_POST['blogs_power']) ? filter_var( $_POST['blogs_power'] ) : '' );
+    $loop          = (isset($_POST['blogs_loop']) ? filter_var( $_POST['blogs_loop'] ) : '' );
+//    $tents          = filter_var( $_POST['blogs_tents'] );
+    update_post_meta( $post->ID, 'blogs_water', $water );
+    update_post_meta( $post->ID, 'blogs_sewer', $sewer );
+    update_post_meta( $post->ID, 'blogs_power', $power );
+    update_post_meta( $post->ID, 'blogs_loop', $loop );
+//    update_post_meta( $post->ID, 'blogs_tents', $tents );
+}
+/**
+ * blogs_taxonomies
+ *
+ * Setup of the Taxonomies for the post type
+ *
+ * @access public
+ * @return void
+ */
+function blogs_taxonomies() {
+
+    // Experiences
+    $labels = array(
+        'name'              => _x( GLM_BLOG_CATEGORY_NAME, 'taxonomy general name' ),
+        'singular_name'     => _x( GLM_BLOG_CATEGORY_NAME, 'taxonomy singular name' ),
+        'search_items'      => __( 'Search ' . GLM_BLOG_CATEGORY_PLURAL ),
+        'all_items'         => __( 'All ' . GLM_BLOG_CATEGORY_PLURAL ),
+        'parent_item'       => __( 'Parent ' . GLM_BLOG_CATEGORY_SINGLE ),
+        'parent_item_colon' => __( 'Parent ' . GLM_BLOG_CATEGORY_SINGLE ),
+        'edit_item'         => __( 'Edit ' . GLM_BLOG_CATEGORY_SINGLE ),
+        'update_item'       => __( 'Update ' . GLM_BLOG_CATEGORY_SINGLE ),
+        'add_new_item'      => __( 'Add New ' . GLM_BLOG_CATEGORY_SINGLE ),
+        'new_item_name'     => __( 'New ' . GLM_BLOG_CATEGORY_SINGLE . ' Name' ),
+        'menu_name'         => __( 'Site ' . GLM_BLOG_CATEGORY_SINGLE ),
+    );
+
+    $capabilities = array(
+        'manage_terms' => 'manage_categories',
+        'edit_terms'   => 'manage_categories',
+        'delete_terms' => 'manage_categories',
+        'assign_terms' => 'edit_posts',
+    );
+
+    $args = array(
+        'label'                => __( GLM_BLOG_CATEGORY_PLURAL ),
+        'rewrite'              => array( 'slug' => GLM_BLOG_CATEGORY_SLUG ),
+        'capabilities'         => $capabilities,
+        'public '              => true,
+        'show_in_quick_edit'   => true,
+        'show_in_admin_column' => true,
+        'hierarchical'         => true
+    );
+
+     register_taxonomy(
+        GLM_BLOG_CATEGORY_NAME,
+        GLM_BLOG_POST_TYPE,
+        $args
+    );
+}
+
+/**
+ * blogs_taxonomy_filter_restrict_manage_posts
+ *
+ * This will setup the Filter for the Custom taxonomies.
+ *
+ * @access public
+ * @return void
+ */
+function blogs_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'         => 'name',
+                'selected'        => ( isset( $_GET[$tax_slug] ) ),
+                'hierarchical'    => $tax_obj->hierarchical,
+                'show_count'      => false,
+                'hide_empty'      => true,
+            ) );
+        }
+    }
+}
+
+add_action( 'restrict_manage_posts', 'blogs_taxonomy_filter_restrict_manage_posts' );
+
+/**
+ * Blog Posts_taxonomy_filter_post_type_request
+ *
+ * Filter the post request for the Taxonomy Filter
+ *
+ * @param mixed $query
+ * @access public
+ * @return void
+ */
+function blogs_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', 'blogs_taxonomy_filter_post_type_request' );
+add_action( 'init', 'blogs_custom_post_type' );
+add_action( 'init', 'blogs_taxonomies' );
+add_action( 'save_post', 'blogs_save_meta' );
+
+/**
+ * Blog Posts_set_admin_columns
+ *
+ * Setup of the list columns
+ *
+ * @access public
+ * @return void
+ */
+function blogs_set_admin_columns() {
+    add_filter( 'manage_edit-blogs_columns', 'blogs_admin_edit_columns' );
+    add_action( 'manage_blogs_posts_custom_column', 'blogs_admin_custom_columns' );
+}
+
+add_action( 'admin_init', 'blogs_set_admin_columns' );
+
+/**
+ * Blog Posts_admin_edit_columns
+ *
+ * Setup of the edit columns. This will create the headers for each column.
+ *
+ * @param mixed $columns
+ * @access public
+ * @return void
+ */
+function blogs_admin_edit_columns( $columns ) {
+    $columns = array(
+        'cb'                  => '<input type="checkbox">',
+        'title'               => GLM_BLOG_SINGLE . ' Title',
+        'blogs_col_cat'    => GLM_BLOG_CATEGORY_SINGLE,
+    );
+    return $columns;
+}
+
+/**
+ * Blog Posts_admin_custom_columns
+ *
+ * This will generate the column data for eaoch record.
+ *
+ * @param mixed $column
+ * @access public
+ * @return void
+ */
+function blogs_admin_custom_columns( $column ) {
+    global $post;
+
+    switch ( $column ) {
+    case 'blogs_col_cat':
+        $product_cats      = get_the_terms( $post->ID, 'blogs_category' );
+        $product_cats_html = array();
+        if ( $product_cats ) {
+            foreach ( $product_cats as $product_cat ) {
+                array_push( $product_cats_html, $product_cat->name );
+            }
+            echo implode( $product_cats_html, ', ' );
+        } else {
+             _e( 'None', 'themeforce' );
+        }
+        break;
+    case 'blogs_col_tag':
+        $product_tags      = get_the_terms( $post->ID, 'blogs_tag' );
+        $product_tags_html = array();
+        if ( $product_tags ) {
+            foreach ( $product_tags as $product_tag ) {
+                array_push( $product_tags_html, $product_tag->name );
+            }
+            echo implode( $product_tags_html, ', ' );
+        } else {
+             _e( 'None', 'themeforce' );
+        }
+        break;
+    }
+}
+
+/**
+ * Blog Posts_shortcode
+ *
+ * Add shortcode function. This will call the correct function based on the
+ * front end search.
+ *
+ * @param mixed $atts
+ * @access public
+ * @return void
+ */
+function blogs_shortcode( $atts ) {
+    extract( shortcode_atts( array( 'limit' => '10' ), $atts ) );
+    ob_start();
+
+    if ( isset( $atts['cat']) ) {
+        if ( $prod_experience = get_term_by( 'slug', $atts['cat'], GLM_BLOG_CATEGORY_NAME ) ) {
+           if ( !isset($_REQUEST[ GLM_BLOG_CATEGORY_NAME ] )) {
+            $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] = $prod_experience->term_id;
+           }
+            $cat_id = $prod_experience->term_id;
+        }
+    }
+    $term = get_term_by( "id", $_REQUEST[ GLM_BLOG_CATEGORY_NAME ],"blogs_category" );
+    $name = $term->name;   
+    if ( !$name ) {
+        $name = "ALL PRODUCTS";
+    }
+    global $wp;
+    echo '<form id="catSubmit" action=""><div class="row catSearch"><div id="viewBtns" class="12-small medium-3 columns"> <button id="grid" type="button">Grid</button> <button id="list"type=" button">list</button>
+    <span id="productSearch"><a href="' . get_permalink( 510 ) .   '"> Search Products </a></span></div><div id="catDropdown" class="small-12 medium-4 columns">';
+    echo blogs_get_terms_dropdown( $cat_id );
+    echo '</div><div id="searchContainer" class="small-12 medium-3 columns"></form> <form class="searchform" role="search" method="post" action="">
+         <input id="filter" class="search-input" placeholder="SEARCH ' . strtoupper( $name ) . '" value="" autocomplete="off" name="tsearch" type="text">
+         <input id="input" class="search-button" name="searchButton" value="Search" type="submit">
+        
+         <a id="magnifying-glass" class="show-for-large-up" href="#">
+    </a>
+       </form></div></div>';
+
+    if ( $product_id = filter_var( $_REQUEST['product'], FILTER_VALIDATE_INT ) ) {
+        blogs_show_product( $product_id );
+    } else if ( $cat_id = filter_var( $_REQUEST['category'], FILTER_VALIDATE_INT ) ) {
+        blogs_list_categories( $cat_id );
+    } else if ( !$catid_id && !$product_id ) {
+
+        $text_query = filter_var( $_REQUEST['tsearch'], FILTER_SANITIZE_STRING );
+
+        if (isset( $_REQUEST[ 'tsearch' ] ) ) {
+            setcookie("search", "true",time()+2, "/" );
+        } else {
+            setcookie("search", "null",time()+2, "/" );
+        }
+        blogs_list_products( $text_query );
+        blogs_list_categories();
+    } 
+    
+    $output = ob_get_contents();
+    ob_end_clean();
+    return $output;
+}
+
+/**
+ * Blog Posts_get_terms_dropdown
+ *
+ * Generate the taxonomy drop down select
+ *
+ * @access public
+ * @return void
+ */
+function blogs_get_terms_dropdown( $cat_id ) {
+    
+    $taxonomy_name = GLM_BLOG_CATEGORY_NAME;
+    if ( $cat_id ) {
+        $main = get_term( $cat_id, GLM_BLOG_CATEGORY_NAME );
+        $cats_child = get_term_children( $cat_id, $taxonomy_name );
+        $output ="<select id='categoryDropdown' name=\"" . GLM_BLOG_CATEGORY_NAME . "\"><option value=\"\"> Select " . $main->name . " Sub-category" . "</option>";
+        foreach ( $cats_child as $cat ) {
+          $output .= '<option value="' . $cat . '"';
+           if ( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] == $cat ) {
+                $output .= ' selected';
+            }
+            $cat_name = get_term( $cat, GLM_BLOG_CATEGORY_NAME );
+             $output .= '>' . "&nbsp&nbsp&nbsp" . $cat_name->name. '</option>';
+        }
+        $output .="</select>";
+    } else {
+        
+    $parent_terms = get_terms( $taxonomy_name, array('parent' => 0, 'orderby' => 'name', 'hide_empty' => false ));
+    $terms = get_terms( $taxonomy_name, array('orderby' => 'name', 'hide_empty' => false ));
+    $output ="<select id='categoryDropdown' name=\"" . GLM_BLOG_CATEGORY_NAME . "\"><option value=\"\">Select " . GLM_BLOG_CATEGORY_SINGLE . "</option>";
+        // Get parent categories.
+        foreach ( $parent_terms as $parent ) {   
+            // Get children of each category.
+            $child_terms = get_terms( $taxonomy_name, array('parent'=> $parent->term_id, 'child_of' => $parent->term_id, 'orderby' => 'name', 'hide_empty' => false));
+            $output .= '<option value="' . $parent->term_id . '"';
+            if ( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] === $parent->term_id ) {
+                $output .= ' selected';
+            }
+            $output .= '>' . $parent->name . '</option>';
+            foreach ($child_terms as $child ) {
+                $grandchildren = get_terms( $taxonomy_name, array('parent'=> $child->term_id, 'child_of' => $child->term_id, 'orderby' => 'name', 'hide_empty' => false ));
+                 $output .= '<option value="' . $child->term_id . '"';
+                if ( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] === $child->term_id ) {
+                    $output .= ' selected';
+                }
+                $output .= '>' . "&nbsp&nbsp&nbsp" .  $child->name . '</option>';
+                foreach ( $grandchildren as $grand_child) {
+                    $great_grandchildren = get_terms( $taxonomy_name, array( 'parent'=> $grand_child->term_id, 'child_of' => $grand_child->term_id, 'orderby' => 'name', 'hide_empty' => false ));
+                    $output .= '<option value="' . $grand_child->term_id . '"';
+                    if ( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] === $grand_child->term_id ) {
+                        $output .= ' selected';
+                    }
+                    $output .= '>' . "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" .  $grand_child->name . '</option>';
+                    foreach ( $great_grandchildren as $great_grandchild ) {
+                        $output .= '<option value="' . $great_grandchild->term_id . '"';
+                    if ( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] === $great_grandchild->term_id ) {
+                        $output .= ' selected';
+                    }
+                    $output .= '>' . "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" .  $great_grandchild->name . '</option>';
+                    }
+                }
+            }
+        }
+        $output .='</select>'; }
+        return $output;
+}
+
+
+/**
+ * Blog Posts_list_products
+ *
+ * Create a list of products.
+ *
+ * @access public
+ * @return void
+ */
+function blogs_list_products( $text_query ) {
+    global $wpdb, $wp;
+    $cat = get_term( $cat_id, GLM_BLOG_CATEGORY_NAME );
+    $args = array(
+        'posts_per_page' => -1,
+        'post_type'     => GLM_BLOG_POST_TYPE,
+        's' => $text_query,
+    );
+    $blogs_category = ( isset( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] ) )
+        ? filter_var( $_REQUEST[ GLM_BLOG_CATEGORY_NAME ] )
+        : false;
+
+    if ( $blogs_category ) {
+        $args['tax_query'] = array(
+            'relation' => 'AND',
+        );
+        $args['tax_query'][] = array(
+            'taxonomy' => GLM_BLOG_CATEGORY_NAME,
+            'field'    => 'id',
+            'terms'    => $blogs_category, 
+        );
+    }
+
+    $products      = get_posts( $args );
+    $total_products = count( $products );
+    $current_url   = esc_url( add_query_arg( $wp->query_string, '', home_url( $wp->request ) ) );
+    $iterator      = 1;
+
+    foreach ( $products as $product ) {
+        $product_terms = wp_get_post_terms( $product->ID, GLM_BLOG_CATEGORY_NAME, 'name' );
+        $p_term = $product_terms[0];
+        $product->term = $p_term->name;
+        $product->end = false;
+        if ( $iterator == $total_products ) {
+            $product->end = true;
+        }
+        $cat->href =   "?blogs_category="; 
+        $product->href = $current_url
+            . ( ( strpos( $current_url, '?' ) ) ? '&' : '?' )
+            . "product=" . $product->ID;
+        ++$iterator;
+    }
+
+    include 'views/list_products.php';
+    return;
+}
+/**
+ * blogs_list_categories
+ *
+ * Create a list of categories.
+ *
+ * @param bool $cat_id
+ * @access public
+ * @return void
+ */
+function blogs_list_categories( $cat_id = null ) {
+    global $wpdb, $wp;
+
+    $taxonomy = GLM_BLOG_CATEGORY_NAME;
+    $args = array(
+        'hide_empty' => false,
+        'pad_counts' => true
+    );
+    if ( $cat_id ) {
+        $args['child_of'] = $cat_id;
+    } else {
+        $args['parent'] = 0;
+    }
+    $taxonomy_terms = get_terms( $taxonomy, $args );
+
+
+    $total_terms = count( $taxonomy_terms );
+    $current_url   = esc_url( add_query_arg( $wp->query_string, '', home_url( $wp->request ) ) );
+    $iterator      = 1;
+
+    foreach ( $taxonomy_terms as $term ) {
+        $term->end = false;
+        if ( $iterator === $total_terms) {
+            $term->end = true;
+        }
+        $term->href .= //$current_url
+//             ( ( strpos( $current_url, '?' ) ) ? '&' : '?' ).
+            "?blogs_category=" . $term->term_id;
+        ++$iterator;
+    }
+
+    include 'views/list_categories.php';
+    return;
+}
+
+/**
+ * Blog Posts_show_product
+ *
+ * Create a product detail page.
+ *
+ * @param mixed $prod_id
+ * @access public
+ * @return void
+ */
+function blogs_show_product( $prod_id ) {
+    global $wpdb, $wp;
+    $product = get_post( $prod_id );
+    include 'views/product_detail.php';
+    return;
+}
+/**
+ * Blog Posts_show_category
+ *
+ * Create a product detail page.
+ *
+ * @param mixed $cat_id
+ * @access public
+ * @return void
+ */
+function blogs_show_category( $cat_id ) {
+    global $wpdb, $wp;
+    $term = get_terms(
+        GLM_BLOG_CATEGORY_NAME,
+        array(
+            'child_of'     => $cat_id,
+            'hide_empty'   => true,
+            //'parent'       => $catid_id,
+            //'hierarchical' => false
+        )
+    );
+
+    include 'views/category_detail.php';
+    return;
+}
+add_shortcode( 'blogs', 'blogs_shortcode' );
+
+
index 368718d..9e638e6 100644 (file)
@@ -9,13 +9,13 @@
  * License: GPLv2
  **/
 
-define( 'GLM_POST_TYPE', 'sitemap' );
-define( 'GLM_PRODUCT_SINGLE', 'Room' );
-define( 'GLM_PRODUCT_PLURAL', 'Rooms' );
-define( 'GLM_CATEGORY_NAME', 'rooms_category' );
-define( 'GLM_CATEGORY_SLUG', 'rooms-category' );
-define( 'GLM_CATEGORY_SINGLE', 'Site' );
-define( 'GLM_CATEGORY_PLURAL', 'Room Types' );
+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.
 /**
@@ -29,11 +29,11 @@ define( 'GLM_CATEGORY_PLURAL', 'Room Types' );
 function rooms_custom_post_type() {
 
     $labels = array(
-        'name'                  => _x( GLM_PRODUCT_PLURAL, 'Post Type General Name' ),
-        'singular_name'         => _x( GLM_PRODUCT_SINGLE, 'Post Type Singular Name' ),
-        'menu_name'             => __( GLM_PRODUCT_PLURAL ),
-        'name_admin_bar'        => __( GLM_PRODUCT_PLURAL ),
-        'archives'              => __( GLM_PRODUCT_SINGLE . ' Archives' ),
+        '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' ),
@@ -57,15 +57,15 @@ function rooms_custom_post_type() {
     );
 
     $rewrite = array(
-        'slug'                  => GLM_POST_TYPE,
+        'slug'                  => GLM_ROOM_POST_TYPE ,
         'with_front'            => false,
         'pages'                 => false,
         'feeds'                 => false,
     );
 
     $args = array(
-        'label'                 => __( GLM_PRODUCT_SINGLE ),
-        'description'           => __( 'Custom ' . GLM_PRODUCT_PLURAL ),
+        'label'                 => __( GLM_ROOM_SINGLE ),
+        'description'           => __( 'Custom ' . GLM_ROOM_PLURAL ),
         'labels'                => $labels,
         'supports'              => array( 'title', 'thumbnail', 'revisions', 'editor', 'author'),
         'hierarchical'          => true,
@@ -85,8 +85,8 @@ function rooms_custom_post_type() {
         'register_meta_box_cb'  => 'rooms_add_metaboxes',
     );
 
-    register_post_type( GLM_POST_TYPE, $args );
-    register_taxonomy_for_object_type( GLM_CATEGORY_NAME, GLM_POST_TYPE );
+    register_post_type( GLM_ROOM_POST_TYPE , $args );
+    register_taxonomy_for_object_type( GLM_ROOM_CATEGORY_NAME, GLM_ROOM_POST_TYPE  );
 }
 
 /**
@@ -98,11 +98,11 @@ function rooms_custom_post_type() {
  * @return void
  */
 function rooms_add_metaboxes() {
-    add_meta_box( 'rooms_water', 'Water', 'rooms_water', GLM_POST_TYPE, 'side', 'low' );
-    add_meta_box( 'rooms_sewer', 'Sewer', 'rooms_sewer', GLM_POST_TYPE, 'side', 'low' );
-    add_meta_box( 'rooms_power', 'Power', 'rooms_power', GLM_POST_TYPE, 'side', 'low' );
-    add_meta_box( 'rooms_loop', 'Loop', 'rooms_loop', GLM_POST_TYPE, 'side', 'low' );
-//    add_meta_box( 'rooms_tents', 'Tents', 'rooms_tents', GLM_POST_TYPE, 'side', 'low' );
+    add_meta_box( 'rooms_water', 'Water', 'rooms_water', GLM_ROOM_POST_TYPE , 'side', 'low' );
+    add_meta_box( 'rooms_sewer', 'Sewer', 'rooms_sewer', GLM_ROOM_POST_TYPE , 'side', 'low' );
+    add_meta_box( 'rooms_power', 'Power', 'rooms_power', GLM_ROOM_POST_TYPE , 'side', 'low' );
+    add_meta_box( 'rooms_loop', 'Loop', 'rooms_loop', GLM_ROOM_POST_TYPE , 'side', 'low' );
+//    add_meta_box( 'rooms_tents', 'Tents', 'rooms_tents', GLM_ROOM_POST_TYPE , 'side', 'low' );
 }
 
 /**
@@ -293,17 +293,17 @@ function rooms_taxonomies() {
 
     // Experiences
     $labels = array(
-        'name'              => _x( GLM_CATEGORY_NAME, 'taxonomy general name' ),
-        'singular_name'     => _x( GLM_CATEGORY_NAME, 'taxonomy singular name' ),
-        'search_items'      => __( 'Search ' . GLM_CATEGORY_PLURAL ),
-        'all_items'         => __( 'All ' . GLM_CATEGORY_PLURAL ),
-        'parent_item'       => __( 'Parent ' . GLM_CATEGORY_SINGLE ),
-        'parent_item_colon' => __( 'Parent ' . GLM_CATEGORY_SINGLE ),
-        'edit_item'         => __( 'Edit ' . GLM_CATEGORY_SINGLE ),
-        'update_item'       => __( 'Update ' . GLM_CATEGORY_SINGLE ),
-        'add_new_item'      => __( 'Add New ' . GLM_CATEGORY_SINGLE ),
-        'new_item_name'     => __( 'New ' . GLM_CATEGORY_SINGLE . ' Name' ),
-        'menu_name'         => __( 'Site ' . GLM_CATEGORY_SINGLE ),
+        '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(
@@ -314,8 +314,8 @@ function rooms_taxonomies() {
     );
 
     $args = array(
-        'label'                => __( GLM_CATEGORY_PLURAL ),
-        'rewrite'              => array( 'slug' => GLM_CATEGORY_SLUG ),
+        'label'                => __( GLM_ROOM_CATEGORY_PLURAL ),
+        'rewrite'              => array( 'slug' => GLM_ROOM_CATEGORY_SLUG ),
         'capabilities'         => $capabilities,
         'public '              => true,
         'show_in_quick_edit'   => true,
@@ -324,8 +324,8 @@ function rooms_taxonomies() {
     );
 
      register_taxonomy(
-        GLM_CATEGORY_NAME,
-        GLM_POST_TYPE,
+        GLM_ROOM_CATEGORY_NAME,
+        GLM_ROOM_POST_TYPE ,
         $args
     );
 }
@@ -421,8 +421,8 @@ add_action( 'admin_init', 'rooms_set_admin_columns' );
 function rooms_admin_edit_columns( $columns ) {
     $columns = array(
         'cb'                  => '<input type="checkbox">',
-        'title'               => GLM_PRODUCT_SINGLE . ' Title',
-        'rooms_col_cat'    => GLM_CATEGORY_SINGLE,
+        'title'               => GLM_ROOM_SINGLE . ' Title',
+        'rooms_col_cat'    => GLM_ROOM_CATEGORY_SINGLE,
     );
     return $columns;
 }
@@ -482,14 +482,14 @@ function rooms_shortcode( $atts ) {
     ob_start();
 
     if ( isset( $atts['cat']) ) {
-        if ( $prod_experience = get_term_by( 'slug', $atts['cat'], GLM_CATEGORY_NAME ) ) {
-           if ( !isset($_REQUEST[ GLM_CATEGORY_NAME ] )) {
-            $_REQUEST[ GLM_CATEGORY_NAME ] = $prod_experience->term_id;
+        if ( $prod_experience = get_term_by( 'slug', $atts['cat'], GLM_ROOM_CATEGORY_NAME ) ) {
+           if ( !isset($_REQUEST[ GLM_ROOM_CATEGORY_NAME ] )) {
+            $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] = $prod_experience->term_id;
            }
             $cat_id = $prod_experience->term_id;
         }
     }
-    $term = get_term_by( "id", $_REQUEST[ GLM_CATEGORY_NAME ],"rooms_category" );
+    $term = get_term_by( "id", $_REQUEST[ GLM_ROOM_CATEGORY_NAME ],"rooms_category" );
     $name = $term->name;   
     if ( !$name ) {
         $name = "ALL PRODUCTS";
@@ -538,17 +538,17 @@ function rooms_shortcode( $atts ) {
  */
 function rooms_get_terms_dropdown( $cat_id ) {
     
-    $taxonomy_name = GLM_CATEGORY_NAME;
+    $taxonomy_name = GLM_ROOM_CATEGORY_NAME;
     if ( $cat_id ) {
-        $main = get_term( $cat_id, GLM_CATEGORY_NAME );
+        $main = get_term( $cat_id, GLM_ROOM_CATEGORY_NAME );
         $cats_child = get_term_children( $cat_id, $taxonomy_name );
-        $output ="<select id='categoryDropdown' name=\"" . GLM_CATEGORY_NAME . "\"><option value=\"\"> Select " . $main->name . " Sub-category" . "</option>";
+        $output ="<select id='categoryDropdown' name=\"" . GLM_ROOM_CATEGORY_NAME . "\"><option value=\"\"> Select " . $main->name . " Sub-category" . "</option>";
         foreach ( $cats_child as $cat ) {
           $output .= '<option value="' . $cat . '"';
-           if ( $_REQUEST[ GLM_CATEGORY_NAME ] == $cat ) {
+           if ( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] == $cat ) {
                 $output .= ' selected';
             }
-            $cat_name = get_term( $cat, GLM_CATEGORY_NAME );
+            $cat_name = get_term( $cat, GLM_ROOM_CATEGORY_NAME );
              $output .= '>' . "&nbsp&nbsp&nbsp" . $cat_name->name. '</option>';
         }
         $output .="</select>";
@@ -557,33 +557,33 @@ function rooms_get_terms_dropdown( $cat_id ) {
     $parent_terms = get_terms( $taxonomy_name, array('parent' => 0, 'orderby' => 'name', 'hide_empty' => false ));
     $terms = get_terms( $taxonomy_name, array('orderby' => 'name', 'hide_empty' => false ));
  
-    $output ="<select id='categoryDropdown' name=\"" . GLM_CATEGORY_NAME . "\"><option value=\"\">Select " . GLM_CATEGORY_SINGLE . "</option>";
+    $output ="<select id='categoryDropdown' name=\"" . GLM_ROOM_CATEGORY_NAME . "\"><option value=\"\">Select " . GLM_ROOM_CATEGORY_SINGLE . "</option>";
         // Get parent categories.
         foreach ( $parent_terms as $parent ) {   
             // Get children of each category.
             $child_terms = get_terms( $taxonomy_name, array('parent'=> $parent->term_id, 'child_of' => $parent->term_id, 'orderby' => 'name', 'hide_empty' => false));
             $output .= '<option value="' . $parent->term_id . '"';
-            if ( $_REQUEST[ GLM_CATEGORY_NAME ] === $parent->term_id ) {
+            if ( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] === $parent->term_id ) {
                 $output .= ' selected';
             }
             $output .= '>' . $parent->name . '</option>';
             foreach ($child_terms as $child ) {
                 $grandchildren = get_terms( $taxonomy_name, array('parent'=> $child->term_id, 'child_of' => $child->term_id, 'orderby' => 'name', 'hide_empty' => false ));
                  $output .= '<option value="' . $child->term_id . '"';
-                if ( $_REQUEST[ GLM_CATEGORY_NAME ] === $child->term_id ) {
+                if ( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] === $child->term_id ) {
                     $output .= ' selected';
                 }
                 $output .= '>' . "&nbsp&nbsp&nbsp" .  $child->name . '</option>';
                 foreach ( $grandchildren as $grand_child) {
                     $great_grandchildren = get_terms( $taxonomy_name, array( 'parent'=> $grand_child->term_id, 'child_of' => $grand_child->term_id, 'orderby' => 'name', 'hide_empty' => false ));
                     $output .= '<option value="' . $grand_child->term_id . '"';
-                    if ( $_REQUEST[ GLM_CATEGORY_NAME ] === $grand_child->term_id ) {
+                    if ( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] === $grand_child->term_id ) {
                         $output .= ' selected';
                     }
                     $output .= '>' . "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" .  $grand_child->name . '</option>';
                     foreach ( $great_grandchildren as $great_grandchild ) {
                         $output .= '<option value="' . $great_grandchild->term_id . '"';
-                    if ( $_REQUEST[ GLM_CATEGORY_NAME ] === $great_grandchild->term_id ) {
+                    if ( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] === $great_grandchild->term_id ) {
                         $output .= ' selected';
                     }
                     $output .= '>' . "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" .  $great_grandchild->name . '</option>';
@@ -606,14 +606,14 @@ function rooms_get_terms_dropdown( $cat_id ) {
  */
 function rooms_list_products( $text_query ) {
     global $wpdb, $wp;
-    $cat = get_term( $cat_id, GLM_CATEGORY_NAME );
+    $cat = get_term( $cat_id, GLM_ROOM_CATEGORY_NAME );
     $args = array(
         'posts_per_page' => -1,
-        'post_type'     => GLM_POST_TYPE,
+        'post_type'     => GLM_ROOM_POST_TYPE ,
         's' => $text_query,
     );
-    $rooms_category = ( isset( $_REQUEST[ GLM_CATEGORY_NAME ] ) )
-        ? filter_var( $_REQUEST[ GLM_CATEGORY_NAME ] )
+    $rooms_category = ( isset( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] ) )
+        ? filter_var( $_REQUEST[ GLM_ROOM_CATEGORY_NAME ] )
         : false;
 
     if ( $rooms_category ) {
@@ -621,7 +621,7 @@ function rooms_list_products( $text_query ) {
             'relation' => 'AND',
         );
         $args['tax_query'][] = array(
-            'taxonomy' => GLM_CATEGORY_NAME,
+            'taxonomy' => GLM_ROOM_CATEGORY_NAME,
             'field'    => 'id',
             'terms'    => $rooms_category, 
         );
@@ -633,7 +633,7 @@ function rooms_list_products( $text_query ) {
     $iterator      = 1;
 
     foreach ( $products as $product ) {
-        $product_terms = wp_get_post_terms( $product->ID, GLM_CATEGORY_NAME, 'name' );
+        $product_terms = wp_get_post_terms( $product->ID, GLM_ROOM_CATEGORY_NAME, 'name' );
         $p_term = $product_terms[0];
         $product->term = $p_term->name;
         $product->end = false;
@@ -662,7 +662,7 @@ function rooms_list_products( $text_query ) {
 function rooms_list_categories( $cat_id = null ) {
     global $wpdb, $wp;
 
-    $taxonomy = GLM_CATEGORY_NAME;
+    $taxonomy = GLM_ROOM_CATEGORY_NAME;
     $args = array(
         'hide_empty' => false,
         'pad_counts' => true
@@ -721,7 +721,7 @@ function rooms_show_product( $prod_id ) {
 function rooms_show_category( $cat_id ) {
     global $wpdb, $wp;
     $term = get_terms(
-        GLM_CATEGORY_NAME,
+        GLM_ROOM_CATEGORY_NAME,
         array(
             'child_of'     => $cat_id,
             'hide_empty'   => true,