tienda requerido plugin personalizar para pagina online modificar finalizar facturación ejemplo editar compra campos campo php wordpress woocommerce shipping extending

php - requerido - tienda online wordpress ejemplo



Cómo agregar un método de envío personalizado que funcione en WooCommerce 3 (2)

Cambiar esta linea

public function calculate_shipping( $package ) {

a esta linea

función pública calculate_shipping ($ package = array ()) {

He creado con éxito un nuevo método de envío y le he dado soporte para zonas de envío. Sin embargo, cuando selecciono el método del menú desplegable para agregarlo a la zona, no aparece en la ''lista de métodos seleccionados''.

Grabé un screencast gif para demostrar:

No puedo entender por qué no funciona. Funciona bien si selecciono uno de los métodos estándar ( Screencast GIF )

¿Alguien sabe qué está pasando aquí y cómo hacer que funcione?

Aquí está el código que tengo de este hilo oficial: Método de envío API :

if ( in_array( ''woocommerce/woocommerce.php'', apply_filters( ''active_plugins'', get_option( ''active_plugins'' ) ) ) ) { function request_a_shipping_quote_init() { if ( ! class_exists( ''WC_Request_Shipping_Quote_Method'' ) ) { class WC_Request_Shipping_Quote_Method extends WC_Shipping_Method { /** * Constructor for your shipping class * * @access public * @return void */ public function __construct() { $this->id = ''request_a_shipping_quote''; // Id for your shipping method. Should be uunique. $this->method_title = __( ''Request a Shipping Quote'' ); // Title shown in admin $this->method_description = __( ''Shipping method to be used where the exact shipping amount needs to be quoted'' ); // Description shown in admin $this->title = "Request a Shipping Quote"; // This can be added as an setting but for this example its forced. $this->supports = array( ''shipping-zones'' ); $this->init(); } /** * Init your settings * * @access public * @return void */ function init() { // Load the settings API $this->init_form_fields(); // This is part of the settings API. Override the method to add your own settings $this->init_settings(); // This is part of the settings API. Loads settings you previously init. // Save settings in admin if you have any defined add_action( ''woocommerce_update_options_shipping_'' . $this->id, array( $this, ''process_admin_options'' ) ); } function init_form_fields() { $this->form_fields = array( ''enabled'' => array( ''title'' => __( ''Enable'', ''dc_raq'' ), ''type'' => ''checkbox'', ''description'' => __( ''Enable this shipping method.'', ''dc_raq'' ), ''default'' => ''yes'' ), ''title'' => array( ''title'' => __( ''Title'', ''dc_raq'' ), ''type'' => ''text'', ''description'' => __( ''Title to be displayed on site'', ''dc_raq'' ), ''default'' => __( ''Request a Quote'', ''dc_raq'' ) ), ); } /** * calculate_shipping function. * * @access public * * @param mixed $package * * @return void */ public function calculate_shipping( $packages = array() ) { $rate = array( ''id'' => $this->id, ''label'' => $this->title, ''cost'' => ''0.00'', ''calc_tax'' => ''per_item'' ); // Register the rate $this->add_rate( $rate ); } } } } add_action( ''woocommerce_shipping_init'', ''request_a_shipping_quote_init'' ); function request_shipping_quote_shipping_method( $methods ) { $methods[''request_shipping_quote_shipping_method''] = ''WC_Request_Shipping_Quote_Method''; return $methods; } add_filter( ''woocommerce_shipping_methods'', ''request_shipping_quote_shipping_method'' ); }


La clave de método en "woocommerce_shipping_methods" debe coincidir con el ID del método de envío

En tu caso: debes cambiar

function request_shipping_quote_shipping_method( $methods ) { $methods[''request_shipping_quote_shipping_method''] = ''WC_Request_Shipping_Quote_Method''; return $methods; } add_filter( ''woocommerce_shipping_methods'', ''request_shipping_quote_shipping_method'' );

A:

function request_shipping_quote_shipping_method( $methods ) { $methods[''request_a_shipping_quote''] = ''WC_Request_Shipping_Quote_Method''; return $methods; } add_filter( ''woocommerce_shipping_methods'', ''request_shipping_quote_shipping_method'' );