Estoy trabajando en un plugin para woocommerce, y se topó con el gancho «woocommerce_variation_price_html», que permite enlazar a la variación de la caída de los precios hacia abajo en cada uno de los productos. Así creó una rápida función de la prueba y tiene un juego:

add_action( 'woocommerce_variation_price_html' , 'wholesale_variation_price' );
function wholesale_variation_price($term){

 return '';

}

El anterior funciona muy bien y elimina todos los datos. Sin embargo, estoy tratando de agregar personalizado meta_data para reemplazar los valores predeterminados.

Así entonces hice lo siguiente:

add_action( 'woocommerce_variation_price_html' , 'wholesale_variation_price' );
function wholesale_variation_price($term){

$var_price = get_post_meta( get_the_id(), '_my_price', true );

 return $var_price;

}

Este por alguna razón no funciona? Alguien ha tenido alguna experiencia de trabajo con este gancho en woocommerce? No hay mucha documentación en la que se enganchan en cualquier lugar.

Cualquier ayuda sería muy apreciada!

  • Que hook no es para la actualización de los precios. Que se utiliza para formatear la salida. Este será sólo el cambio de precio que el usuario ve. No es el precio real que se utiliza en el carrito/orden. Compruebe también si get_post_meta devuelve el valor.
  • Sí me gustaría simplemente formato de la salida, el carro / precio de la orden ya está tomado cuidado de. post_meta devuelve un valor.
InformationsquelleAutor danyo | 2013-12-18

4 Comentarios

  1. 5

    Como ya se ha indicado que se puede leer aquí acerca de los filtros de html.
    Tal vez usted tiene el precio de Venta establecido para la variación? A continuación, en el enlace se puede ver que hay un total de 4 filtros. Por: precio, precio de venta, libre y sin precio.

    Este código funciona

    add_filter( 'woocommerce_variation_sale_price_html', 'my_html', 10, 2);
    add_filter( 'woocommerce_variation_price_html', 'my_html', 10, 2);
    function my_html( $price, $variation ) {
        return woocommerce_price(5);
    }

    También esta también funciona. Esto permite modificar toda la variación. Leer en el código aquí

    add_filter( 'woocommerce_available_variation', 'my_variation', 10, 3);
    function my_variation( $data, $product, $variation ) {
        $data['price_html'] = woocommerce_price(6);
        return $data;
    }

    Capturas de pantalla:

    Primer ejemplo

    el gancho en el woocommerce_variation_price_html wordpress

    Segundo ejemplo

    el gancho en el woocommerce_variation_price_html wordpress

    Funciona como magia!

    P. S. usted puede ver los precios como esta en las capturas de pantalla porque tengo el diseño que muestran ellos, como que.


    EDITAR 2016-09-10

    Versión 2.6+

    Como woocommerce_price está en desuso en 2.6, a continuación, utilizar wc_price para las versiones más recientes.

    • no sabía que el woocommerce_price() función que existían! Cómo puedo obtener la variación específica de identificación dentro de esta función? necesito conseguir un campo personalizado
    • He actualizado mi post. Hice un lío algo. Segunda función fija. También en ambos sentidos variable $variación [o w/e que elegir el nombre de ella]. En la primera función como segundo (2.) variable. Y en la segunda una función de tercer (3.) variable para la variación.
    • gracias por la actualización! así que, ¿cómo iba yo a un destino específico meta_value de _my_price para cada variación?
    • No se preocupe, he resuelto ahora esto! muchas gracias!
    • Como woocommerce_price() está en desuso, este código ya no funciona… Si se pudiera actualizar, esto será muy útil para la comunidad. Gracias
    • añadido edición con comentario. Debería ser suficiente.

  2. 1
    //Display Price For Variable Product With Same Variations Prices
    add_filter('woocommerce_available_variation', function ($value, $object = null, $variation = null) {
    if ($value['price_html'] == '') {
        $value['price_html'] = '<span class="price">' . $variation->get_price_html() . '</span>';
    }
    return $value;}, 10, 3);
  3. 0

    Mirando WooCommerce código fuente, veo que woocommerce_variation_price_html es un filtro, no una acción. No sé cómo se las arregló para conseguir su código de ejemplo para trabajar como que… raro.

    Intente esto:

    function wholesale_variation_price( $price, $product ) {
        $var_price = get_post_meta( $product->variation_id, '_my_price', true );
        return $var_price;
    }
    add_filter( 'woocommerce_variation_price_html', 'wholesale_variation_price', 10, 2 )
    • Creo que tiene el mismo resultado como add_action tan lejos como puedo ver? Que funciona, pero sólo actualiza el precio de 1 elemento de la lista desplegable.
    • Acabo de comprobar y WordPress función add_action es el uso de add_filter función, por lo que add_action es básicamente un alias y tienen el mismo comportamiento.
  4. 0

    He utilizado esta opción para modificar la variación de los precios muestra el precio para cada variante de producto, sin incluir impuestos, antes y impuestos incluidos después 🙂

    add_filter( 'woocommerce_available_variation', 'my_variation', 10, 3);
    function my_variation( $data, $product, $variation ) {
        $data['price_html'] = "<span class='ex-vat-price'>ex. " . woocommerce_price($variation->get_price_excluding_tax()) . "</span><br>";
        $data['price_html'] .= "<span class='inc-vat-price'>inc. " . woocommerce_price($variation->get_price_including_tax()) . "</span>";
        return $data;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here