Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

380
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda