Como cambiar este codigo php

  • Autor Autor eswal200
  • Fecha de inicio Fecha de inicio
eswal200

eswal200

Préstamo impago
1
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Hola gente estoy trabajando con woocommerce pero necesito personalizar la pagina de pago como el cliente me lo ha pedido pero estoy atascado.

ya he podido hacer cambios sencillos, pero el siguiente código quiero hacerlo sin condición:

Insertar CODE, HTML o PHP:
		<?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
			<tr class="fee">
				<th><?php echo esc_html( $fee->name ); ?></th>
				<td><?php wc_cart_totals_fee_html( $fee ); ?></td>
			</tr>
		<?php endforeach; ?>

ese es el código real, cambie el contenido dentro del <th> por una palabra fija,

Pero al parecer el código: <?php foreach ( WC()->cart->get_fees() as $fee ) : ?> , es condicional y solo se muestra cuan existe.

Lo que busco es poder hacer el código se muestre aunque exista o no el bucle

saben como poder hacerlo=??
 
Se que es muy obvio, pero probaste ponerlo afuera del bucle...? si siempre se va a mostrar no veo la necesidad de estar dentro.
 
Se que es muy obvio, pero probaste ponerlo afuera del bucle...? si siempre se va a mostrar no veo la necesidad de estar dentro.

Ya lo probé pero no funciona.

si coloco solo el codigo de esta manera:

<tr class="fee">
<th><?php echo esc_html( $fee->name ); ?></th>
<td><?php wc_cart_totals_fee_html( $fee ); ?></td>
</tr>


Pues, no funciona, Fue lo primero que probe
 
Ya lo probé pero no funciona.

si coloco solo el codigo de esta manera:

<tr class="fee">
<th><?php echo esc_html( $fee->name ); ?></th>
<td><?php wc_cart_totals_fee_html( $fee ); ?></td>
</tr>


Pues, no funciona, Fue lo primero que probe

no podras... esos datos salen del bucle... pero podes hacer un is_array antes o ver si el valor del array 0 tiene algo y mostrar el bucle y sino mostrar algo fijo

PHP:
<?php
if(is_array(WC()->cart->get_fees())){ 
foreach ( WC()->cart->get_fees() as $fee ) : ?>
			<tr class="fee">
				<th><?php echo esc_html( $fee->name ); ?></th>
				<td><?php wc_cart_totals_fee_html( $fee ); ?></td>
			</tr>
		<?php endforeach; ?>
<?php }else{ 
echo '<tr class="fee">
				<th>Valor fijo</th>
				<td>Valor Fijo</td>
			</tr>';
?>
 
no podras... esos datos salen del bucle... pero podes hacer un is_array antes o ver si el valor del array 0 tiene algo y mostrar el bucle y sino mostrar algo fijo

PHP:
<?php
if(is_array(WC()->cart->get_fees())){ 
foreach ( WC()->cart->get_fees() as $fee ) : ?>
			<tr class="fee">
				<th><?php echo esc_html( $fee->name ); ?></th>
				<td><?php wc_cart_totals_fee_html( $fee ); ?></td>
			</tr>
		<?php endforeach; ?>
<?php }else{ 
echo '<tr class="fee">
				<th>Valor fijo</th>
				<td>Valor Fijo</td>
			</tr>';
?>

mm ok. ya lo entendi voy a probarlo.

Paso el dato si funciono o no:encouragement:

- - - Actualizado - - -

Negativo el procedimiento,

ademas de no poder, se borran la caja de pedido y la forma de pago
 
mm ok. ya lo entendi voy a probarlo.

Paso el dato si funciono o no:encouragement:

- - - Actualizado - - -

Negativo el procedimiento,

ademas de no poder, se borran la caja de pedido y la forma de pago

mmm usa PHP: gettype - Manual a ver que tipo es... solo pon <?php echo gettype(WC()->cart->get_fees()); ?> arriba de eso y ve que aparece.. .asi podras saber bien que tipo es... pero esta bien asi, solo tenes que ver el dato!
 
y q tal con un:

PHP:
if(empty(WC()->cart->get_fees())){

}else{

}
 
Negativo :grumpy:
 
Negativo :grumpy:

Explico según entiendo:

PHP:
WC()->cart->get_fees()

get_fees() devuelve un array o una lista...Bueno como lo quieras llamar por ejemplo podría ser esto:
PHP:
array("key" => "value","key1" => "value1");

Entonces lo que hacen es recorrer esto para eso usan foreach y resulta que si get_fees() esta vació o nulo entonces no mostrara eso:

HTML:
<tr class="fee">
      <th><?php echo esc_html( $fee->name ); ?></th>
      <td><?php wc_cart_totals_fee_html( $fee ); ?></td>
 </tr>

Entonces quedaría así:

PHP:
<?php if(empty(WC()->cart->get_fees())): /* si esta vacio */ ?>
    <tr class="fee">
        <th><?php echo esc_html($fee->name) /* Debes conocer el valor de $fee->name y cambiarlo */; ?></th>
        <td><?php wc_cart_totals_fee_html($fee) /* Debes conocer el valor de $fee y cambiarlo y ejecutar la funcion wc_cart_totals_fee_html($mi_variable) */; ?></td>
    </tr>
<?php else: ?>
    <?php foreach(WC()->cart->get_fees() as $fee) /* Aqui no hay lio por que se ejecuta el buqle */: ?>
        <tr class="fee">
            <th><?php echo esc_html($fee->name); ?></th>
            <td><?php wc_cart_totals_fee_html($fee); ?></td>
        </tr>
    <?php endforeach; ?>
<?php endif; ?>
 
Explico según entiendo:

PHP:
WC()->cart->get_fees()

get_fees() devuelve un array o una lista...Bueno como lo quieras llamar por ejemplo podría ser esto:
PHP:
array("key" => "value","key1" => "value1");

Entonces lo que hacen es recorrer esto para eso usan foreach y resulta que si get_fees() esta vació o nulo entonces no mostrara eso:

HTML:
<tr class="fee">
      <th><?php echo esc_html( $fee->name ); ?></th>
      <td><?php wc_cart_totals_fee_html( $fee ); ?></td>
 </tr>

Entonces quedaría así:

PHP:
<?php if(empty(WC()->cart->get_fees())): /* si esta vacio */ ?>
    <tr class="fee">
        <th><?php echo esc_html($fee->name) /* Debes conocer el valor de $fee->name y cambiarlo */; ?></th>
        <td><?php wc_cart_totals_fee_html($fee) /* Debes conocer el valor de $fee y cambiarlo y ejecutar la funcion wc_cart_totals_fee_html($mi_variable) */; ?></td>
    </tr>
<?php else: ?>
    <?php foreach(WC()->cart->get_fees() as $fee) /* Aqui no hay lio por que se ejecuta el buqle */: ?>
        <tr class="fee">
            <th><?php echo esc_html($fee->name); ?></th>
            <td><?php wc_cart_totals_fee_html($fee); ?></td>
        </tr>
    <?php endforeach; ?>
<?php endif; ?>

oook ya pruebo con eso, gracias :encouragement:

- - - Actualizado - - -

hola [MENTION=21382]Andres128[/MENTION]

1000 gracias me funciono, ahora que lo veo es tan sencillo
 

Temas similares

Atrás
Arriba