_get_tpl(); $this->_get_item_tpl(); $this->_get_pagination_tpl(); $this->_get_additional_data_tpl(); $this->atts = $atts; } public function build_tpl( $items ) { $items_tpl = ''; foreach ( $items as $item_arr ) { $item_tpl = $this->item_tpl; $additional_data = ''; if ( ! empty( $item_arr[ 'additional_data' ] ) ) { foreach ( $item_arr[ 'additional_data' ] as $add_data ) { foreach ( $add_data as $key => $value ) $add_data_tpl = $this->add_data_tpl; $additional_data .= str_replace( array( '%_key_%', '%_value_%' ), array( $key, $value ), $add_data_tpl ); } } $item_arr[ 'additional_data' ] = $additional_data; foreach ( $item_arr as $key => $value ) { $item_tpl = str_replace( '%_' . $key . '_%', $value, $item_tpl ); } $items_tpl .= $item_tpl; } $out = str_replace( '%_items_%', $items_tpl, $this->tpl ); $pagination = ''; if ( $this->atts[ 'total_pages' ] > 1 ) { //pagination required for ( $i = 1; $i <= $this->atts[ 'total_pages' ]; $i ++ ) { if ( $this->atts[ 'curr_page' ] == $i ) { $p_tpl = $this->pagination_tpl[ 'current' ]; } else { $p_tpl = $this->pagination_tpl[ 'default' ]; } $pagination .= str_replace( array( '%_url_%', '%_page_num_%' ), array( add_query_arg( 'asp_page', $i, get_permalink() ), $i ), $p_tpl ); } } $out = str_replace( '%_pagination_%', $pagination, $out ); return $out; } private function _get_tpl() { if ( $this->tpl ) { return true; } ob_start(); ?>
%_items_%
tpl = ob_get_clean(); return false; } private function _get_item_tpl() { if ( $this->item_tpl ) { return true; } ob_start(); ?>
%_product_name_%
%_product_id_%
%_amount_%
%_date_%
%_additional_data_%
item_tpl = ob_get_clean(); return false; } private function _get_additional_data_tpl() { if ( $this->add_data_tpl ) { return true; } ob_start(); ?>
%_key_% %_value_%
add_data_tpl = ob_get_clean(); return false; } private function _get_pagination_tpl() { if ( $this->pagination_tpl ) { return true; } ob_start(); ?>
  • %_page_num_%
  • pagination_tpl = array(); $this->pagination_tpl[ 'default' ] = ob_get_clean(); //current page tpl ob_start(); ?>
  • %_page_num_%
  • pagination_tpl[ 'current' ] = ob_get_clean(); return false; } }