/**
  * Output the shortcode.
  *
  * @access public
  * @param array $atts
  * @return void
  */
 public static function output($atts)
 {
     global $wp;
     // Check cart class is loaded or abort
     if (is_null(WC()->cart)) {
         return;
     }
     if (!is_user_logged_in()) {
         $message = apply_filters('woocommerce_my_account_message', '');
         if (!empty($message)) {
             wc_add_notice($message);
         }
         if (isset($wp->query_vars['lost-password'])) {
             self::lost_password();
         } else {
             wc_get_template('myaccount/form-login.php');
         }
     } else {
         if (!empty($wp->query_vars['view-order'])) {
             self::view_order(absint($wp->query_vars['view-order']));
         } elseif (isset($wp->query_vars['edit-account'])) {
             self::edit_account();
         } elseif (isset($wp->query_vars['edit-address'])) {
             self::edit_address(wc_edit_address_i18n(sanitize_title($wp->query_vars['edit-address']), true));
         } elseif (isset($wp->query_vars['add-payment-method'])) {
             self::add_payment_method();
         } else {
             self::my_account($atts);
         }
     }
 }
Ejemplo n.º 2
0
/**
 * Get endpoint URL.
 *
 * Gets the URL for an endpoint, which varies depending on permalink settings.
 *
 * @param  string $endpoint
 * @param  string $value
 * @param  string $permalink
 *
 * @return string
 */
function wc_get_endpoint_url($endpoint, $value = '', $permalink = '')
{
    if (!$permalink) {
        $permalink = get_permalink();
    }
    // Map endpoint to options
    $endpoint = !empty(WC()->query->query_vars[$endpoint]) ? WC()->query->query_vars[$endpoint] : $endpoint;
    $value = 'edit-address' == $endpoint ? wc_edit_address_i18n($value) : $value;
    if (get_option('permalink_structure')) {
        if (strstr($permalink, '?')) {
            $query_string = '?' . parse_url($permalink, PHP_URL_QUERY);
            $permalink = current(explode('?', $permalink));
        } else {
            $query_string = '';
        }
        $url = trailingslashit($permalink) . $endpoint . '/' . $value . $query_string;
    } else {
        $url = add_query_arg($endpoint, $value, $permalink);
    }
    return apply_filters('woocommerce_get_endpoint_url', $url, $endpoint, $value, $permalink);
}
 /**
  * Save and and update a billing or shipping address if the
  * form was submitted through the user account page.
  */
 public static function save_address()
 {
     global $wp;
     if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
         return;
     }
     if (empty($_POST['action']) || 'edit_address' !== $_POST['action'] || empty($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'woocommerce-edit_address')) {
         return;
     }
     $user_id = get_current_user_id();
     if ($user_id <= 0) {
         return;
     }
     $load_address = isset($wp->query_vars['edit-address']) ? wc_edit_address_i18n(sanitize_title($wp->query_vars['edit-address']), true) : 'billing';
     $address = WC()->countries->get_address_fields(esc_attr($_POST[$load_address . '_country']), $load_address . '_');
     foreach ($address as $key => $field) {
         if (!isset($field['type'])) {
             $field['type'] = 'text';
         }
         // Get Value.
         switch ($field['type']) {
             case 'checkbox':
                 $_POST[$key] = (int) isset($_POST[$key]);
                 break;
             default:
                 $_POST[$key] = isset($_POST[$key]) ? wc_clean($_POST[$key]) : '';
                 break;
         }
         // Hook to allow modification of value.
         $_POST[$key] = apply_filters('woocommerce_process_myaccount_field_' . $key, $_POST[$key]);
         // Validation: Required fields.
         if (!empty($field['required']) && empty($_POST[$key])) {
             wc_add_notice(sprintf(__('%s is a required field.', 'woocommerce'), $field['label']), 'error');
         }
         if (!empty($_POST[$key])) {
             // Validation rules.
             if (!empty($field['validate']) && is_array($field['validate'])) {
                 foreach ($field['validate'] as $rule) {
                     switch ($rule) {
                         case 'postcode':
                             $_POST[$key] = strtoupper(str_replace(' ', '', $_POST[$key]));
                             if (!WC_Validation::is_postcode($_POST[$key], $_POST[$load_address . '_country'])) {
                                 wc_add_notice(__('Please enter a valid postcode / ZIP.', 'woocommerce'), 'error');
                             } else {
                                 $_POST[$key] = wc_format_postcode($_POST[$key], $_POST[$load_address . '_country']);
                             }
                             break;
                         case 'phone':
                             $_POST[$key] = wc_format_phone_number($_POST[$key]);
                             if (!WC_Validation::is_phone($_POST[$key])) {
                                 wc_add_notice(sprintf(__('%s is not a valid phone number.', 'woocommerce'), '<strong>' . $field['label'] . '</strong>'), 'error');
                             }
                             break;
                         case 'email':
                             $_POST[$key] = strtolower($_POST[$key]);
                             if (!is_email($_POST[$key])) {
                                 wc_add_notice(sprintf(__('%s is not a valid email address.', 'woocommerce'), '<strong>' . $field['label'] . '</strong>'), 'error');
                             }
                             break;
                     }
                 }
             }
         }
     }
     do_action('woocommerce_after_save_address_validation', $user_id, $load_address, $address);
     if (0 === wc_notice_count('error')) {
         foreach ($address as $key => $field) {
             update_user_meta($user_id, $key, $_POST[$key]);
         }
         wc_add_notice(__('Address changed successfully.', 'woocommerce'));
         do_action('woocommerce_customer_save_address', $user_id, $load_address);
         wp_safe_redirect(wc_get_endpoint_url('edit-address', '', wc_get_page_permalink('myaccount')));
         exit;
     }
 }
 /**
  * My Account > Edit address template.
  *
  * @param string $type Address type.
  */
 function woocommerce_account_edit_address($type)
 {
     $type = wc_edit_address_i18n(sanitize_title($type), true);
     WC_Shortcode_My_Account::edit_address($type);
 }
Ejemplo n.º 5
0
 function saphali_custom_edit_address_fields($fields)
 {
     global $wp;
     $fieldss = get_option('woocommerce_saphali_filds_filters');
     if (is_array($fieldss)) {
         $_fields = $fieldss["billing"];
     }
     if (isset($_fields) && is_array($_fields)) {
         foreach ($_fields as $key => $value) {
             if (str_replace('billing_', '', $key) != 'email') {
                 $__fields[wc_edit_address_i18n(sanitize_key($wp->query_vars['edit-address']), true) . str_replace('billing', '', $key)] = $value;
             }
             $_a_ = array_diff_assoc($__fields, $fields);
             if (is_array($_a_) && is_array($fields)) {
                 $fields = (array) $fields + (array) $_a_;
             }
         }
     }
     return $fields;
 }