En una pantalla de wordpress, utilicé el esc_html__() para escapar de la cadena y agregar variables para un uso seguro en la salida HTML.
Mi código es el siguiente:
<?php global $product, $post; $posts_id = $product->get_id(); $reserve_price = get_post_meta($posts_id, '_auction_reserved_price', true); if ($product->is_reserved() === true && $product->is_reserve_met() === false) : ?> <p class="reserve hold" data-auction-id="<?php echo esc_attr( $product->get_id() ); ?>"> <?php echo apply_filters('reserve_bid_text', esc_html__('Reserve price has not been met, needed to enter $ %s or more', 'wc_simple_auctions', $reserve_price)); ?> </p> <?php endif; ?>Pero mi variable no muestra el valor final, la cadena de salida que obtengo es esta:
Lo intenté antes $reserve_price sea una variable no vacía, pero esc_html__() no muestra la información correcta en la página.
No estoy muy seguro acerca de esta razón.
"Lo intenté antes de que $reserve_price sea una variable no vacía, pero esc_html__() no muestra la información correcta en la página".
No puede usar marcadores de posición en esc_html__() . Solo recupera la traducción de un texto dado y lo escapa para un uso seguro en la salida HTML. Lo que significa que podrías usarlo para:
Sin embargo, si necesita:
Entonces podría usar la combinación de las esc_html , sprintf y __() , así:
$test_value = '<strong>5.7<strong>'; echo esc_html( sprintf( __('This is a test for %s', 'your-text-domain'), $test_value ) )Lo que generará esto:
Y si el texto proporcionado no tiene ninguna etiqueta html, sería algo como esto:
$test_value = 5.7; echo esc_html( sprintf( __('This is a test for %s', 'your-text-domain'), $test_value ) )Ahora, si aplicamos los mismos principios a su fragmento, sería algo como esto:
<p class='reserve hold' data-auction-id='<?php echo esc_attr($product->get_id()); ?>'> <?php echo apply_filters( 'reserve_bid_text', esc_html( sprintf( __('Reserve price has not been met, needed to enter $ %s or more', 'wc_simple_auctions'), $reserve_price ) ) ); ?> </p>¡Avísame si pudiste hacerlo funcionar!