1. Inicio
  2. Base de Conocimientos
  3. WooCommerce Wholesale Prices Premium
  4. API
  5. Cómo personalizar Wholesale Suite con hooks y filtros

Cómo personalizar Wholesale Suite con hooks y filtros

Los plugins de Wholesale Suite exponen hooks y filtros PHP. Puedes usarlos para cambiar precios, formularios, correos electrónicos, presupuestos y el comportamiento de pago sin editar los archivos del plugin. Este artículo te muestra cómo añadir tu propio código a un hook y enumera los hooks que están pensados para usarse en tu propio código, con sus argumentos y lo que cambian. Es una selección, no todos los hooks que disparan los plugins.

Cada tabla enumera el nombre del hook, su tipo, sus argumentos y lo que cambia. Un filtro debe devolver un valor. Una acción no devuelve un valor.

Añade tu código a un hook

  1. Elige dónde añadir tu código: el archivo functions.php de un tema hijo o un plugin de fragmentos de código.
  2. Busca el hook que necesitas en las tablas de plugins de abajo. Anota su tipo y sus argumentos.
  3. Añade tu fragmento con add_filter() para un filtro o add_action() para una acción. Los ejemplos de las secciones de plugins muestran el patrón.
  4. Guarda el archivo.
  5. Prueba el cambio en un sitio de staging antes de añadirlo a tu tienda en producción.

No edites los archivos del plugin. Una actualización del plugin los reemplaza y elimina tu cambio.

Los hooks de un plugin de Wholesale Suite solo se ejecutan cuando ese plugin está activo. Por ejemplo, los hooks de WooCommerce Wholesale Prices Premium necesitan WooCommerce Wholesale Prices Premium en tu sitio.

Los detalles de los hooks en este artículo coinciden con estas versiones de plugins: WooCommerce Wholesale Prices 2.3.1, WooCommerce Wholesale Prices Premium 2.1.5, WooCommerce Wholesale Order Form 3.1.3, WooCommerce Wholesale Lead Capture 2.0.7, WooCommerce Wholesale Quotes 1.0.3, WooCommerce Wholesale Payments 1.0.8, e Invoice Gateway for WooCommerce 1.1.7.

WooCommerce Wholesale Prices

WooCommerce Wholesale Prices añade hooks alrededor de los campos de precio mayorista en el panel de edición rápida de WooCommerce. También tiene un filtro para desactivar las capacidades de IA de Wholesale Suite. Para más información sobre las capacidades, consulta Cómo usar las capacidades de IA en Wholesale Suite.

HookTipoArgumentosLo que cambia
wwp_before_quick_edit_wholesale_price_fieldsAcción$all_wholesale_roles (array, roles mayoristas registrados)Se ejecuta en el panel de edición rápida, antes de los campos de Precio Mayorista. Úsalo para imprimir tu propio marcado. No se ejecuta cuando el filtro wwp_product_editor_show_wholesale_prices_fields devuelve false.
wwp_after_quick_edit_wholesale_price_fieldsAcción$all_wholesale_roles (array, roles mayoristas registrados)Se ejecuta en el panel de edición rápida, después de los campos de Precio Mayorista. Sigue la misma regla que el hook 'before'.
wwp_quick_edit_allowed_product_typesFiltro$allowed_product_types (array, por defecto simple y external)
$context (string, wholesale_price_fields)
Establece qué tipos de producto muestran y guardan los campos de precio mayorista en la edición rápida. También establece qué productos reciben los datos de precio mayorista en la lista de productos.
wwp_product_editor_show_wholesale_prices_fieldsFiltro$show (bool, por defecto true)Devuelve false para ocultar los campos de precio mayorista en el editor de productos y en la edición rápida.
wwp_disable_abilitiesFiltro$disabled (bool, por defecto false)Devuelve true para desactivar las capacidades de la IA de Wholesale Suite. Esto también desactiva las capacidades de los otros plugins de Wholesale Suite, porque se registran a través de WooCommerce Wholesale Prices.

