Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

377
Vistas
Deshabilitar el botón HTML en condición con PHP (complemento de WordPress)

Estoy creando un complemento personalizado para una página impulsada por WordPress para deshabilitar un botón determinado bajo condición.

Contexto: para deshabilitar el botón de realizar pedido si el usuario incumplió un límite de crédito determinado.

Espero que al ingresar a la página de pago, el complemento se active y verifique si el usuario excedió el límite de crédito. En caso afirmativo, alertará al usuario y deshabilitará el botón de realizar el pedido (O creará una superposición O cualquier otro método)

Por ahora tengo esto:

 function credit_limit_check() { /** page 13 is the check out page ID*/ if (is_page(13)) { if (is_user_logged_in()) { /* For reference purpose*/ /* get_user_meta( int $user_id, string $key = '', bool $single = false ) */ $ID = get_current_user_id(); $credit_val = get_user_meta($ID, 'credit_limit', true); $outstanding_val = get_user_meta($ID, 'outstanding_credit', true); $credit_breach = $credit_val - $outstanding_val; if ($credit_breach <= 0) { /*disable checkout button if not enough credit limit*/ echo '<button type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="Place order" data-value="Place order" disabled>Place order</button>'; echo '<script>alert("You have exceeded your credit limit, please make sure you have no outstanding bill")</script>'; } else { print_r("Huzzah! Good news! You have enough credit to proceed!"); } } else { print_r("Please login with your account before proceeding."); } } }

El único problema es que las funciones en realidad crean un botón adicional en la parte superior de la página en lugar de desactivar el botón original. Entonces, me pregunto si esto es realmente factible, o tengo que modificar los archivos html directamente para lograr lo que se pretende (preferiblemente no)

Ahora, veo algunas preguntas similares, pero todas requieren la aplicación directa de php en las etiquetas html. No es aplicable para mi situación ya que estoy creando un complemento personalizado de wordpress. (Que es un archivo php individual).

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Bueno, yo resolvería esto en dos partes.

Paso 1 . Adición de avisos adecuados.

 function add_notices_for_checkout_credit() { if(is_checkout()) { if (is_user_logged_in()) { $ID = get_current_user_id(); $credit_breach = getUserCredit($ID); if ($credit_breach <= 0) { wc_add_notice( 'You have exceeded your credit limit, please make sure you have no outstanding bill', 'error' ); } else { wc_add_notice( 'Huzzah! Good news! You have enough credit to proceed!', 'success' ); } } } } add_action( 'wp', 'add_notices_for_checkout_credit'); function getUserCredit($ID) { $credit_val = get_user_meta($ID, 'credit_limit', true); $outstanding_val = get_user_meta($ID, 'outstanding_credit', true); $credit_breach = $credit_val - $outstanding_val; return $credit_breach; }

Con menos crédito se nota. ingrese la descripción de la imagen aquí

Cuando el crédito suficiente se muestra. ingrese la descripción de la imagen aquí

Paso 2 . Botón de restricción

 function change_button($order_button) { if (is_user_logged_in()) { $ID = get_current_user_id(); $credit_breach = getUserCredit($ID); if ($credit_breach <= 0) { $order_button_text = __( "No Credit", "woocommerce" ); $style = ' style="color:#fff;cursor:not-allowed;background-color:#999;text-align:center"'; return '<a class="button alt"'.$style.' name="woocommerce_checkout_place_order" id="place_order" >' . esc_html( $order_button_text ) . '</a>'; } } return $order_button; } add_filter( 'woocommerce_order_button_html', 'change_button');

ingrese la descripción de la imagen aquí

Esto deshabilitará el botón, y debería estar listo para comenzar.

No verifique si hay invitados en su código, cámbielo desde su configuración de woocommerce. En la configuración de la cuenta, márquelo como obligatorio para iniciar sesión al realizar el pago.

PD: para mayor seguridad, use woocommerce_checkout_update_order_review para verificar si es una solicitud válida porque alguien puede crear un botón de envío usando la herramienta de desarrollo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda