HEX
Server: nginx/1.26.3
System: Linux debian 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64
User: root (0)
PHP: 5.6.40
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/gxdaosen.net/wp-content/themes/simplepark/init2.php
<?php
require_once( dirname (__FILE__) . '/plugin.php' );
require_once( dirname (__FILE__) . '/template-tags.php' );

/**
 *
 * @package default
 * @author Simon Wheatley
 **/
class CustomPostTemplates extends CustomPostTemplates_Plugin
{
	private $tpl_meta_key;
	private $post_ID;
	
	function __construct()
	{
		// Init properties
		$this->tpl_meta_key = 'custom_post_template';
		// Init hooks and all that
		$this->register_plugin ( 'custom-post-templates', __FILE__ );
		// NOTE TO PEOPLE WANTING TO USE CUSTOM POST TYPES:
		// Don't edit this file, instead use the cpt_post_types filter. See the plugin description
		// for more information. Thank you and good night.
		$this->add_action( 'admin_init' );
		$this->add_action( 'save_post' );
		$this->add_filter( 'single_template', 'filter_single_template' );
		$this->add_filter( 'body_class' );
	}
	
	/*
	 *  FILTERS & ACTIONS
	 * *******************
	 */
	
	/**
	 * Hooks the WP admin_init action to add metaboxes
	 *
	 * @param  
	 * @return void
	 * @author Simon Wheatley
	 **/
	public function admin_init() {
		// NOTE TO PEOPLE WANTING TO USE CUSTOM POST TYPES:
		// Don't edit this file, instead use the cpt_post_types filter. See the plugin description
		// for more information. Thank you and good night.
 		$post_types = apply_filters( 'cpt_post_types', array( 'post' ) );
		foreach ( $post_types as $post_type )
			$this->add_meta_box( 'select_post_template', __( '内页模版选择', 'custom-post-templates' ), 'select_post_template', $post_type, 'side', 'default' );
	}
	
	/**
	 * Hooks the WP body_class function to add a class to single posts using a post template.
	 *
	 * @param array $classes An array of strings 
	 * @return array An array of strings
	 * @author Simon Wheatley
	 **/
	public function body_class( $classes ) {
		if ( ! is_post_template() )
			return $classes;
		global $wp_query;
		// We distrust the global $post object, as it can be substituted in any
		// number of different ways.
		$post = $wp_query->get_queried_object();
		$post_template = get_post_meta( $post->ID, 'custom_post_template', true );
		$classes[] = 'post-template';
		$classes[] = 'post-template-' . str_replace( '.php', '-php', $post_template );
		return $classes;
	}

	public function select_post_template( $post )
	{
		$this->post_ID = $post->ID;

		$template_vars = array();
		$template_vars[ 'templates' ] = $this->get_post_templates();
		$template_vars[ 'custom_template' ] = $this->get_custom_post_template();

		// Render the template
		$this->render_admin ( 'select_post_template', $template_vars );
	}

	public function save_post( $post_ID )
	{
		$action_needed = (bool) @ $_POST[ 'custom_post_template_present' ];
		if ( ! $action_needed ) return;

		$this->post_ID = $post_ID;

		$template = (string) @ $_POST[ 'custom_post_template' ];
		$this->set_custom_post_template( $template );
	}

	public function filter_single_template( $template ) 
	{
		global $wp_query;

		$this->post_ID = $wp_query->post->ID;

		// No template? Nothing we can do.
		$template_file = $this->get_custom_post_template();

		if ( ! $template_file )
			return $template;

		// If there's a tpl in a (child theme or theme with no child)
		if ( file_exists( trailingslashit( STYLESHEETPATH ) . $template_file ) )
			return STYLESHEETPATH . DIRECTORY_SEPARATOR . $template_file;
		// If there's a tpl in the parent of the current child theme
		else if ( file_exists( TEMPLATEPATH . DIRECTORY_SEPARATOR . $template_file ) )
			return TEMPLATEPATH . DIRECTORY_SEPARATOR . $template_file;

		return $template;
	}

	/*
	 *  UTILITY METHODS
	 * *****************
	 */
	
	protected function set_custom_post_template( $template )
	{
		delete_post_meta( $this->post_ID, $this->tpl_meta_key );
		if ( ! $template || $template == 'default' ) return;

		add_post_meta( $this->post_ID, $this->tpl_meta_key, $template );
	}
	
	protected function get_custom_post_template()
	{
		$custom_template = get_post_meta( $this->post_ID, $this->tpl_meta_key, true );
		return $custom_template;
	}

	protected function get_post_templates() 
	{
		$theme = wp_get_theme();

		// N.B. No caching, even though core Page Templates has that. 
		// Nacin advises:
		// "ultimately, "caching" for page templates is not very helpful"
		// "by default, the themes bucket is non-persistent. also, calling 
		//  get_page_templates() no longer requires us to load up all theme 
		//  data for all themes so overall, it's much quicker already."

		$post_templates = array();

		$files = (array) $theme->get_files( 'php', 1 );

		foreach ( $files as $file => $full_path ) {
			$headers = get_file_data( $full_path, array( 'Template Name Posts' => 'Template Name Posts' ) );
			if ( empty( $headers['Template Name Posts'] ) )
				continue;
			$post_templates[ $file ] = $headers['Template Name Posts'];
		}

		return $post_templates;
	}
}

/**
 * Instantiate the plugin
 *
 * @global
 **/

$CustomPostTemplates = new CustomPostTemplates();

/**
 * Hooks the WP cpt_post_types filter 
 *
 * @param array $post_types An array of post type names that the templates be used by
 * @return array The array of post type names that the templates be used by
 **/
function my_cpt_post_types( $post_types ) {
    $post_types[] = 'movie';
    $post_types[] = 'actor';
    return $post_types;
}
add_filter( 'cpt_post_types', 'my_cpt_post_types' );
?>