Ejemplo: añadir una nota debajo de los campos de precio mayorista

Este ejemplo imprime una nota corta después de los campos de precio mayorista en la edición rápida.

add_action( 'wwp_after_quick_edit_wholesale_price_fields', function ( $all_wholesale_roles ) {
	echo '<p>' . esc_html__( 'Enter prices without tax.', 'your-text-domain' ) . '</p>';
} );

WooCommerce Wholesale Prices Premium

WooCommerce Wholesale Prices Premium tiene ganchos para descuentos por cantidad, descuentos en el carrito, comprobaciones de pedido mínimo, informes y la API REST. Todos los ganchos en esta sección necesitan WooCommerce Wholesale Prices Premium.

HookTipoArgumentosLo que cambia
wwpp_quantity_based_discount_base_priceFiltro$base_price (float|string, el precio desde el que funcionan los niveles de cantidad)
$mapping (array, reglas de descuento por cantidad)
$raw_wholesale_price (float|string)
$product (WC_Product)
$wholesale_role (array)
Cambia el precio base al que se aplican los niveles de descuento basados en la cantidad. La base es el precio de oferta mayorista activo si lo hay, de lo contrario, el precio mayorista. Cuando la configuración de la tienda que utiliza el precio regular para el cálculo del descuento está activada, la base es el precio regular.
wwpp_cart_subtotal_discount_eligible_itemFiltro$is_eligible (bool, por defecto true)
$cart_item (array, datos del artículo del carrito)
$wholesale_role (array)
Decide si un artículo del carrito cuenta para el subtotal utilizado para el descuento del subtotal del carrito. Devuelve false para excluir el artículo.
wwpp_min_order_requirement_checkFiltro$apply (bool, el resultado de la comprobación)
$cart_total (float, total del carrito mayorista)
$cart_items (float, cantidad total de artículos)
$cart (WC_Cart)
$wholesale_role (array)
Cambia el resultado de la comprobación del pedido mínimo para los descuentos del carrito. El descuento del subtotal del carrito solo se aplica cuando el resultado es exactamente true.
wwpp_add_wholesale_role_general_discount_mappingAcciónNingunaSe ejecuta después de que se guarda un descuento general para un rol mayorista.
wwpp_edit_wholesale_role_general_discount_mappingAcciónNingunaSe ejecuta después de que se actualiza el descuento general de un rol mayorista.
wwpp_process_category_products_in_apiFiltro$products_in_api (bool, por defecto false)
$category_id (int, el ID del término de la categoría)
Establece qué código actualiza las marcas de precio mayorista de los productos de una categoría. Cuando devuelve true, la API REST de descuento de categoría realiza la actualización y la pantalla de edición de categoría la omite.
wwpp_meta_dataFiltro$meta_data (array, datos mayoristas, valores vacíos eliminados)
$product (WC_Product)
$request (WP_REST_Request)
Cambia los datos mayoristas que la API REST de productos mayoristas devuelve para un producto.
wwpp_api_update_wholesale_roles_filterFiltro$wholesale_roles (array, todos los roles registrados)
$request (WP_REST_Request)
Cambia la lista de roles mayoristas antes de que la API REST la guarde. Se ejecuta cuando se crea o actualiza un rol a través de la API.
wwpp_reports_sales_transient_expiration_constantFiltro$expiration (int, segundos, por defecto HOUR_IN_SECONDS)Establece cuánto tiempo se almacena en caché la respuesta del informe de ventas.
wwpp_disable_abilitiesFiltro$disabled (bool, por defecto false)Devuelve verdadero para desactivar las funcionalidades que este plugin registra.

Ejemplo: excluir una categoría de producto del descuento del subtotal del carrito

Este ejemplo deja fuera los artículos de la categoría gift-cards del subtotal que utiliza el descuento del subtotal del carrito.

