/** * Load Page Variables * @param string $json * @return void */ public function loadVariables($json) { $this->variables = array(); if (!empty($json)) { // Parse from JSON String $variables = json_decode($json, true); if (!empty($variables) && is_array($variables)) { // Page Variables $this->variables = $variables; } } // Load Template Variables if ($this->template instanceof Page_Template) { $this->template->getVariables($this); } }
/** * Get Skin's Page Templates * @param boolean $reload * @return array */ public function getTemplates($reload = false) { if (!is_array($this->templates) || $reload) { $this->templates = array(); $order = array(); $tplDir = $this->checkDir('tpl/pages/'); if (!empty($tplDir)) { // Scan Directories foreach (glob($tplDir . '*', GLOB_ONLYDIR | GLOB_MARK) as $dir) { $config = $dir . 'config.json'; if (file_exists($config)) { $template = new Page_Template($dir); $this->templates[$template->getName()] = $template; $order[$template->getName()] = $template->getOrder(); } else { // Scan Sub-Directories foreach (glob($dir . '*', GLOB_ONLYDIR | GLOB_MARK) as $dir) { $config = $dir . 'config.json'; if (file_exists($config)) { $template = new Page_Template($dir); $this->templates[$template->getName()] = $template; $order[$template->getName()] = $template->getOrder(); } } } } } // Re-Order Templates array_multisort($order, SORT_ASC, $this->templates); } return $this->templates; }
/** * register our custom templates in the wp cache, overriding the menu that wp uses * thanks to http://www.wpexplorer.com/wordpress-page-templates-plugin */ public function register_custom_templates($attrs) { $page_templates = []; foreach (Page_Template::getAll() as $template) { $page_templates[$template->name] = $template->name; unset($template); } // 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_get_theme()->get_page_templates(); if (empty($templates)) { $templates = array(); } // New cache, therefore remove the old one 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, $page_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 $attrs; }