Skip to content
This repository has been archived by the owner. It is now read-only.

cleaned up functions and removed extra files #2

Merged
merged 1 commit into from
Apr 13, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion _notes/dwsync.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="grandchild-functions.php" server="development.wordpress.uconn.edu/edu.uconn.wordpress.development/public_html/wp-content/" local="131045124834778163" remote="131045124820000000" Dst="2" />
<file name="grandchild-functions.php" server="development.wordpress.uconn.edu/edu.uconn.wordpress.development/public_html/wp-content/" local="131050355436273641" remote="131050355430000000" Dst="2" />
<file name="grandchild-styles.css" server="development.wordpress.uconn.edu/edu.uconn.wordpress.development/public_html/wp-content/" local="131045143970231517" remote="131045143960000000" Dst="2" />
<file name="template-class.php" server="development.wordpress.uconn.edu/edu.uconn.wordpress.development/public_html/wp-content/" local="131045123140000000" remote="131045123140000000" Dst="2" />
</dwsync>
33 changes: 1 addition & 32 deletions grandchild-functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,13 @@
Description: Sample grandchild theme built as a plugin.
Author: Web Dev
Author URI: http://www.your-website.com
Version: 1.0
Version: 1.0
*/


require_once( plugin_dir_path( __FILE__ ) . 'template-class.php' );
add_action( 'plugins_loaded', array( 'Page_Template_Plugin', 'get_instance' ) );

// Adds our new file with styles
function grandchild_add_scripts_styles() {
wp_register_script( 'grandchild-script', plugins_url( 'grandchild-scripts.js', __FILE__ ), array( 'jquery' ), '1.0' );
wp_enqueue_script( 'grandchild-script' );

wp_register_style( 'grandchild-style', plugins_url( 'grandchild-styles.css', __FILE__ ), array(), '1.0' );
wp_enqueue_style( 'grandchild-style' );
}
add_action( 'wp_enqueue_scripts', 'grandchild_add_scripts_styles', 99999999 );

// Search for templates in plugin 'templates' dir, and load if exists
function grandchild_template_include( $template ) {
if ( file_exists( untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/templates/' . basename( $template ) ) )
$template = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/templates/' . basename( $template );

return $template;
}
add_filter( 'template_include', 'grandchild_template_include', 11 );

// We are hooking to the 'load_custom_header' filter
// and return a value of 'true' meaning that we want to
// load a custom header
/*add_filter( 'load_custom_header', '__return_true', 99 );
add_filter( 'get_custom_header', function( $header ) {
return plugin_dir_path( __FILE__ ).'templates/header.php';
}, 99 );
add_filter( 'load_custom_footer', '__return_true', 99 );
add_filter( 'get_custom_footer', function( $footer ) {
return plugin_dir_path( __FILE__ ).'templates/footer.php';
}, 99 );
*/
221 changes: 221 additions & 0 deletions template-class.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
<?php

/**
* This plugin allows you to include templates with your plugin so that they can
* be added with any theme.
*
* @package Page Template Example
* @version 1.0.0
* @since 0.1.0
*/
class Page_Template_Plugin {

/**
* Plugin version, used for cache-busting of style and script file references.
*
* @since 1.0.0
*
* @var string
*/
const VERSION = '1.0.0';

/**
* Unique identifier for the plugin.
*
* The variable name is used as the text domain when internationalizing strings
* of text.
*
* @since 1.0.0
*
* @var string
*/
protected $plugin_slug;

/**
* A reference to an instance of this class.
*
* @since 0.1.0
*
* @var Page_Template_Plugin
*/
private static $instance;

/**
* The array of templates that this plugin tracks.
*
* @var array
*/
protected $templates;


/**
* Returns an instance of this class. An implementation of the singleton design pattern.
*
* @return Page_Templae_Example A reference to an instance of this class.
* @since 1.0.0
*/
public static function get_instance() {

if( null == self::$instance ) {
self::$instance = new Page_Template_Plugin();
} // end if

return self::$instance;

} // end getInstance

/**
* Initializes the plugin by setting localization, filters, and administration functions.
*
* @version 1.0.0
* @since 1.0.0
*/
private function __construct() {

$this->templates = array();
$this->plugin_locale = 'pte';

// Grab the translations for the plugin
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );

// Add a filter to the page attributes metabox to inject our template into the page template cache.
add_filter('page_attributes_dropdown_pages_args', array( $this, 'register_project_templates' ) );

// Add a filter to the save post in order to inject out template into the page cache
add_filter('wp_insert_post_data', array( $this, 'register_project_templates' ) );

// Add a filter to the template include in order to determine if the page has our template assigned and return it's path
add_filter('template_include', array( $this, 'view_project_template') );

// Register hooks that are fired when the plugin is activated, deactivated, and uninstalled, respectively.
register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );

// Add your templates to this array.
$this->templates = array(
'page-sample.php' => __( 'Sample', $this->plugin_slug ),
//'page-sample2.php' => __( 'Sample2', $this->plugin_slug ),
//'page-sample3.php' => __( 'Sample3', $this->plugin_slug ),
);

// adding support for theme templates to be merged and shown in dropdown
$templates = wp_get_theme()->get_page_templates();
$templates = array_merge( $templates, $this->templates );

} // end constructor

/**
* Load the plugin text domain for translation.
*
* @since 1.0.0
*/
public function load_plugin_textdomain() {

$domain = $this->plugin_slug;
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );

load_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain . '/' . $domain . '-' . $locale . '.mo' );
load_plugin_textdomain( $domain, FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );

} // end load_plugin_textdomain