add_filter( 'wwpp_cart_subtotal_discount_eligible_item', function ( $is_eligible, $cart_item, $wholesale_role ) {
	if ( has_term( 'gift-cards', 'product_cat', $cart_item['product_id'] ) ) {
		return false;
	}
	return $is_eligible;
}, 10, 3 );

WooCommerce Wholesale Order Form

WooCommerce Wholesale Order Form tiene ganchos para las solicitudes REST del formulario de pedido, la búsqueda de productos, la carga de variaciones y los scripts del formulario.

HookTipoArgumentosLo que cambia
wwof_rest_read_permissionsFiltro$permission (bool, el resultado de las reglas del formulario de pedido)
$object_id (int|string, el ID del objeto, o 0 para una colección)
$post_type (string, tipo de publicación o taxonomía)
Otorga o deniega una lectura REST que las reglas del formulario de pedido denegaron. Se ejecuta solo para lecturas de contexto de vista en las rutas que utiliza el formulario de pedido. Un valor verdadero nunca llega a un objeto que no está publicado.
wwof_wc_rest_prepare_product_objectFiltro$response (WP_REST_Response)
$wc_data (WC_Product)
$request (WP_REST_Request)
$wc (WC, el objeto de integración de WooCommerce del formulario de pedido)
Cambia los datos del producto que la solicitud REST del formulario de pedido devuelve para un producto.
wwof_product_type_termsFiltro$product_type_terms (array, slugs de tipos de producto)Establece los tipos de producto que enumera el formulario de pedido. El valor predeterminado es simple, grouped y external cuando las variaciones se muestran individualmente. De lo contrario, también incluye variable. Agrega un tipo, como bundle, para enumerarlo.
wwof_search_post_clauses_requestFiltro$clauses (array, cláusulas SQL)
$wc (WC, el objeto de integración de WooCommerce del formulario de pedido)
Cambia las cláusulas SQL de la búsqueda de productos en el formulario de pedido.
wwof_force_load_form_postsFiltro$form_posts (array, vacío por defecto)Fuerza la carga del script del formulario de pedido en una página. Devuelve una matriz de objetos de formulario de pedido indexados por ID de formulario cuando no se detecta el shortcode.
wwof_login_urlFiltro$login_url (string)Cambia la URL de inicio de sesión que utiliza el script del formulario de pedido.
wwof_min_requirement_current_user_idFiltro$user_id (int, el valor predeterminado es el ID del usuario actual)Cambia el ID de usuario que el formulario de pedido utiliza para buscar los requisitos mínimos de pedido.
wwof_required_pluginsFiltro$required_plugins (array, rutas de archivo de plugin)Cambia la lista de plugins que deben estar activos. El formulario de pedido informa cada plugin listado que no esté activo.
wwof_after_register_order_form_post_typeAcción$post_type (string, el nombre del tipo de publicación del formulario de pedido)Se ejecuta después de que se registra el tipo de publicación del formulario de pedido.
wwof_variations_max_requestsFiltro$variations_max_requests (int, por defecto 12)Establece cuántas solicitudes de lista de variaciones envía el formulario de pedido al mismo tiempo. El valor más bajo es 1.
wwof_variations_response_cache_bypassFiltro$bypass (bool, por defecto false)
$request (WP_REST_Request)
$user_id (int, 0 para invitados)
Devuelve true para omitir la caché de respuesta de variaciones para una solicitud. Úsalo cuando otro plugin establezca precios por usuario o por sesión.
wwof_variations_response_cache_ttlFiltro$ttl (int, segundos, por defecto 5 minutos)
$request (WP_REST_Request)
$product_id (int, el ID del producto padre)
Establece cuánto tiempo permanece en caché una respuesta de variaciones.
wwof_disable_abilitiesFiltro$disable (bool, por defecto false)Devuelve verdadero para desactivar las funcionalidades que este plugin registra.

Ejemplo: acortar la caché de variaciones

Este ejemplo mantiene las respuestas de variaciones en caché durante un minuto.

