_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(); ?>