Mostrando entradas con la etiqueta woocommerce. Mostrar todas las entradas
Mostrando entradas con la etiqueta woocommerce. Mostrar todas las entradas

miércoles, 31 de agosto de 2016

Mostrar precio variación seleccionada

Este otro lo encontré en Stack Overflow, cuantas veces nos has salvavo el culo oh estimada Stack Overflow? demasiadas, y espero que siga siendo así por mucho más tiempo. La mejor página para pedir socorro cuando las cosas no salen como queremos....

El precio lo muestra en el desplegable de las variaciones, mostrando el precio de cada una de ellas.

// Mostrar precio de la variacion escogida en el desplegable de variaciones

add_filter( 'woocommerce_variation_option_name', 'display_price_in_variation_option_name' );

function display_price_in_variation_option_name( $term ) {
    global $wpdb, $product;

    if ( empty( $term ) ) return $term;
    if ( empty( $product->id ) ) return $term;

    $result = $wpdb->get_col( "SELECT slug FROM {$wpdb->prefix}terms WHERE name = '$term'" );

    $term_slug = ( !empty( $result ) ) ? $result[0] : $term;

    $query = "SELECT postmeta.post_id AS product_id
                FROM {$wpdb->prefix}postmeta AS postmeta
                    LEFT JOIN {$wpdb->prefix}posts AS products ON ( products.ID = postmeta.post_id )
                WHERE postmeta.meta_key LIKE 'attribute_%'
                    AND postmeta.meta_value = '$term_slug'
                    AND products.post_parent = $product->id";

    $variation_id = $wpdb->get_col( $query );

    $parent = wp_get_post_parent_id( $variation_id[0] );

    if ( $parent > 0 ) {
         $_product = new WC_Product_Variation( $variation_id[0] );
         return $term . ' (' . wp_kses( woocommerce_price( $_product->get_price() ), array() ) . ')';
    }
    return $term;

}


Código para mostrar Desde X (menor precio de todas las variaciones de ese producto)

 
En woodemia he encontrado este código que te permite que en vez de mostrar el rango de precios
salga Desde x, el autor original de este código es el magnífico gerhardpotgieter: 
 
/**
 * Use WC 2.0 variable price format, now include sale price strikeout
 *
 * @param  string $price
 * @param  object $product
 * @return string
 */
function wc_wc20_variation_price_format( $price, $product ) {
    // Main Price
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    // Sale Price
    $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    sort( $prices );
    $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    if ( $price !== $saleprice ) {
        $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
    }
    
    return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );

martes, 7 de junio de 2016

WordPress everywhere! parte 3

Este código que pongo a continuación os servirá para cumplir con la normativa española en la cual (si no me equivoco, no soy administrativo...) toda factura debe de ir acompañada del NIF/CIF correspondiente del cliente.Sin más dilación os pego el código el cual pertenece a la siguiente página, la cual os recomiendo encarecidamente debido al alto nivel de calidad de los posts woodemia.

// Incluir NIF en la factura
add_filter( 'wpo_wcpdf_billing_address', 'incluir_nif_en_factura' );
function incluir_nif_en_factura( $address ){
global $wpo_wcpdf;
echo $address . '<p>';
$wpo_wcpdf->custom_field( 'NIF', 'NIF: ' );
echo '</p>';
}
/**
 * Añade el campo NIF a la página de checkout de WooCommerce
 */
add_action( 'woocommerce_after_order_notes', 'agrega_mi_campo_personalizado' );

function agrega_mi_campo_personalizado( $checkout ) {

    echo '<div id="additional_checkout_field"><h2>' . __('Información adicional') . '</h2>';

    woocommerce_form_field( 'nif', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('NIF'),
        'placeholder'   => __('Ej: 99999999D'),
        ), $checkout->get_value( 'nif' ));

    echo '</div>';
}

/**
 * Actualiza la información del pedido con el nuevo campo
 */
add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_info_pedido_con_nuevo_campo' );

function actualizar_info_pedido_con_nuevo_campo( $order_id ) {
    if ( ! empty( $_POST['nif'] ) ) {
        update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
    }
}


/**
 * Muestra el valor del nuevo campo NIF en la página de edición del pedido
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'mostrar_campo_personalizado_en_admin_pedido', 10, 1 );

function mostrar_campo_personalizado_en_admin_pedido($order){
    echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}