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
- Elige dónde añadir tu código: el archivo
functions.phpde un tema hijo o un plugin de fragmentos de código. - Busca el hook que necesitas en las tablas de plugins de abajo. Anota su tipo y sus argumentos.
- Añade tu fragmento con
add_filter()para un filtro oadd_action()para una acción. Los ejemplos de las secciones de plugins muestran el patrón. - Guarda el archivo.
- 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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
wwp_before_quick_edit_wholesale_price_fields | Acció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_fields | Acció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_types | Filtro | $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_fields | Filtro | $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_abilities | Filtro | $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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
wwpp_quantity_based_discount_base_price | Filtro | $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_item | Filtro | $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_check | Filtro | $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_mapping | Acción | Ninguna | Se ejecuta después de que se guarda un descuento general para un rol mayorista. |
wwpp_edit_wholesale_role_general_discount_mapping | Acción | Ninguna | Se ejecuta después de que se actualiza el descuento general de un rol mayorista. |
wwpp_process_category_products_in_api | Filtro | $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_data | Filtro | $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_filter | Filtro | $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_constant | Filtro | $expiration (int, segundos, por defecto HOUR_IN_SECONDS) | Establece cuánto tiempo se almacena en caché la respuesta del informe de ventas. |
wwpp_disable_abilities | Filtro | $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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
wwof_rest_read_permissions | Filtro | $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_object | Filtro | $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_terms | Filtro | $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_request | Filtro | $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_posts | Filtro | $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_url | Filtro | $login_url (string) | Cambia la URL de inicio de sesión que utiliza el script del formulario de pedido. |
wwof_min_requirement_current_user_id | Filtro | $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_plugins | Filtro | $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_type | Acció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_requests | Filtro | $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_bypass | Filtro | $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_ttl | Filtro | $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_abilities | Filtro | $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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
wwlc_action_before_approve_user | Acción | $user (WP_User) | Se ejecuta antes de que WooCommerce Wholesale Lead Capture apruebe un lead. |
wwlc_action_after_approve_user | Acció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_user | Acció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_user | Acció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_user | Acción | $user (WP_User) | Se ejecuta antes de que se active la cuenta de un lead. |
wwlc_action_after_activate_user | Acción | $user (WP_User) | Se ejecuta después de que la cuenta de un lead se marca como activa. |
wwlc_action_before_deactivate_user | Acció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_user | Acció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_lead | Acció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_registering | Filtro | $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_url | Filtro | $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_fields | Filtro | $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_label | Filtro | $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_string | Filtro | $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_role | Filtro | $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_routes | Filtro | $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_abilities | Filtro | $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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
wholesale_quotes_api_admin_permissions_check | Filtro | $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_data | Filtro | $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_data | Filtro | $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_label | Filtro | $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_data | Filtro | $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_options | Filtro | $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_abilities | Filtro | $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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
wpay_filter_cron_schedule | Filtro | $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_plans | Filtro | $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_orders | Filtro | $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_version | Filtro | $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_html | Filtro | $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_plain | Filtro | $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_html | Filtro | $template (cadena, predeterminado payment-overdue.php) | Cambia el archivo de plantilla HTML del correo electrónico de pago vencido. |
wpay_payment_overdue_email_template_plain | Filtro | $template (cadena, predeterminado payment-overdue.php) | Cambia el archivo de plantilla de texto sin formato del correo electrónico de pago vencido. |
wpay_disable_abilities | Filtro | $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.
| Hook | Tipo | Argumentos | Lo que cambia |
|---|---|---|---|
igfw_invoice_due_date | Filtro | $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_status | Filtro | $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_orders | Filtro | $show (bool, por defecto true) | Devuelve falso para ocultar la pasarela de facturas cuando el total del carrito es cero. |
igfw_invoice_gateway_construct | Acción | Ninguna | Se ejecuta al final del constructor de la pasarela de facturas. |
igfw_invoice_payment_overdue | Acció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 );
Qué leer a continuación
¿Necesitas ayuda?
Si tienes alguna pregunta o encuentras algún problema, estamos aquí para ayudarte.
- Usuarios premium: Abrir un ticket de soporte
- Usuarios gratuitos: Visita nuestro foro comunitario