/**
* Adds our template to the pages cache in order to trick WordPress
* into thinking the template file exists where it doens't really exist.
*
* @param array $atts The attributes for the page attributes dropdown
* @return array $atts The attributes for the page attributes dropdown
* @verison 1.0.0
* @since 1.0.0
*/
public function register_project_templates( $atts ) {

// Create the key used for the themes cache
$cache_key = 'page_templates-' . md5( get_theme_root() . '/' . get_stylesheet() );

// Retrieve the cache list. If it doesn't exist, or it's empty prepare an array
$templates = wp_cache_get( $cache_key, 'themes' );
if ( empty( $templates ) ) {
$templates = array();
} // end if

// Since we've updated the cache, we need to delete the old cache
wp_cache_delete( $cache_key , 'themes');

// Now add our template to the list of templates by merging our templates
// with the existing templates array from the cache.
$templates = array_merge( $templates, $this->templates );

// Add the modified cache to allow WordPress to pick it up for listing
// available templates
wp_cache_add( $cache_key, $templates, 'themes', 1800 );

return $atts;

} // end register_project_templates

/**
* Checks if the template is assigned to the page
*
* @version 1.0.0
* @since 1.0.0
*/
public function view_project_template( $template ) {

global $post;

// If no posts found, return to
// avoid "Trying to get property of non-object" error
if ( !isset( $post ) ) return $template;

if ( ! isset( $this->templates[ get_post_meta( $post->ID, '_wp_page_template', true ) ] ) ) {
return $template;
} // end if

$file = plugin_dir_path( __FILE__ ) . 'templates/' . get_post_meta( $post->ID, '_wp_page_template', true );

// Just to be safe, we check if the file exist first
if( file_exists( $file ) ) {
return $file;
} // end if

return $template;

} // end view_project_template

/*--------------------------------------------*
* deactivate the plugin
*---------------------------------------------*/
static function deactivate( $network_wide ) {
foreach($this as $value) {
page-template-example::delete_template( $value );
}

} // end deactivate

/*--------------------------------------------*
* Delete Templates from Theme
*---------------------------------------------*/
public function delete_template( $filename ){
$theme_path = get_template_directory();
$template_path = $theme_path . '/' . $filename;
if( file_exists( $template_path ) ) {
unlink( $template_path );
}

// we should probably delete the old cache
wp_cache_delete( $cache_key , 'themes');
}

/**
* Retrieves and returns the slug of this plugin. This function should be called on an instance
* of the plugin outside of this class.
*
* @return string The plugin's slug used in the locale.
* @version 1.0.0
* @since 1.0.0
*/
public function get_locale() {
return $this->plugin_slug;
} // end get_locale

} // end class
4 changes: 4 additions & 0 deletions templates/_notes/dwsync.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="page-sample.php" server="development.wordpress.uconn.edu/edu.uconn.wordpress.development/public_html/wp-content/" local="131045123140000000" remote="131045123140000000" Dst="2" />
</dwsync>
24 changes: 24 additions & 0 deletions templates/page-sample.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php
/*
* Template Name: Sample
* Sample Page Template
*/
get_header(); ?>
<div id="page-az">
<?php include('../../../themes/cornerstone/inc/sidebar-check.php')?>
<?php while ( have_posts() ) : the_post(); ?>
<?php include('../../../themes/cornerstone/inc/submenu-check.php')?>
<div class="row">
<div class="col-sm-<?php echo (is_active_sidebar( $sidebar )?9:12); ?>">
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
Sample content
</main>
</div>
</div>
<?php include('../../../themes/cornerstone/inc/sidebar-if-active.php')?>
</div>
<?php include('../../../themes/cornerstone/inc/submenu-closing-tags.php')?>
<?php endwhile; // end of the loop. ?>
</div>
<?php get_footer(); ?>