add_filter( 'wwof_variations_response_cache_ttl', function ( $ttl, $request, $product_id ) {
	return MINUTE_IN_SECONDS;
}, 10, 3 );

Comando WP-CLI: migrar formularios de pedido

Ejecuta este comando para migrar formularios de pedido del formato de la versión 2 al formato de la versión 3. El comando guarda una copia de la configuración antigua de cada formulario en el meta de publicación _settings antes de migrar el formulario.

wp wwof migrate_forms_settings

Para migrar solo algunos formularios, añade uno o más IDs de formulario de pedido después del nombre del comando:

wp wwof migrate_forms_settings 123 456

Sin IDs, el comando migra todos los formularios de la versión 2. Si no encuentra formularios, muestra el error No se encontraron formularios.

El plugin también tiene dos comandos WP-CLI más. Usa wp wwof export_order_forms [<format>] para exportar formularios como json o yml. Usa wp wwof import_v2_forms_from_json_file <json_file_path> para importar formularios de la versión 2 desde un archivo JSON.

WooCommerce Wholesale Lead Capture

WooCommerce Wholesale Lead Capture tiene ganchos para el ciclo de vida del lead, el formulario de registro, las redirecciones de inicio de sesión, los correos electrónicos y la API REST de Leads. Cada acción de lead pasa un objeto WP_User.

HookTipoArgumentosLo que cambia
wwlc_action_before_approve_userAcción$user (WP_User)Se ejecuta antes de que WooCommerce Wholesale Lead Capture apruebe un lead.
wwlc_action_after_approve_userAcción$user (WP_User)Se ejecuta después de que se aprueba el lead y se envía el correo electrónico de aprobación.
wwlc_action_before_reject_userAcción$user (WP_User)Se ejecuta antes de que se rechace un lead. No se ejecuta para un lead que ya está rechazado.
wwlc_action_after_reject_userAcción$user (WP_User)Se ejecuta después de que se rechaza un lead. El lead obtiene el rol de Rechazado, o la cuenta se elimina cuando la configuración así lo indica.
wwlc_action_before_activate_userAcción$user (WP_User)Se ejecuta antes de que se active la cuenta de un lead.
wwlc_action_after_activate_userAcción$user (WP_User)Se ejecuta después de que la cuenta de un lead se marca como activa.
wwlc_action_before_deactivate_userAcción$user (WP_User, los roles antes del cambio)Se ejecuta antes de que se desactive la cuenta de un lead. También se ejecuta cuando la API REST de Leads desactiva un lead.
wwlc_action_after_deactivate_userAcción$user (WP_User)Se ejecuta después de que se desactiva la cuenta de un lead. El usuario obtiene el rol de cliente y se cierra la sesión en todas las sesiones.
wwlc_action_after_create_wholesale_leadAcción$new_lead (WP_User)Se ejecuta después de que un lead se registra y después de que se procesa la aprobación automática. También se ejecuta cuando un cliente existente se actualiza a una cuenta mayorista.
wwlc_stop_registeringFiltro$stop (bool, por defecto false)
$user_data (array, los datos del formulario enviados)
Devuelve true para detener el registro. El formulario muestra el error “No tienes permiso para registrarte”.
wwlc_login_redirect_urlFiltro$redirect_url (string)
$user (WP_User)
Cambia la URL a la que va un usuario después de iniciar sesión en el formulario de inicio de sesión mayorista. También se aplica a un inicio de sesión de WooCommerce (por ejemplo, Mi Cuenta) cuando el usuario tiene un rol mayorista.
wwlc_registration_form_fieldsFiltro$form_fields (array, campos por defecto, personalizados y reCAPTCHA, ordenados por orden)Cambia los campos que muestra el formulario de registro.
wwlc_filter_{field}_field_form_labelFiltro$label (string, la etiqueta predeterminada traducida)Cambia la etiqueta de un campo de registro predeterminado. Reemplaza {field} con uno de: first_name, last_name, phone, email, company, country, address1, address2, city, state, postcode, password. Por ejemplo, wwlc_filter_first_name_field_form_label.
wwlc_email_format_stringFiltro$text (string, contenido del correo electrónico después de reemplazar los marcadores de posición)
$wc_email (WC_Email)
Cambia el texto de un correo electrónico de WooCommerce Wholesale Lead Capture después de reemplazar los marcadores de posición.
wwlc_default_email_lead_roleFiltro$role (cadena, por defecto wholesale_customer)Establece el rol utilizado para seleccionar el cliente potencial de ejemplo para los objetos de correo electrónico. El rol que se establece en la configuración del rol del cliente potencial lo anula cuando esa configuración no está vacía.
wwlc_rest_api_routesFiltro$routes (matriz, definiciones de ruta)Añade o cambia las rutas de la API REST de clientes potenciales en el espacio de nombres wwlc/v1. Cada ruta se identifica como leads/<route>.
wwlc_disable_abilitiesFiltro$disabled (bool, por defecto false)Devuelve verdadero para desactivar las funcionalidades que registra este plugin. La constante WWLC_DISABLE_ABILITIES hace lo mismo.

