Migrate the logic and queries out of the template file.
Move them where they belong, in the class that calls it.
This commit is contained in:
parent
d854e8dc2a
commit
521d8f4861
|
@ -106,10 +106,72 @@ class WC_Settings_Tax extends WC_Settings_Page {
|
||||||
public function output_tax_rates() {
|
public function output_tax_rates() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
$page = ! empty( $_GET['p'] ) ? absint( $_GET['p'] ) : 1;
|
|
||||||
$limit = 100;
|
|
||||||
$current_class = $this->get_current_tax_class();
|
$current_class = $this->get_current_tax_class();
|
||||||
|
|
||||||
|
// Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
|
||||||
|
$rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $current_class ) ) );
|
||||||
|
$locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
|
||||||
|
|
||||||
|
// Set the rates keys equal to their ids.
|
||||||
|
$rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
|
||||||
|
|
||||||
|
// Drop the locations into the rates array.
|
||||||
|
foreach ( $locations as $location ) {
|
||||||
|
// Don't set them for unexistent rates.
|
||||||
|
if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// If the rate exists, initialize the array before appending to it.
|
||||||
|
if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
|
||||||
|
$rates[ $location->tax_rate_id ]->{$location->location_type} = array();
|
||||||
|
}
|
||||||
|
$rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$countries = array();
|
||||||
|
foreach ( WC()->countries->get_allowed_countries() as $value => $label ) {
|
||||||
|
$countries[] = array(
|
||||||
|
'label' => $label,
|
||||||
|
'value' => $value,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$states = array();
|
||||||
|
foreach ( WC()->countries->get_allowed_country_states() as $label ) {
|
||||||
|
foreach ( $label as $code => $state ) {
|
||||||
|
$states[] = array(
|
||||||
|
'label' => $state,
|
||||||
|
'value' => $code,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Localize and enqueue our js.
|
||||||
|
wp_localize_script( 'wc-settings-tax', 'htmlSettingsTaxLocalizeScript', array(
|
||||||
|
'current_class' => $current_class,
|
||||||
|
'rates' => array_values( $rates ),
|
||||||
|
'page' => ! empty( $_GET['p'] ) ? absint( $_GET['p'] ) : 1,
|
||||||
|
'limit' => 100,
|
||||||
|
'countries' => $countries,
|
||||||
|
'states' => $states,
|
||||||
|
'strings' => array(
|
||||||
|
'no_rows_selected' => __( 'No row(s) selected', 'woocommerce' ),
|
||||||
|
'csv_data_cols' => array(
|
||||||
|
__( 'Country Code', 'woocommerce' ),
|
||||||
|
__( 'State Code', 'woocommerce' ),
|
||||||
|
__( 'ZIP/Postcode', 'woocommerce' ),
|
||||||
|
__( 'City', 'woocommerce' ),
|
||||||
|
__( 'Rate %', 'woocommerce' ),
|
||||||
|
__( 'Tax Name', 'woocommerce' ),
|
||||||
|
__( 'Priority', 'woocommerce' ),
|
||||||
|
__( 'Compound', 'woocommerce' ),
|
||||||
|
__( 'Shipping', 'woocommerce' ),
|
||||||
|
__( 'Tax Class', 'woocommerce' ),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
) );
|
||||||
|
wp_enqueue_script( 'wc-settings-tax' );
|
||||||
|
|
||||||
include( 'views/html-settings-tax.php' );
|
include( 'views/html-settings-tax.php' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,72 +2,6 @@
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
global $wpdb;
|
|
||||||
|
|
||||||
// Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
|
|
||||||
$rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $current_class ) ) );
|
|
||||||
$locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
|
|
||||||
|
|
||||||
// Set the rates keys equal to their ids.
|
|
||||||
$rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
|
|
||||||
|
|
||||||
// Drop the locations into the rates array.
|
|
||||||
foreach ( $locations as $location ) {
|
|
||||||
// Don't set them for unexistent rates.
|
|
||||||
if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// If the rate exists, initialize the array before appending to it.
|
|
||||||
if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
|
|
||||||
$rates[ $location->tax_rate_id ]->{$location->location_type} = array();
|
|
||||||
}
|
|
||||||
$rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
$countries = array();
|
|
||||||
foreach ( WC()->countries->get_allowed_countries() as $value => $label ) {
|
|
||||||
$countries[] = array(
|
|
||||||
'label' => $label,
|
|
||||||
'value' => $value,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$states = array();
|
|
||||||
foreach ( WC()->countries->get_allowed_country_states() as $label ) {
|
|
||||||
foreach ( $label as $code => $state ) {
|
|
||||||
$states[] = array(
|
|
||||||
'label' => $state,
|
|
||||||
'value' => $code,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Localize and enqueue our js.
|
|
||||||
wp_localize_script( 'wc-settings-tax', 'htmlSettingsTaxLocalizeScript', array(
|
|
||||||
'current_class' => $current_class,
|
|
||||||
'rates' => array_values( $rates ),
|
|
||||||
'page' => $page,
|
|
||||||
'limit' => $limit,
|
|
||||||
'countries' => $countries,
|
|
||||||
'states' => $states,
|
|
||||||
'strings' => array(
|
|
||||||
'no_rows_selected' => __( 'No row(s) selected', 'woocommerce' ),
|
|
||||||
'csv_data_cols' => array(
|
|
||||||
__( 'Country Code', 'woocommerce' ),
|
|
||||||
__( 'State Code', 'woocommerce' ),
|
|
||||||
__( 'ZIP/Postcode', 'woocommerce' ),
|
|
||||||
__( 'City', 'woocommerce' ),
|
|
||||||
__( 'Rate %', 'woocommerce' ),
|
|
||||||
__( 'Tax Name', 'woocommerce' ),
|
|
||||||
__( 'Priority', 'woocommerce' ),
|
|
||||||
__( 'Compound', 'woocommerce' ),
|
|
||||||
__( 'Shipping', 'woocommerce' ),
|
|
||||||
__( 'Tax Class', 'woocommerce' ),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
) );
|
|
||||||
wp_enqueue_script( 'wc-settings-tax' );
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<h3><?php printf( __( 'Tax Rates for the "%s" Class', 'woocommerce' ), $current_class ? esc_html( $current_class ) : __( 'Standard', 'woocommerce' ) ); ?></h3>
|
<h3><?php printf( __( 'Tax Rates for the "%s" Class', 'woocommerce' ), $current_class ? esc_html( $current_class ) : __( 'Standard', 'woocommerce' ) ); ?></h3>
|
||||||
|
|
Loading…
Reference in New Issue