2017-02-10 1 views
1

Ich habe dieses Plugin zum Hinzufügen bestimmter Vorlagen für die Seite verwendet.Seitenvorlagenoption wird nach dem Update auf 4.7 nicht angezeigt.

class PageTemplater { 
    protected $plugin_slug; 
    private static $instance; 
    protected $templates; 

    public static function get_instance() { 
    if(null == self::$instance) { 
     self::$instance = new PageTemplater(); 
    } 
    return self::$instance; 
    } 

    private function __construct() { 
    $this->templates = array(); 

    add_filter('page_attributes_dropdown_pages_args', array($this, 'register_project_templates')); 
// add_filter('wp_insert_post_data', array($this, 'register_project_templates')); 
    add_filter('template_include', array($this, 'view_project_template')); 

    $this->templates = array(
     'page-json.php'  => 'JSON list', 
    ); 
    } 

    public function register_project_templates($atts) { 

    // Create the key used for the themes cache 
    $cache_key = 'page_templates-' . md5(get_theme_root_uri() . '/' . 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, $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; 
    } 

    /** 
    * Checks if the template is assigned to the page 
    */ 
    public function view_project_template($template) { 
    global $post; 

    if (!isset($this->templates[get_post_meta($post->ID, '_wp_page_template', true)])) { 

    } 

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

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

    return $template; 
    } 
} 
add_action('plugins_loaded', array('PageTemplater', 'get_instance')); 

Aber wenn ich eine Wordpress 4.7 Seitenvorlage Optionen angezeigt hatte aktualisiert haben gestoppt. Vielleicht verwende ich veraltete Funktionen?

Bitte helfen.

Antwort

0

Festcode:

// Add a filter to the attributes metabox to inject template into the cache. 
    if (version_compare(floatval(get_bloginfo('version')), '4.7', '<')) { 

     // 4.6 and older 
     add_filter(
      'page_attributes_dropdown_pages_args', 
      array($this, 'register_project_templates') 
     ); 

    } else { 

     // Add a filter to the wp 4.7 version attributes metabox 
     add_filter(
      'theme_page_templates', array($this, 'add_new_template') 
     ); 

    } 
/** 
* Adds our template to the page dropdown for v4.7+ 
* 
*/ 
public function add_new_template($posts_templates) { 
    $posts_templates = array_merge($posts_templates, $this->templates); 
    return $posts_templates; 
} 

Quelle: http://www.wpexplorer.com/wordpress-page-templates-plugin/

Verwandte Themen