added custom template creation to functions php, and removed test javascript
authorAnthony Talarico <talarico@gaslightmedia.com>
Wed, 31 Aug 2016 18:37:48 +0000 (14:37 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Wed, 31 Aug 2016 18:37:48 +0000 (14:37 -0400)
root/functions.php
root/js/custom/pageSetup.js

index e7dd182..dc3239c 100644 (file)
@@ -140,4 +140,79 @@ function is_post_type($type){
 
 add_action('thematic_searchloop', 'mytheme_search_loop');
 // End of the Contextual/Highlight Search functions
+
+// This series of functions is used for forcing a template if one or any is picked.
+// START FORCE TEMPLATE FUNCTIONS
+add_filter( 'template_include', 'glm_force_template', 99 );
+function glm_force_template( $template ) {
+    global $post;
+    /*
+     *  Uncomment this IF statement surrounding the locate_template line
+     * if you want to use the given template (index.php) EVERY time any page
+     * template is selected & included.
+     */
+    //if (get_page_template_slug( $post->ID ) == "test-template") {
+        $template = locate_template( "index.php" );
+    //}
+    return $template;
+}
+function get_custom_page_templates() {
+    $templates = array();
+    // maybe by options? --> $templates = get_option( 'custom_page_templates' );
+    // maybe by conf file? --> $templates = include 'custom_page_templates.php';
+    return apply_filters( 'custom_page_templates', $templates );
+}
+add_action( 'edit_form_after_editor', 'custom_page_templates_init' );
+add_action( 'load-post.php', 'custom_page_templates_init_post' );
+add_action( 'load-post-new.php', 'custom_page_templates_init_post' );
+
+function custom_page_templates_init() {
+    remove_action( current_filter(), __FUNCTION__ );
+    if ( is_admin() && get_current_screen()->post_type === 'page' ) {
+        $templates = get_custom_page_templates(); // the function above
+        if ( ! empty( $templates ) )  {
+            set_custom_page_templates( $templates );
+        }
+    }
+}
+function custom_page_templates_init_post() {
+    remove_action( current_filter(), __FUNCTION__ );
+    $method = filter_input( INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_STRING );
+    if ( empty( $method ) || strtoupper( $method ) !== 'POST' ) return;
+    if ( get_current_screen()->post_type === 'page' ) {
+        custom_page_templates_init();
+    }
+}
+function set_custom_page_templates( $templates = array() ) {
+    if ( ! is_array( $templates ) || empty( $templates ) ) return;
+    $core = array_flip( (array) get_page_templates() ); // templates defined by file
+    $data = array_filter( array_merge( $core, $templates ) );
+    ksort( $data );
+    $stylesheet = get_stylesheet();
+    $hash = md5( get_theme_root( $stylesheet ) . '/' . $stylesheet );
+    $persistently = apply_filters( 'wp_cache_themes_persistently', false, 'WP_Theme' );
+    $exp = is_int( $persistently ) ? $persistently : 1800;
+    wp_cache_set( 'page_templates-' . $hash, $data, 'themes', $exp );
+}
+add_filter( 'custom_page_templates', function( $now_templates ) {
+    // Any slug->name pairs down here will be selectable in the admin side of
+    // a page. You do not need to create a new template file. You can refer to
+    // this template by its slug in our index.php using get_page_template_slug
+    // Below are some commented examples of custom quasi-templates.
+    $templates = array(
+    //    'some-custom-page-template' => 'Some Custom Page Template',
+    //    'any-template-slug' => 'Sample Template' ,
+    );
+
+    return array_merge( $now_templates, $templates );
+} );
+// END FORCE TEMPLATE FUNCTIONS
+
+
+// THIS IS HOW IT CAN BE USED IN INDEX.PHP
+<?php if (get_page_template_slug( $post->ID ) == "some-custom-page-template") {
+    echo "<div id='block'>[I am totally not a block ._.]</div>";
+} else {
+    echo "<p>The current template used is:".get_page_template_slug( $post->ID )."</p>";
+}
 ?>
index 320e25a..df15de0 100644 (file)
@@ -3,16 +3,6 @@
 jQuery(document).ready(function ($) {
      'use strict';
     $(document).foundation();
-
-    const PI = 3.141593;
-    class Test {
-        constructor(x,y){
-            this.x = y+x;
-            this.y = x;
-        }
-    }
-    let joe = "cool";
-    console.log(joe);
     
     $('ul.children').each(function () {
         $(this).before('<a class="toggle" href="#"></a>');