Cambiar el texto de la insignia de WooCommerce agotado

4 minutos de lectura

avatar de usuario
jimaroonie

Estamos utilizando el tema Neighborhood en WordPress y Woo Commerce para vender artículos únicos y únicos. La gestión de existencias funciona bien en términos de garantizar que los productos vendidos no se puedan volver a comprar mostrando el artículo como agotado. En principio, esto está bien y, de hecho, la visualización de “En stock” cambiando a “Fuera de stock” debajo del precio en la descripción del artículo no funciona e incluso hemos encontrado un código para cambiar esa visualización si es necesario. aquí. Esto funciona bien: agregue el siguiente código a functions.php en el tema:

add_filter('woocommerce_stock_html', 'change_stock_message', 10, 2);
function change_stock_message($message, $stock_status) {
    if ($stock_status == "Out of stock") {
        $message="<p class="stock out-of-stock">Sold</p>";    
    } else {
        $message="<p class="stock in-stock">Available</p>";           
    }
    return $message;
}

Sin embargo, lo que realmente queremos hacer es cambiar el texto en la insignia de agotado que aparece en la imagen, por ejemplo. http://neighborhood.swiftideas.net/product/common-projects-achilles/.

ingrese la descripción de la imagen aquí

Cambiar el CSS no es un problema, por lo que la fuente del texto, el fondo, el tamaño, etc. se modifica fácilmente agregando algo como esto al CSS personalizado:

.out-of-stock-badge {
    background: red;
    font-size: 12px;
}

¿Cómo cambiar el texto de la insignia de agotado de “Agotado” a “VENDIDO”?

  • Código de @brasofilo del primer enlace ya agregado. El segundo enlace es un ejemplo para el que no tengo código/instantánea (de ahí la solicitud). He agregado una captura de pantalla si eso ayuda (aunque solo puedo vincular la imagen porque no tengo suficiente representante :(). ¡Gracias por el comentario!

    – jimaroonie

    20/10/2013 a las 11:00

Marzo de 2019 El fragmento que necesita está en un archivo llamado wc-product-loop-outofstock-flash.php (en mi caso, wp-content/Themes/Avada/woocommerce)

<?php if ( ! $product->is_in_stock() ) : ?>
    <div class="fusion-out-of-stock">
        <div class="fusion-position-text">
        <?php esc_attr_e( 'Fully Booked', 'Avada' ); ?>
        </div>
     </div>
<?php
endif;

Mira los resultados aquí pero no puedo garantizar que estarán disponibles después de mayo de 2019. Los artículos completos se encuentran en la parte inferior de la página.

  • ¿Puede encontrar una manera de proporcionar “los resultados” de una manera que no caduque? Tal vez, ¿una captura de pantalla que pueda incluir como imagen en su respuesta? (gracias)

    – elbrante

    23 de marzo de 2019 a las 1:33

No sé sobre el tema que estás usando. Pero creo que el siguiente código podría resolver su problema:

add_filter('woocommerce_sale_flash', 'woocommerce_sale_flashmessage', 10, 2);
function woocommerce_sale_flashmessage($flash){
    global $product;
    $availability = $product->get_availability();

    if ($availability['availability'] == 'Out of stock') :
        $flash="<span class="out-of-stock-badge">".__( 'SOLD', 'woocommerce' ).'</span>';

    endif;
    return $flash;
}

Agregue esto en el archivo functions.php de su tema.

  • Hola @maksbd19 gracias por la respuesta. Desafortunadamente, no puedo hacer que esto funcione cuando lo agrego a functions.php. Entiendo, en principio, cómo debería funcionar esto, ¡pero la insignia de agotado todavía dice agotado!

    – jimaroonie

    30 de octubre de 2013 a las 6:19

  • lo que descubrí anteriormente es que este texto podría provenir del archivo sale-flash.php de la página de plantilla de woocommerce. Eso podría estar en la ubicación del directorio de vecindario\woocommerce\single-product. Si está allí, puede intentar cambiar el texto allí. Es realmente difícil tratar de resolver un problema de plantilla sin tener el entorno.

    – maksbd19

    30 de octubre de 2013 a las 12:43

  • Gracias @ maksbd19, su sugerencia me permitió descubrir qué archivos necesitaba cambiar y que he incluido en la respuesta a continuación.

    – jimaroonie

    11 de noviembre de 2013 a las 2:26

Siguiendo la sugerencia de @ maksbd19, encontré dos archivos que requerían edición dentro de la carpeta de woocommerce dentro de la carpeta de temas (en este caso, vecindario). Estos son content-product.php y single-product\product-image.php. En ambos casos, cambio la siguiente línea de ‘Agotado’ a ‘Vendido’ de la siguiente manera:

...} else if (is_out_of_stock()) {
    echo '<span class="out-of-stock-badge">' . __( 'Sold', 'swiftframework' ) . '</span>';
} else if (!$product->get_price()) {...

Espero que eso ayude a alguien.

avatar de usuario
Prajwal

Puede usar el código en su archivo child themes header.php

Para crear un tema hijo – https://codex.wordpress.org/Child_Themes

jQuery( document ).ready(function() {
    jQuery(".onsale.oos").text(function () {
        return jQuery(this).text().replace("Out of stock", "SOLD"); 
    });
});

¿Ha sido útil esta solución?