Avisos
Vaciar todo

WPFront User Role Editor modificar precios por rol masivamente

8 Respuestas
4 Usuarios
0 Reactions
283 Visitas
Respuestas: 412
Reputable Member
Topic starter
 

Los usuarios de la web tienen asignado un ROL, esto lo hago desde el plugin WPFront User Role Editor

este plugin me añade debajo de cada producto lo que veis en la imagen

para que pueda poner el precio normal y el precio con descuento para el rol Tienda 1 y Tienda 2

El problema es que quiero modificar masivamente esos precios y al descargar el CSV desde productos / Exportar estos datos no aparecen

alguna idea de donde pueden estar?

estoy exportando así

URL del sitio: Contenido solo visible a usuarios registrados


 
Respondido : 11/11/2018 7:00 pm
Luis Mendez Alejo
Respuestas: 23273
Illustrious Member
 

Hola Ricardo,

Al ser un plugin que no guarda relación directa con WooCommerce, aunque implemente funcionalidades de precios para este carrito, es normal que WooCommerce no contemple estos campos en las opciones de Importar/Exportas a XML/CSV.

Desconozco si este plugin tiene dicha funcionalidad o si el autor del mismo lo ha contemplado en el código. No obstante siempre podrás exportar un CSV de tu WordPress, desde Herramientas, y luego en Excel montarte una hoja con los campos y delimitadores correspondientes para que después puedas hacer esa importación de precios (o lo que corresponda) de forma masiva.

Desconozco cuantos productos son los afectados, pero en ocasiones es mayor trabajo hacer un CSV y una importación (que puede fallar por muchas partes y afectar a la Tienda en producción y a los precios actuales y campos de Productos, siendo más recomendable aplicar manualmente los cambios de precios, por muchos productos que sean y con ello garantizarte que no habrá errores en el proceso.

Saludos


 
Respondido : 11/11/2018 7:14 pm
Respuestas: 412
Reputable Member
Topic starter
 

un a uno es imposible ya que son más de 3000 artículos

desde archivos exportar he descargado un XML y he encontrado esta linea

en un producto que tenía para el rol TIENDA1 precio normal 999 y precio rebajado 666
y para el mismo producto como rol TIENDA 2 precio normal 888 y precio rebajado 777

y aquí ya me pierdo, porque aunque cree un excel con estas 5 columnas

SKU para saber a qué producto corresponde
TIENDA 1 precio normal
TIENDA 1 precio rebajado
TIENDA 2 precio normal
TIENDA 2 precio rebajado

luego al importarlo, no se a que columna corresponde cada linea

para la linea del SKU si se que poniendo SKU la detecta
pero las otras han de ser Meta:??????


 
Respondido : 11/11/2018 7:50 pm
Luis Mendez Alejo
Respuestas: 23273
Illustrious Member
 

Hola Ricardo,

Es necesario ver una captura de los campos que el importado que estás usando te muestra como sustitutivos.

Supongo que no te permite customizar campos para importar ¿que plugin de Importar estás usando? (hay muchos) 😉

Saludos


 
Respondido : 11/11/2018 8:47 pm
Respuestas: 412
Reputable Member
Topic starter
 

exporto e importo desde productos, creo que ya venía y no es ningún plugin que yo haya instalado

te adjunto 3 pantallazos de las opciones que me da y verás que en ninguna aparecen esos campos

lo que está claro que en los 2 o 3 productos que lo he puesto a mano funciona perfectamente apareciendo el precio correcto según el rol del usuario, por lo que esos datos están guardado en alguna parte

falta saber donde para poder editarlos
he mirado dentro de la carpeta del plugin y no veo nada y necesito para esta semana que los roles TIENDA1 y TIENDA2 vean los precios correctamente.

Gracias


 
Respondido : 12/11/2018 11:45 am
Pepe
 Pepe
Respuestas: 41113
Illustrious Member Admin
 

Hola.

Con las opciones de exportar que tiene woocommerce por defecto no podrás exportar por roles.

Tienes el siguiente plugin:
-> https://wordpress.org/plugins/woocommerce-exporter/

En su versión premiun si que permite exportar por roles, lo que no te se decir si es compatible con WPFront

Un saludo


 
Respondido : 12/11/2018 12:22 pm
Respuestas: 412
Reputable Member
Topic starter
 

he encontrado la manera de hacerlo por código insertando esto dentro de functions.php

// Aplica un precio especial dependiento del tipo de usuario
add_filter( 'woocommerce_get_price', 'aplica_precio_especial', 10, 2);
function aplica_precio_especial( $price, $product ) {
    
    if (!is_user_logged_in()) return $price;

    // Listado de productos con precio especial
    $product_list = array();

    // % Descuento a aplicar
    $discount = 50;

    // Comprueba si el producto actual pertenece a la lista
    if( in_array( $product->id, $product_list ) || empty( $product_list ) ) {

        // Comprueba si el usuario tiene precio especial
        if( usuario_con_precio_especial( 'tienda1' ) ){
            
            $price = $price * ( 100 - $discount ) / 100;
        }
    }
    return $price;
}

function usuario_con_precio_especial( $role = '',$user_id = null ){

    if( is_numeric( $user_id ) ){

        $user = get_user_by( 'id', $user_id );
    }else{

        $user = wp_get_current_user();
    }

    if( empty( $user ) ){
        
        return false;
    }
    
    return in_array( $role, (array) $user->roles );
}


El problema es que esto me hace un 50% de DTO al ROL tienda1 y necesito otros descuentos para otros roles

He intentado cambiar el código donde pone tienda1 poner tienda 2 y donde pone 50 poner otro descuento y la web deja de funcionar porque se repiten funciones

Podrias decirme el codigo correcto para asignar 3 descuentos a 3 roles?

Gracias


 
Respondido : 13/11/2018 6:08 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

En la primera parte del código podrías probar agregando más condiciones

function aplica_precio_especial( $price, $product ) {
 
    if (!is_user_logged_in()) return $price;
 
    // Listado de productos con precio especial
    $product_list = array();
 
    // % Descuento a aplicar
    $discount = 50;
 
    // Comprueba si el producto actual pertenece a la lista
    if( in_array( $product->id, $product_list ) || empty( $product_list ) ) {
 
        // Comprueba si el usuario tiene precio especial
        if( usuario_con_precio_especial( 'tienda1' ) ){
     $discount = 50;
            $price = $price * ( 100 - $discount ) / 100;
        }

        // Comprueba si el usuario tiene precio especial
        if( usuario_con_precio_especial( 'tienda2' ) ){
     $discount = 30;
            $price = $price * ( 100 - $discount ) / 100;
        }

    }
    return $price;
}

He agregado para tiend2, puedes repetir de manera similar para tienda3, etc.
Ten en cuenta que estoy agregando el descuento dentro de cada condición ya que este varía

Saludos.


 
Respondido : 13/11/2018 8:50 pm