210 lines
9.3 KiB
PHP
Executable File
210 lines
9.3 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
|
|
*
|
|
* @version 3.6.0
|
|
* @since 2.8.0
|
|
* @author Algoritmika Ltd.
|
|
* @todo "pretty prices"
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
|
|
|
$currency_from = get_woocommerce_currency();
|
|
$all_currencies = wcj_get_currencies_names_and_symbols();
|
|
$settings = array(
|
|
array(
|
|
'title' => __( 'General Options', 'woocommerce-jetpack' ),
|
|
'type' => 'title',
|
|
'id' => 'wcj_multicurrency_options',
|
|
),
|
|
array(
|
|
'title' => __( 'Exchange Rates Updates', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Select how you want currency exchange rates to be updated. Possible options are: manually or automatically via Currency Exchange Rates module.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_exchange_rate_update_auto',
|
|
'default' => 'manual',
|
|
'type' => 'select',
|
|
'options' => array(
|
|
'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
|
|
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
|
),
|
|
'desc' => ( '' == apply_filters( 'booster_message', '', 'desc' ) ) ?
|
|
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies§ion=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
|
:
|
|
apply_filters( 'booster_message', '', 'desc' ),
|
|
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
|
),
|
|
array(
|
|
'title' => __( 'Multicurrency on per Product Basis', 'woocommerce-jetpack' ),
|
|
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'If you enable this option, you will be able to enter prices for products in different currencies directly (i.e. without exchange rates). This will add meta boxes in product edit.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_per_product_enabled',
|
|
'default' => 'yes',
|
|
'type' => 'checkbox',
|
|
),
|
|
array(
|
|
'desc' => __( 'Variable products: list available/active variations only', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Defines which variations are listed on admin product edit page in Multicurrency meta box. Ignored if "Multicurrency on per Product Basis" option is disabled.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_per_product_list_available_variations_only',
|
|
'default' => 'yes',
|
|
'type' => 'checkbox',
|
|
),
|
|
array(
|
|
'title' => __( 'Revert Currency to Default on Checkout', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Enable this if you want prices to revert back to your shop\'s default currency, when customer reaches the checkout page.', 'woocommerce-jetpack' ),
|
|
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_revert',
|
|
'default' => 'no',
|
|
'type' => 'checkbox',
|
|
),
|
|
array(
|
|
'title' => __( 'Rounding', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'If using exchange rates, choose rounding here.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_rounding',
|
|
'default' => 'no_round',
|
|
'type' => 'select',
|
|
'options' => array(
|
|
'no_round' => __( 'No rounding', 'woocommerce-jetpack' ),
|
|
'round' => __( 'Round', 'woocommerce-jetpack' ),
|
|
'round_up' => __( 'Round up', 'woocommerce-jetpack' ),
|
|
'round_down' => __( 'Round down', 'woocommerce-jetpack' ),
|
|
),
|
|
),
|
|
array(
|
|
'title' => __( 'Rounding Precision', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'If rounding is enabled, set rounding precision here.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_rounding_precision',
|
|
'default' => absint( get_option( 'woocommerce_price_num_decimals', 2 ) ),
|
|
'type' => 'number',
|
|
'custom_attributes' => array( 'min' => 0 ),
|
|
),
|
|
array(
|
|
'title' => __( 'Currency Switcher Template', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Set how you want currency switcher to be displayed on frontend.', 'woocommerce-jetpack' ),
|
|
'desc' => wcj_message_replaced_values( array( '%currency_name%', '%currency_symbol%', '%currency_code%' ) ),
|
|
'id' => 'wcj_multicurrency_switcher_template',
|
|
'default' => '%currency_name% (%currency_symbol%)',
|
|
'type' => 'text',
|
|
'class' => 'widefat',
|
|
),
|
|
array(
|
|
'title' => __( 'Advanced: Additional Price Filters', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Add additional price filters here. One per line. Leave blank if not sure.' ),
|
|
'desc' => sprintf( __( 'E.g.: %s' ), '<code>' . 'woocommerce_subscriptions_product_price' . '</code>' . ', ' .'<code>' . 'woocommerce_get_price' . '</code>' . '.' ),
|
|
'id' => 'wcj_multicurrency_switcher_additional_price_filters',
|
|
'default' => '',
|
|
'type' => 'textarea',
|
|
'css' => 'min-width:300px;height:150px;',
|
|
),
|
|
array(
|
|
'title' => __( 'Advanced: Price Filters Priority', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Priority for all module\'s price filters. Set to zero to use default priority.' ),
|
|
'id' => 'wcj_multicurrency_advanced_price_hooks_priority',
|
|
'default' => 0,
|
|
'type' => 'number',
|
|
),
|
|
array(
|
|
'type' => 'sectionend',
|
|
'id' => 'wcj_multicurrency_options',
|
|
),
|
|
array(
|
|
'title' => __( 'Currencies Options', 'woocommerce-jetpack' ),
|
|
'type' => 'title',
|
|
'desc' => __( 'One currency probably should be set to current (original) shop currency with an exchange rate of 1.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_currencies_options',
|
|
),
|
|
array(
|
|
'title' => __( 'Total Currencies', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Press Save changes after setting this option, so new settings fields will be added.', 'woocommerce-jetpack' ),
|
|
'id' => 'wcj_multicurrency_total_number',
|
|
'default' => 2,
|
|
'type' => 'custom_number',
|
|
'desc' => apply_filters( 'booster_message', '', 'desc' ),
|
|
'custom_attributes' => array_merge(
|
|
is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
|
|
array( 'step' => '1', 'min' => '2', )
|
|
),
|
|
),
|
|
);
|
|
$total_number = apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
|
|
for ( $i = 1; $i <= $total_number; $i++ ) {
|
|
$currency_to = get_option( 'wcj_multicurrency_currency_' . $i, $currency_from );
|
|
$custom_attributes = array(
|
|
'currency_from' => $currency_from,
|
|
'currency_to' => $currency_to,
|
|
'multiply_by_field_id' => 'wcj_multicurrency_exchange_rate_' . $i,
|
|
);
|
|
if ( $currency_from == $currency_to ) {
|
|
$custom_attributes['disabled'] = 'disabled';
|
|
}
|
|
$settings = array_merge( $settings, array(
|
|
array(
|
|
'title' => __( 'Currency', 'woocommerce-jetpack' ) . ' #' . $i,
|
|
'id' => 'wcj_multicurrency_currency_' . $i,
|
|
'default' => $currency_from,
|
|
'type' => 'select',
|
|
'options' => $all_currencies,
|
|
'css' => 'width:250px;',
|
|
),
|
|
array(
|
|
'title' => '',
|
|
'id' => 'wcj_multicurrency_exchange_rate_' . $i,
|
|
'default' => 1,
|
|
'type' => 'exchange_rate',
|
|
'custom_attributes_button' => $custom_attributes,
|
|
'value' => $currency_from . '/' . $currency_to,
|
|
),
|
|
) );
|
|
}
|
|
$settings = array_merge( $settings, array(
|
|
array(
|
|
'type' => 'sectionend',
|
|
'id' => 'wcj_multicurrency_currencies_options',
|
|
),
|
|
) );
|
|
$settings = array_merge( $settings, array(
|
|
array(
|
|
'title' => __( 'Role Defaults', 'woocommerce-jetpack' ),
|
|
'type' => 'title',
|
|
'desc' => sprintf( __( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
|
admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc§ion=general' ) ),
|
|
'id' => 'wcj_multicurrency_role_defaults_options',
|
|
),
|
|
array(
|
|
'title' => __( 'Roles', 'woocommerce-jetpack' ),
|
|
'desc_tip' => __( 'Save settings after you change this option. Leave blank to disable.', 'woocommerce-jetpack' ),
|
|
'type' => 'multiselect',
|
|
'id' => 'wcj_multicurrency_role_defaults_roles',
|
|
'default' => '',
|
|
'class' => 'chosen_select',
|
|
'options' => wcj_get_user_roles_options(),
|
|
),
|
|
) );
|
|
$module_currencies = array();
|
|
for ( $i = 1; $i <= $total_number; $i++ ) {
|
|
$currency_code = get_option( 'wcj_multicurrency_currency_' . $i, $currency_from );
|
|
$module_currencies[ $currency_code ] = $all_currencies[ $currency_code ];
|
|
}
|
|
$module_currencies = array_unique( $module_currencies );
|
|
$module_roles = get_option( 'wcj_multicurrency_role_defaults_roles', '' );
|
|
if ( ! empty( $module_roles ) ) {
|
|
foreach ( $module_roles as $role_key ) { // wcj_get_user_roles() as $role_key => $role_data
|
|
$settings = array_merge( $settings, array(
|
|
array(
|
|
'title' => $role_key, // $role_data['name'],
|
|
'id' => 'wcj_multicurrency_role_defaults_' . $role_key,
|
|
'default' => '',
|
|
'type' => 'select',
|
|
'options' => array_merge( array( '' => __( 'No default currency', 'woocommerce-jetpack' ) ), $module_currencies ),
|
|
),
|
|
) );
|
|
}
|
|
}
|
|
$settings = array_merge( $settings, array(
|
|
array(
|
|
'type' => 'sectionend',
|
|
'id' => 'wcj_multicurrency_role_defaults_options',
|
|
),
|
|
) );
|
|
return $settings;
|