Ejemplo: ejecutar código al aprobar un cliente potencial

Este ejemplo guarda un indicador en el usuario después de la aprobación. Un script de sincronización puede leer el indicador más tarde.

add_action( 'wwlc_action_after_approve_user', function ( $user ) {
	update_user_meta( $user->ID, 'needs_crm_sync', 'yes' );
} );

WooCommerce Wholesale Quotes

WooCommerce Wholesale Quotes tiene filtros para los datos de la cotización, la etiqueta del botón de cotización, las opciones del frontend y los permisos de la API REST.

HookTipoArgumentosLo que cambia
wholesale_quotes_api_admin_permissions_checkFiltro$response (verdadero|WP_Error, verdadero si el usuario tiene manage_woocommerce)
$request (WP_REST_Request)
Cambia la comprobación de permisos de las rutas REST de administración. Devuelve verdadero para permitir la solicitud o un WP_Error para rechazarla.
wholesale_quotes_quote_items_dataFiltro$data (matriz, objetos de artículo de cotización)Cambia la lista de artículos de cotización antes de que el plugin la utilice. Se aplica a los artículos de una cotización y a la lista de artículos de cotización.
wholesale_quotes_quote_item_product_dataFiltro$product (matriz, datos del producto del artículo de cotización)
$item_product_id (int)
Cambia los datos del producto de un artículo de cotización. Los datos incluyen la imagen, el enlace, el estado del stock y el tipo de producto.
wws_wq_quote_button_shop_labelFiltro$label (cadena, por defecto es la etiqueta en la configuración de cotización)Cambia la etiqueta del botón de cotización en las páginas de la tienda.
wws_wq_guest_quote_products_dataFiltro$products (matriz, objetos de artículo de cotización)
$product_data (matriz, los datos del producto de la solicitud)
Cambia los productos que devuelve la ruta REST de cotización de invitados.
wholesale_quotes_optionsFiltro$options (matriz, opciones del frontend)Cambia la matriz de opciones que utiliza el frontend de cotización. Tiene claves como title, description y quoteUrl.
wwq_disable_abilitiesFiltro$disabled (bool, por defecto false)Devuelve verdadero para desactivar las funcionalidades que este plugin registra.

Ejemplo: cambiar la etiqueta del botón de presupuesto

Este ejemplo cambia la etiqueta del botón de presupuesto en las páginas de la tienda.

add_filter( 'wws_wq_quote_button_shop_label', function ( $label ) {
	return __( 'Request pricing', 'your-text-domain' );
} );

WooCommerce Wholesale Payments

WooCommerce Wholesale Payments tiene filtros para el calendario de facturas, el plan de pago y las consultas de pedidos, la versión de la API de Stripe y las plantillas de correo electrónico de recordatorio.

