Notice: Undefined index: RM in mkrapel-cl-states-places.php on line 137
-
Estimados, muchas gracias por su plugin, ha sido de gran utilidad. Sobre todo por la función “Envíos CL”.
Me había funcionado fantástico, pero ahora me envío ese error y revisé el archivo y aparentemente no tiene algo defectuoso.
Notice: Undefined index: RM in /home/XXX/public_html/wp-content/plugins/wc-ciudades-y-regiones-de-chile/classes/mkrapel-cl-states-places.php on line 137
<?php /** * Obtención de las Regiones y Ciudades * @link https://marketingrapel.cl * @since 1.0.0 * @package wc-ciudades-y-regiones-de-chile * @subpackage wc-ciudades-y-regiones-de-chile/classes */ class MkRapel_Region_Ciudad_CL { const VERSION = '1.1.29'; private static $places; /* Construct class */ public static $file; public static $plugin_path; public static $plugin_url; public function __construct($file) { self::$file = $file; add_action( 'plugins_loaded', array( $this, 'init') ); } /* WC init */ public function init() { $this->init_states(); $this-> init_places(); } /* WC States init */ public function init_states() { add_filter('woocommerce_states', array($this, 'wc_states')); } /* WC States init */ public function init_places() { add_filter( 'woocommerce_billing_fields', array( $this, 'wc_billing_fields' ), 10, 2 ); add_filter( 'woocommerce_shipping_fields', array( $this, 'wc_shipping_fields' ), 10, 2 ); add_filter( 'woocommerce_form_field_city', array( $this, 'wc_form_field_city' ), 10, 4 ); add_action( 'wp_enqueue_scripts', array( $this, 'load_scripts' ) ); } /* * Implement WC States * @param mixed $states * @return mixed */ public function wc_states($states) { //get countries allowed by store owner $allowed = self::get_store_allowed_countries(); if (!empty( $allowed ) ) { foreach ($allowed as $code => $country) { if (! isset( $states[$code] ) && file_exists(self::get_plugin_path() . '/states/' . $code . '.php')) { include(self::get_plugin_path() . '/states/' . $code . '.php'); } } } return $states; } /** * Modify billing field * @param mixed $fields * @param mixed $country * @return mixed */ public function wc_billing_fields( $fields, $country ) { $fields['billing_city']['type'] = 'city'; return $fields; } /** * Modify shipping field * @param mixed $fields * @param mixed $country * @return mixed */ public function wc_shipping_fields( $fields, $country ) { $fields['shipping_city']['type'] = 'city'; return $fields; } /** * Implement places/city field * @param mixed $field * @param string $key * @param mixed $args * @param string $value * @return mixed */ public function wc_form_field_city($field, $key, $args, $value ) { // Do we need a clear div? if ( ( ! empty( $args['clear'] ) ) ) { $after = '<div class="clear"></div>'; } else { $after = ''; } // Required markup if ( $args['required'] ) { $args['class'][] = 'validate-required'; $required = ' <abbr class="required" title="' . esc_attr__( 'requerido', 'woocommerce' ) . '">*</abbr>'; } else { $required = ''; } // Custom attribute handling $custom_attributes = array(); if ( ! empty( $args['custom_attributes'] ) && is_array( $args['custom_attributes'] ) ) { foreach ( $args['custom_attributes'] as $attribute => $attribute_value ) { $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"'; } } // Validate classes if ( ! empty( $args['validate'] ) ) { foreach( $args['validate'] as $validate ) { $args['class'][] = 'validate-' . $validate; } } // field p and label $field = '<p class="form-row ' . esc_attr( implode( ' ', $args['class'] ) ) .'" data-priority="'.esc_attr__($args['priority']).'" id="' . esc_attr( $args['id'] ) . '_field">'; if ( $args['label'] ) { $field .= '<label for="' . esc_attr( $args['id'] ) . '" class="' . esc_attr( implode( ' ', $args['label_class'] ) ) .'">' . $args['label']. $required . '</label>'; } // Get Country $country_key = $key == 'billing_city' ? 'billing_country' : 'shipping_country'; $current_cc = WC()->checkout->get_value( $country_key ); $state_key = $key == 'billing_city' ? 'billing_state' : 'shipping_state'; $current_sc = WC()->checkout->get_value( $state_key ); // Get country places $places = self::get_places( $current_cc ); if ( is_array( $places ) ) { $field .= '<select name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" class="city_select ' . esc_attr( implode( ' ', $args['input_class'] ) ) .'" ' . implode( ' ', $custom_attributes ) . ' placeholder="' . esc_attr( $args['placeholder'] ) . '">'; $field .= '<option value="">'. __( 'Seleciona una opción…', 'woocommerce' ) .'</option>'; if ( $current_sc ) { $dropdown_places = $places[ $current_sc ]; } else if ( is_array($places) && isset($places[0])) { $dropdown_places = array_reduce( $places, 'array_merge', array() ); sort( $dropdown_places ); } else { $dropdown_places = $places; } if (is_array( $dropdown_places )) { foreach ( $dropdown_places as $city_name ) { if(!is_array($city_name)) { $field .= '<option value="' . esc_attr( $city_name ) . '" '.selected( $value, $city_name, false ) . '>' . $city_name .'</option>'; } } } $field .= '</select>'; } else { $field .= '<input type="text" class="input-text ' . esc_attr( implode( ' ', $args['input_class'] ) ) .'" value="' . esc_attr( $value ) . '" placeholder="' . esc_attr( $args['placeholder'] ) . '" name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" ' . implode( ' ', $custom_attributes ) . ' />'; } // field description and close wrapper if ( $args['description'] ) { $field .= '<span class="description">' . esc_attr( $args['description'] ) . '</span>'; } $field .= '</p>' . $after; return $field; } /** * Get places * @param string $p_code(default:) * @return mixed */ public static function get_places( $p_code = null ) { if ( empty( self::$places ) ) { self::load_country_places(); } if ( ! is_null( $p_code ) ) { return isset( self::$places[ $p_code ] ) ? self::$places[ $p_code ] : false; } else { return self::$places; } } /* Get country places */ public static function load_country_places() { global $places; $allowed = self::get_store_allowed_countries(); if ( $allowed ) { foreach ( $allowed as $code => $country ) { if ( ! isset( $places[ $code ] ) && file_exists( self::get_plugin_path() . '/places/' . $code . '.php' ) ) { include( self::get_plugin_path() . '/places/' . $code . '.php' ); } } } self::$places = $places; } /* Load scripts */ public function load_scripts() { if ( is_cart() || is_checkout() || is_wc_endpoint_url( 'edit-address' ) ) { $city_select_path = self::get_plugin_url() . 'assets/js/mkrapel-cl-place-select.js'; wp_enqueue_script( 'wc-city-select', $city_select_path, array( 'jquery', 'woocommerce' ), self::VERSION, true ); $places = json_encode( self::get_places() ); wp_localize_script( 'wc-city-select', 'wc_city_select_params', array( 'cities' => $places, 'i18n_select_city_text' => esc_attr__( 'Selecciona una opción…', 'woocommerce' ) ) ); } } /** * Get plugin root path * @return mixed */ private static function get_plugin_path() { if (isset(self::$plugin_path)) { return self::$plugin_path; } $path = self::$plugin_path = plugin_dir_path( self::$file ); return untrailingslashit($path); } /** * Get Store allowed countries * @return mixed */ private static function get_store_allowed_countries() { return array_merge( WC()->countries->get_allowed_countries(), WC()->countries->get_shipping_countries() ); } /** * Get plugin url * @return mixed */ public function get_plugin_url() { if (isset(self::$plugin_url)) { return self::$plugin_url; } return self::$plugin_url = plugin_dir_url( self::$file ); } }
quedo atento.
Muchas gracias!
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘Notice: Undefined index: RM in mkrapel-cl-states-places.php on line 137’ is closed to new replies.