array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ) ); $available_template_engines = apply_filters( 'available_template_engines', $available_template_engines ); // check if the requested template-engine is available. if not, try to create it if( ! isset( self::$template_engine->$template_engine ) ){ if( ! isset( $available_template_engines[$template_engine] ) ){ return new WP_Error( 'template_engine', 'Unknown template-engine ' . $template_engine . '' ); } else { $tmpl_ng = &$available_template_engines[$template_engine]; $class = &$tmpl_ng[0]; $template = &$tmpl_ng[1]; self::$template_engine->$template_engine = new $class( new $template ); } } return self::$template_engine->$template_engine; } /** * * The output */ public function output( $stream ){ $output = $this->get_template_engine( $stream ); if( is_wp_error( $output ) ) die( $output->get_error_message() ); $output->print_headline( strtoupper( $stream ) ); $list = $output->get_list( 'ol', array( 'eins', 'zwei', 'drei' ) ); echo $list; } /** * * Setup html-mode */ public function set_html(){ // html is build in } /** * * Setup xml-mode */ public function set_xml(){ add_filter( 'available_template_engines', array( &$this, 'add_xml' ), 1, 0 ); } /** * * Add the XML-Template-Engine */ public function add_xml(){ return array( 'xml' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ), ); } public function set_feed(){ add_filter( 'available_template_engines', array( &$this, 'add_feed' ), 1,1 ); } public function add_feed( $template_engines ){ $feed_engines = array( 'rss' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ), 'atom' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ), ); return array_merge( $template_engines, $feed_engines ); } } $html = new Template_Engine_Test(); $html->set_html(); $html->output( 'html' ); $xml = new Template_Engine_Test(); $xml->set_xml(); $xml->output( 'xml' ); $feed = new Template_Engine_Test(); $feed->set_feed(); $feed->output( 'rss' ); $feed->output( 'atom' ); $bar = new Template_Engine_Test(); $bar->output( 'wallawalla' );