HookTipoArgumentosLo que cambia
wpay_filter_cron_scheduleFiltro$cron_schedule (cadena, el valor predeterminado es el calendario guardado, daily si no hay ninguno)Establece el intervalo de la acción de factura recurrente. El plugin lo lee solo cuando crea esa acción, por lo que no cambia un calendario existente. Usa daily, hourly o 15min. Cualquier otro valor se ejecuta diariamente.
wpay_get_payment_plansFiltro$args (matriz, argumentos de WP_Query)Cambia los argumentos de la consulta que cargan los planes de pago. El plugin establece el tipo de publicación después de que se ejecuta el filtro.
wpay_get_payment_ordersFiltro$args (matriz, argumentos de wc_get_orders())Cambia los argumentos de la consulta que cargan los pedidos de pago. El plugin limita el tamaño de la página después de que se ejecuta el filtro.
wpay_stripe_api_versionFiltro$version (cadena, la versión de la API de Stripe que utiliza el plugin)Cambia la versión de la API de Stripe en la cabecera de la solicitud. También establece la versión cuando el plugin crea un webhook de Stripe.
wpay_payment_due_today_email_template_htmlFiltro$template (cadena, predeterminado payment-due-today.php)Cambia el archivo de plantilla HTML del correo electrónico de pago a vencer hoy.
wpay_payment_due_today_email_template_plainFiltro$template (cadena, predeterminado payment-due-today.php)Cambia el archivo de plantilla de texto sin formato del correo electrónico de pago a vencer hoy.
wpay_payment_overdue_email_template_htmlFiltro$template (cadena, predeterminado payment-overdue.php)Cambia el archivo de plantilla HTML del correo electrónico de pago vencido.
wpay_payment_overdue_email_template_plainFiltro$template (cadena, predeterminado payment-overdue.php)Cambia el archivo de plantilla de texto sin formato del correo electrónico de pago vencido.
wpay_disable_abilitiesFiltro$disabled (bool, por defecto false)Devuelve verdadero para desactivar las funcionalidades que este plugin registra.

Pasarela de Facturación para WooCommerce

Pasarela de Facturación para WooCommerce tiene ganchos para la fecha de vencimiento de la factura, el estado del pedido, los pedidos gratuitos y las facturas vencidas.

HookTipoArgumentosLo que cambia
igfw_invoice_due_dateFiltro$due (int, marca de tiempo Unix)
$order (WC_Order)
Cambia la fecha de vencimiento de pago de un pedido de factura. El valor predeterminado es la fecha del pedido más los términos de pago en días. Se ignora un valor de 0 o menos.
igfw_invoice_gateway_default_order_statusFiltro$status (string, predeterminado es el estado del pedido guardado, en espera si no hay ninguno)Cambia el estado que la pasarela otorga a un pedido al finalizar la compra.
igfw_show_invoice_gateway_on_free_ordersFiltro$show (bool, por defecto true)Devuelve falso para ocultar la pasarela de facturas cuando el total del carrito es cero.
igfw_invoice_gateway_constructAcciónNingunaSe ejecuta al final del constructor de la pasarela de facturas.
igfw_invoice_payment_overdueAcción$order (WC_Order, el pedido vencido)Se ejecuta cuando el plugin encuentra un pedido de factura vencido, después de enviar el correo electrónico de vencimiento al administrador de la tienda. El plugin no cobra el pedido. Usa este hook para iniciar tu propio proceso.

Ejemplo: añade siete días a la fecha de vencimiento de la factura

Este ejemplo retrasa la fecha de vencimiento de cada factura siete días.

add_filter( 'igfw_invoice_due_date', function ( $due, $order ) {
	return $due + ( 7 * DAY_IN_SECONDS );
}, 10, 2 );

¿Necesitas ayuda?

Si tienes alguna pregunta o encuentras algún problema, estamos aquí para ayudarte.

¿Te ha resultado útil este artículo?

Artículos relacionados

Completa tu Compra