Support » Plugin: WooCommerce Extra Checkout Fields for Brazil » Checkout todo desalinhado

  • Meu campo de checkout está todo desalinhado tanto no desktop, quanto no celular. É muito ruim porque prejudica as vendas. Sei que o plugin causa isso, porque só acontece quando ele está instalado. Testei desinstalar e voltou ao normal.

    The page I need help with: [log in to see the link]

Viewing 9 replies - 1 through 9 (of 9 total)
  • Estou com o mesmo problema acredito que é devido a última atualização foi a 4 meses atrás e depois que o plugin WooCommerce atualizou faz pouco tempo os campos ficaram desalinhados. É necessário o autor do plugin atualizar para corrigir esse bug.

    Olá pessoal, para ajustar o checkout do plugin basta atualizar o arquivo class-extra-checkout-fields-for-brazil-front-end.php”. O mesmo fica na pasta ../wp-content/plugins/woocommerce-extra-checkout-fields-for-brazil/includes”.

    Se quiserem podem copiar o mesmo código que usei para atualizar o checkout, sem necessidade do autor atualizar o plugin.

    Print do checkout organizado: http://prntscr.com/lhmt42

    <?php
    /**
     * Extra checkout fields frontend actions.
     *
     * @package Extra_Checkout_Fields_For_Brazil/Frontend
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	exit; // Exit if accessed directly.
    }
    
    /**
     * Extra_Checkout_Fields_For_Brazil_Front_End class.
     */
    class Extra_Checkout_Fields_For_Brazil_Front_End {
    
    	/**
    	 * Initialize the front-end actions.
    	 */
    	public function __construct() {
    		// Load public-facing scripts.
    		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
    		add_action( 'woocommerce_after_edit_account_address_form', array( $this, 'load_scripts' ) );
    		add_action( 'woocommerce_after_checkout_form', array( $this, 'load_scripts' ) );
    
    		// New checkout fields.
    		add_filter( 'woocommerce_billing_fields', array( $this, 'checkout_billing_fields' ), 10 );
    		add_filter( 'woocommerce_shipping_fields', array( $this, 'checkout_shipping_fields' ), 10 );
    		add_filter( 'woocommerce_get_country_locale', array( $this, 'address_fields_priority' ), 10 );
    
    		// Valid checkout fields.
    		add_action( 'woocommerce_checkout_process', array( $this, 'valid_checkout_fields' ), 10 );
    
    		// Custom address format.
    		add_filter( 'woocommerce_localisation_address_formats', array( $this, 'localisation_address_formats' ) );
    		add_filter( 'woocommerce_formatted_address_replacements', array( $this, 'formatted_address_replacements' ), 1, 2 );
    		add_filter( 'woocommerce_order_formatted_billing_address', array( $this, 'order_formatted_billing_address' ), 1, 2 );
    		add_filter( 'woocommerce_order_formatted_shipping_address', array( $this, 'order_formatted_shipping_address' ), 1, 2 );
    		add_filter( 'woocommerce_my_account_my_address_formatted_address', array( $this, 'my_account_my_address_formatted_address' ), 1, 3 );
    
    		// Orders.
    		add_filter( 'woocommerce_get_order_address', array( $this, 'order_address' ), 10, 3 );
    	}
    
    	/**
    	 * Register scripts.
    	 */
    	public function enqueue_scripts() {
            $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
            
            wp_register_style( 'woocommerce-extra-checkout-fields-for-brazil-front', plugins_url( 'assets/css/frontend/frontend.css', plugin_dir_path( __FILE__ ) ), array(), Extra_Checkout_Fields_For_Brazil::VERSION, 'all' );
    
    		wp_register_script( 'jquery-mask', plugins_url( 'assets/js/jquery.mask/jquery.mask' . $suffix . '.js', plugin_dir_path( __FILE__ ) ), array( 'jquery' ), '1.14.10', true );
    
    		wp_register_script( 'mailcheck', plugins_url( 'assets/js/mailcheck/mailcheck' . $suffix . '.js', plugin_dir_path( __FILE__ ) ), array( 'jquery' ), '1.1.1', true );
    
    		wp_register_script( 'woocommerce-extra-checkout-fields-for-brazil-front', plugins_url( 'assets/js/frontend/frontend' . $suffix . '.js', plugin_dir_path( __FILE__ ) ), array( 'jquery', 'jquery-mask', 'mailcheck' ), Extra_Checkout_Fields_For_Brazil::VERSION, true );
    
    		$settings = get_option( 'wcbcf_settings' );
    		$autofill = isset( $settings['addresscomplete'] ) ? 'yes' : 'no';
    		wp_localize_script(
    			'woocommerce-extra-checkout-fields-for-brazil-front',
    			'wcbcf_public_params',
    			array(
    				'state'              => esc_js( __( 'State', 'woocommerce-extra-checkout-fields-for-brazil' ) ),
    				'required'           => esc_js( __( 'required', 'woocommerce-extra-checkout-fields-for-brazil' ) ),
    				'mailcheck'          => isset( $settings['mailcheck'] ) ? 'yes' : 'no',
    				'maskedinput'        => isset( $settings['maskedinput'] ) ? 'yes' : 'no',
    				'addresscomplete'    => apply_filters( 'woocommerce_correios_enable_autofill_addresses', false ) ? false : $autofill,
    				'person_type'        => absint( $settings['person_type'] ),
    				'only_brazil'        => isset( $settings['only_brazil'] ) ? 'yes' : 'no',
    				'sort_state_country' => version_compare( WC_VERSION, '3.0', '>=' ),
    			)
    		);
    	}
    
    	/**
    	 * Load scripts.
    	 */
    	public function load_scripts() {
    		wp_enqueue_script( 'woocommerce-extra-checkout-fields-for-brazil-front' );
    		wp_enqueue_style( 'woocommerce-extra-checkout-fields-for-brazil-front' );
    	}
    
    	/**
    	 * New checkout billing fields.
    	 *
    	 * @param  array $fields Default fields.
    	 *
    	 * @return array
    	 */
    	public function checkout_billing_fields( $fields ) {
    		$new_fields = array();
    
    		// Get plugin settings.
    		$settings    = get_option( 'wcbcf_settings' );
    		$person_type = intval( $settings['person_type'] );
    
    		if ( isset( $fields['billing_first_name'] ) ) {
    			$new_fields['billing_first_name'] = $fields['billing_first_name'];
    			$new_fields['billing_first_name']['class'] = array( 'form-row-first' );
    		}
    
    		if ( isset( $fields['billing_last_name'] ) ) {
    			$new_fields['billing_last_name'] = $fields['billing_last_name'];
    			$new_fields['billing_last_name']['class'] = array( 'form-row-last' );
    		}
    
    		if ( 0 !== $person_type ) {
    			if ( 1 === $person_type ) {
    				$new_fields['billing_persontype'] = array(
    					'type'        => 'select',
    					'label'       => __( 'Person type', 'woocommerce-extra-checkout-fields-for-brazil' ),
    					'class'       => array( 'form-row-wide', 'person-type-field' ),
    					'input_class' => array( 'wc-ecfb-select' ),
    					'required'    => false,
    					'options'     => array(
    						'1' => __( 'Individuals', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'2' => __( 'Legal Person', 'woocommerce-extra-checkout-fields-for-brazil' ),
    					),
    					'priority'    => 22,
    				);
    			}
    
    			if ( 1 === $person_type || 2 === $person_type ) {
    				if ( isset( $settings['rg'] ) ) {
    					$new_fields['billing_cpf'] = array(
    						'label'    => __( 'CPF', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'class'    => array( 'form-row-first', 'person-type-field' ),
    						'required' => false,
    						'type'     => 'tel',
    						'priority' => 23,
    					);
    
    					$new_fields['billing_rg'] = array(
    						'label'    => __( 'RG', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'class'    => array( 'form-row-last', 'person-type-field' ),
    						'required' => false,
    						'priority' => 24,
    					);
    				} else {
    					$new_fields['billing_cpf'] = array(
    						'label'    => __( 'CPF', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'class'    => array( 'form-row-wide', 'person-type-field' ),
    						'required' => false,
    						'type'     => 'tel',
    						'priority' => 23,
    					);
    				}
    			}
    
    			if ( 1 === $person_type || 3 === $person_type ) {
    				if ( isset( $fields['billing_company'] ) ) {
    					$new_fields['billing_company'] = $fields['billing_company'];
    					$new_fields['billing_company']['class'] = array( 'form-row-wide' );
    					$new_fields['billing_company']['clear'] = true;
    					$new_fields['billing_company']['priority'] = 25;
    				}
    
    				if ( isset( $settings['ie'] ) ) {
    					$new_fields['billing_cnpj'] = array(
    						'label'    => __( 'CNPJ', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'class'    => array( 'form-row-first', 'person-type-field' ),
    						'required' => false,
    						'type'     => 'tel',
    						'priority' => 26,
    					);
    
    					$new_fields['billing_ie'] = array(
    						'label'    => __( 'State Registration', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'class'    => array( 'form-row-last', 'person-type-field' ),
    						'required' => false,
    						'priority' => 27,
    					);
    				} else {
    					$new_fields['billing_cnpj'] = array(
    						'label'    => __( 'CNPJ', 'woocommerce-extra-checkout-fields-for-brazil' ),
    						'class'    => array( 'form-row-wide', 'person-type-field' ),
    						'required' => false,
    						'type'     => 'tel',
    						'priority' => 26,
    					);
    				}
    			}
    		} else {
    			if ( isset( $fields['billing_company'] ) ) {
    				$new_fields['billing_company'] = $fields['billing_company'];
    				$new_fields['billing_company']['class'] = array( 'form-row-wide' );
    				$new_fields['billing_company']['clear'] = true;
    			}
    		} // End if().
    
    		if ( isset( $settings['birthdate_sex'] ) ) {
    			$new_fields['billing_birthdate'] = array(
    				'label'    => __( 'Birthdate', 'woocommerce-extra-checkout-fields-for-brazil' ),
    				'class'    => array( 'form-row-first' ),
    				'clear'    => false,
    				'required' => true,
    				'priority' => 31,
    			);
    
    			$new_fields['billing_sex'] = array(
    				'type'        => 'select',
    				'label'       => __( 'Sex', 'woocommerce-extra-checkout-fields-for-brazil' ),
    				'class'       => array( 'form-row-last' ),
    				'input_class' => array( 'wc-ecfb-select' ),
    				'clear'       => true,
    				'required'    => true,
    				'options'     => array(
    					'' => __( 'Select', 'woocommerce-extra-checkout-fields-for-brazil' ),
    					__( 'Female', 'woocommerce-extra-checkout-fields-for-brazil' ) => __( 'Female', 'woocommerce-extra-checkout-fields-for-brazil' ),
    					__( 'Male', 'woocommerce-extra-checkout-fields-for-brazil' )   => __( 'Male', 'woocommerce-extra-checkout-fields-for-brazil' ),
    				),
    				'priority'    => 32,
    			);
    		}
    
    		if ( isset( $fields['billing_country'] ) ) {
    			$new_fields['billing_country'] = $fields['billing_country'];
    			$new_fields['billing_country']['class'] = array( 'form-row-first', 'address-field', 'update_totals_on_change' );
    		}
    
    		if ( isset( $fields['billing_postcode'] ) ) {
    			$new_fields['billing_postcode'] = $fields['billing_postcode'];
    			$new_fields['billing_postcode']['class'] = array( 'form-row-last', 'address-field' );
    			$new_fields['billing_postcode']['priority'] = 45;
    		}
    
    		if ( isset( $fields['billing_address_1'] ) ) {
    			$new_fields['billing_address_1'] = $fields['billing_address_1'];
    			$new_fields['billing_address_1']['class'] = array( 'form-row-first', 'address-field' );
    			$new_fields['billing_postcode']['priority'] = 50;
    		}
    
    		$new_fields['billing_number'] = array(
    			'label'    => __( 'Number', 'woocommerce-extra-checkout-fields-for-brazil' ),
    			'class'    => array( 'form-row-last', 'address-field' ),
    			'clear'    => true,
    			'required' => true,
    			'priority' => 55,
    		);
    
    		if ( isset( $fields['billing_address_2'] ) ) {
    			$new_fields['billing_address_2'] = $fields['billing_address_2'];
    			$new_fields['billing_address_2']['label'] = __( 'Address line 2', 'woocommerce-extra-checkout-fields-for-brazil' );
    			$new_fields['billing_address_2']['class'] = array( 'form-row-wide', 'address-field' );
    		}
    
    		$new_fields['billing_neighborhood'] = array(
    			'label'    => __( 'Neighborhood', 'woocommerce-extra-checkout-fields-for-brazil' ),
    			'class'    => array( 'form-row-wide', 'address-field' ),
    			'clear'    => true,
    			'priority' => 65,
    		);
    
    		if ( isset( $fields['billing_city'] ) ) {
    			$new_fields['billing_city'] = $fields['billing_city'];
    			$new_fields['billing_city']['class'] = array( 'form-row-first', 'address-field' );
    		}
    
    		if ( isset( $fields['billing_state'] ) ) {
    			$new_fields['billing_state'] = $fields['billing_state'];
    			$new_fields['billing_state']['class'] = array( 'form-row-last', 'address-field' );
    			$new_fields['billing_state']['clear'] = true;
    		}
    
    		if ( isset( $settings['cell_phone'] ) ) {
    			if ( isset( $fields['billing_phone'] ) ) {
    				$new_fields['billing_phone'] = $fields['billing_phone'];
    				$new_fields['billing_phone']['class'] = array( 'form-row-first' );
    				$new_fields['billing_phone']['clear'] = false;
    			}
    
    			$new_fields['billing_cellphone'] = array(
    				'label'    => __( 'Cell Phone', 'woocommerce-extra-checkout-fields-for-brazil' ),
    				'class'    => array( 'form-row-last' ),
    				'clear'    => true,
    				'priority' => 105,
    			);
    
    			if ( isset( $fields['billing_email'] ) ) {
    				$new_fields['billing_email'] = $fields['billing_email'];
    				$new_fields['billing_email']['class'] = array( 'form-row-wide' );
    				$new_fields['billing_email']['clear'] = true;
    				$new_fields['billing_email']['type'] = 'email';
    			}
    		} else {
    			if ( isset( $fields['billing_phone'] ) ) {
    				$new_fields['billing_phone'] = $fields['billing_phone'];
    				$new_fields['billing_phone']['class'] = array( 'form-row-wide' );
    				$new_fields['billing_phone']['clear'] = true;
    			}
    
    			if ( isset( $fields['billing_email'] ) ) {
    				$new_fields['billing_email'] = $fields['billing_email'];
    				$new_fields['billing_email']['class'] = array( 'form-row-wide' );
    				$new_fields['billing_email']['clear'] = true;
    				$new_fields['billing_email']['type'] = 'email';
    			}
    		}
    
    		return apply_filters( 'wcbcf_billing_fields', $new_fields );
    	}
    
    	/**
    	 * New checkout shipping fields
    	 *
    	 * @param  array $fields Default fields.
    	 *
    	 * @return array
    	 */
    	public function checkout_shipping_fields( $fields ) {
    		$new_fields = array();
    
    		if ( isset( $fields['shipping_first_name'] ) ) {
    			$new_fields['shipping_first_name'] = $fields['shipping_first_name'];
    			$new_fields['shipping_first_name']['class'] = array( 'form-row-first' );
    		}
    
    		if ( isset( $fields['shipping_last_name'] ) ) {
    			$new_fields['shipping_last_name'] = $fields['shipping_last_name'];
    			$new_fields['shipping_last_name']['class'] = array( 'form-row-last' );
    		}
    
    		if ( isset( $fields['shipping_company'] ) ) {
    			$new_fields['shipping_company'] = $fields['shipping_company'];
    			$new_fields['shipping_company']['class'] = array( 'form-row-wide' );
    			$new_fields['shipping_company']['clear'] = true;
    		}
    
    		if ( isset( $fields['shipping_country'] ) ) {
    			$new_fields['shipping_country'] = $fields['shipping_country'];
    			$new_fields['shipping_country']['class'] = array( 'form-row-first', 'address-field', 'update_totals_on_change' );
    		}
    
    		if ( isset( $fields['shipping_postcode'] ) ) {
    			$new_fields['shipping_postcode'] = $fields['shipping_postcode'];
    			$new_fields['shipping_postcode']['class'] = array( 'form-row-last', 'address-field' );
    			$new_fields['shipping_postcode']['priority'] = 45;
    		}
    
    		if ( isset( $fields['shipping_address_1'] ) ) {
    			$new_fields['shipping_address_1'] = $fields['shipping_address_1'];
    			$new_fields['shipping_address_1']['class'] = array( 'form-row-first', 'address-field' );
    		}
    
    		$new_fields['shipping_number'] = array(
    			'label'    => __( 'Number', 'woocommerce-extra-checkout-fields-for-brazil' ),
    			'class'    => array( 'form-row-last', 'address-field' ),
    			'clear'    => true,
    			'required' => true,
    			'priority' => 55,
    		);
    
    		if ( isset( $fields['shipping_address_2'] ) ) {
    			$new_fields['shipping_address_2'] = $fields['shipping_address_2'];
    			$new_fields['shipping_address_2']['label'] = __( 'Address line 2', 'woocommerce-extra-checkout-fields-for-brazil' );
    			$new_fields['shipping_address_2']['class'] = array( 'form-row-wide', 'address-field' );
    			
    		}
    
    		$new_fields['shipping_neighborhood'] = array(
    			'label' => __( 'Neighborhood', 'woocommerce-extra-checkout-fields-for-brazil' ),
    			'class' => array( 'form-row-wide', 'address-field' ),
    			'priority' => 60,
    			'clear' => true,
    		);
    
    		if ( isset( $fields['shipping_city'] ) ) {
    			$new_fields['shipping_city'] = $fields['shipping_city'];
    			$new_fields['shipping_city']['class'] = array( 'form-row-first', 'address-field' );
    		}
    
    		if ( isset( $fields['shipping_state'] ) ) {
    			$new_fields['shipping_state'] = $fields['shipping_state'];
    			$new_fields['shipping_state']['class'] = array( 'form-row-last', 'address-field' );
    			$new_fields['shipping_state']['clear'] = true;
    		}
    
    		return apply_filters( 'wcbcf_shipping_fields', $new_fields );
    	}
    
    	/**
    	 * Update address fields priority.
    	 *
    	 * @param  array $locales Default WooCommerce locales.
    	 * @return array
    	 */
    	public function address_fields_priority( $locales ) {
    		$locales['BR'] = array(
    			'postcode' => array(
    				'priority' => 45,
    			),
    		);
    
    		return $locales;
    	}
    
    	/**
    	 * Valid checkout fields.
    	 *
    	 * @return string Displays the error message.
    	 */
    	public function valid_checkout_fields() {
    		if ( apply_filters( 'wcbcf_disable_checkout_validation', false ) ) {
    			return;
    		}
    
    		// Get plugin settings.
    		$settings           = get_option( 'wcbcf_settings' );
    		$person_type        = intval( $settings['person_type'] );
    		$only_brazil        = isset( $settings['only_brazil'] ) ? true : false;
    		$billing_persontype = isset( $_POST['billing_persontype'] ) ? intval( wp_unslash( $_POST['billing_persontype'] ) ) : 0;
    
    		if ( $only_brazil && 'BR' !== wp_unslash( $_POST['billing_country'] ) || 0 === $person_type ) {
    			return;
    		}
    
    		if ( 0 === $billing_persontype && 1 === $person_type ) {
    			wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'Person type', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is a required field', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    		} else {
    
    			// Check CPF.
    			if ( ( 1 === $person_type && 1 === $billing_persontype ) || 2 === $person_type ) {
    				if ( empty( $_POST['billing_cpf'] ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'CPF', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is a required field', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    
    				if ( isset( $settings['validate_cpf'] ) && ! empty( $_POST['billing_cpf'] ) && ! Extra_Checkout_Fields_For_Brazil_Formatting::is_cpf( $_POST['billing_cpf'] ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'CPF', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is not valid', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    
    				if ( isset( $settings['rg'] ) && empty( $_POST['billing_rg'] ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'RG', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is a required field', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    			}
    
    			// Check Company and CPNJ.
    			if ( ( 1 === $person_type && 2 === $billing_persontype ) || 3 === $person_type ) {
    				if ( empty( $_POST['billing_company'] ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'Company', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is a required field', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    
    				if ( empty( $_POST['billing_cnpj'] ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'CNPJ', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is a required field', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    
    				if ( isset( $settings['validate_cnpj'] ) && ! empty( $_POST['billing_cnpj'] ) && ! Extra_Checkout_Fields_For_Brazil_Formatting::is_cnpj( wp_unslash( $_POST['billing_cnpj'] ) ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'CNPJ', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is not valid', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    
    				if ( isset( $settings['ie'] ) && empty( $_POST['billing_ie'] ) ) {
    					wc_add_notice( sprintf( '<strong>%s</strong> %s.', __( 'State Registration', 'woocommerce-extra-checkout-fields-for-brazil' ), __( 'is a required field', 'woocommerce-extra-checkout-fields-for-brazil' ) ), 'error' );
    				}
    			}
    		} // End if().
    	}
    
    	/**
    	 * Custom country address formats.
    	 *
    	 * @param  array $formats Defaul formats.
    	 *
    	 * @return array          New BR format.
    	 */
    	public function localisation_address_formats( $formats ) {
    		$formats['BR'] = "{name}\n{address_1}, {number}\n{address_2}\n{neighborhood}\n{city}\n{state}\n{postcode}\n{country}";
    
    		return $formats;
    	}
    
    	/**
    	 * Custom country address format.
    	 *
    	 * @param  array $replacements Default replacements.
    	 * @param  array $args         Arguments to replace.
    	 *
    	 * @return array               New replacements.
    	 */
    	public function formatted_address_replacements( $replacements, $args ) {
    		$replacements['{number}']       = $args['number'];
    		$replacements['{neighborhood}'] = $args['neighborhood'];
    
    		return $replacements;
    	}
    
    	/**
    	 * Custom order formatted billing address.
    	 *
    	 * @param  array  $address Default address.
    	 * @param  object $order   Order data.
    	 *
    	 * @return array           New address format.
    	 */
    	public function order_formatted_billing_address( $address, $order ) {
    		// WooCommerce 3.0 or later.
    		if ( method_exists( $order, 'get_meta' ) ) {
    			$address['number']       = $order->get_meta( '_billing_number' );
    			$address['neighborhood'] = $order->get_meta( '_billing_neighborhood' );
    		} else {
    			$address['number']       = $order->billing_number;
    			$address['neighborhood'] = $order->billing_neighborhood;
    		}
    
    		return $address;
    	}
    
    	/**
    	 * Custom order formatted shipping address.
    	 *
    	 * @param  array  $address Default address.
    	 * @param  object $order   Order data.
    	 *
    	 * @return array           New address format.
    	 */
    	public function order_formatted_shipping_address( $address, $order ) {
    		// WooCommerce 3.0 or later.
    		if ( method_exists( $order, 'get_meta' ) ) {
    			$address['number']       = $order->get_meta( '_shipping_number' );
    			$address['neighborhood'] = $order->get_meta( '_shipping_neighborhood' );
    		} else {
    			$address['number']       = $order->shipping_number;
    			$address['neighborhood'] = $order->shipping_neighborhood;
    		}
    
    		return $address;
    	}
    
    	/**
    	 * Custom my address formatted address.
    	 *
    	 * @param  array  $address     Default address.
    	 * @param  int    $customer_id Customer ID.
    	 * @param  string $name        Field name (billing or shipping).
    	 *
    	 * @return array               New address format.
    	 */
    	public function my_account_my_address_formatted_address( $address, $customer_id, $name ) {
    		$address['number']       = get_user_meta( $customer_id, $name . '_number', true );
    		$address['neighborhood'] = get_user_meta( $customer_id, $name . '_neighborhood', true );
    
    		return $address;
    	}
    
    	/**
    	 * Order address.
    	 *
    	 * @param  array    $address Address data.
    	 * @param  string   $type    Address type.
    	 * @param  WC_Order $order   Order object.
    	 * @return array
    	 */
    	public function order_address( $address, $type, $order ) {
    		$number       = $type . '_number';
    		$neighborhood = $type . '_neighborhood';
    
    		// WooCommerce 3.0 or later.
    		if ( method_exists( $order, 'get_meta' ) ) {
    			$address['number']       = $order->get_meta( '_' . $number );
    			$address['neighborhood'] = $order->get_meta( '_' . $neighborhood );
    		} else {
    			$address['number']       = $order->$number;
    			$address['neighborhood'] = $order->$neighborhood;
    		}
    
    		return $address;
    	}
    }
    
    new Extra_Checkout_Fields_For_Brazil_Front_End();
    
    Paulo Miranda

    (@dprogrammer)

    Inspecionando o html, percebi que o label estava lá, mas não mostrava. Achei que tivesse sob o menu fixo do meu site. Tentei utilizar o código que está aqui, mas não resolveu. Em outro tópico aqui do fórum tem uma solução com css que até alinhou o campo, mas ficou sem label. Olhando com mais atenção percebi que tinha uma classe que no endereço 1 não tinha: screen-reader-text. Quando removi ela via inspesionar, o label voltou. Como não consegui desabilitar o css, pesquisei por uma solução no google

    achei isso aqui, que resolveu
    https://stackoverflow.com/questions/50525250/set-billing-address-2-label-in-woocommerce-checkout

    Para resolver o problema das máscaras existe uma solução aqui no fórum também.

    Então nesse caso, o problema não do plugin de checkout, é por causa de uma classe de acessibilidade que faz o conteúdo sumir da tela.

    screen-reader-text
    https://make.wordpress.org/accessibility/handbook/markup/the-css-class-screen-reader-text/

    raphaloi

    (@raphaloi)

    O post do Paulo solucionou aparentemente, entretanto ao clicar em “enviar para outro endereço” continua bugado.

    Alguma ideia de como resolver?

    • This reply was modified 10 months ago by  raphaloi.
    Paulo Miranda

    (@dprogrammer)

    Boa tarde Raphaloi,

    minha loja só tinha um produto virtual, por isso nem me atentei para esse problema. Cadastrei um produto físico e percebi que ao clicar na opção de informar um endereço de entrega, não mostrava os campos. Depois de bater cabeça tentando resolver, percebi que existe um erro na função. Quando desabilitei ela, voltou a mostrar.

    o nome da função tá diferente do declarado no add_filter

    custom_woocommerce_shipping_fields_custom
    custom_woocommerce_shipping_fields

    // Shipping Fields.
    add_filter( ‘woocommerce_shipping_fields’, ‘custom_woocommerce_shipping_fields’ );
    function custom_woocommerce_shipping_fields_custom( $fields ) {
    $fields[‘shipping_address_2’][‘label’] = ‘Address 2’;
    $fields[‘shipping_address_2’][‘label_class’] = ”;

    return $fields;
    }

    dogvibe

    (@laserstore)

    @natanmaia

    O seu código resolveu o meu problema. Isso realmente ocorreu após a atualização do Woocommerce 3.5.1 e sumiu a label de complemento de endereço aqui, causando falhas no layout. Acredito que o Cláudio deva fazer alguma atualização futura, pois eu testei até no tema padrão e dá o mesmo erro, então não é incompatibilidade de tema.

    Obrigado Natan!

    EDIT = Eu, burro, fiz o teste de forma errada. Apliquei o codigo numa cópia de testes, mas fui olhar meu site ativo que ainda não atualizei e está alinhado. Corrigindo a informação acima, não deu certo no meu. Apareceu Fatal error.

    • This reply was modified 10 months ago by  dogvibe.
    alexandrefcabo

    (@alexandrefcabo)

    @natanmaia

    Opa, muito obrigado pela ajuda, porém aqui o campo estado não aparece e por ser campo requirido não consigo finalizar a compra, saberia informar o que há de errado, por favor?

    Obrigado

    Se quiserem alterar o Label do campo complemento, que no meu caso estava o mesmo texto do placeholder, podem adicionar isso no functions.php do tema, seguindo a mesma ideia que @dprogrammer postou ali em cima.

    // Altera texto de complemento
    add_filter( 'woocommerce_default_address_fields' , 'custom_override_checkout_fields' );
    function custom_override_checkout_fields( $fields ) {
         $fields['address_2']['label'] = 'Complemento';
         return $fields;
    }

    @beerbits Obrigado! Queria muito acertar isso e vc salvou!

Viewing 9 replies - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.