• Resuelto chupachota

    (@chupachota)


    hola, queria que mi cliente pudiese ver el listado de todos los pedidos, (en woocommerce->pedidos), pero que al mismo tiempo no tuviese acceso a modificar cosas y configuraciones importantes de la pagina. ¿Hay alguna solucion para eso?
    un saludo! Si creo un usuario con perfil de editor (que es el siguiente a administrador) no tiene acceso a woocommerce.

    • Este debate fue modificado hace 3 años, 3 meses por chupachota.
    • Este debate fue modificado hace 3 años, 3 meses por chupachota.
Viendo 15 respuestas - de la 1 a la 15 (de un total de 17)
  • Moderador kallookoo

    (@kallookoo)

    Hola @chupachota

    No puedes, tendrias que crear un pagina dentro de la administracion y hacerlo manualmente.
    Pero para eso deberias saber algo de programacion

    Iniciador del debate chupachota

    (@chupachota)

    no hay problema, soy programador php. ¿Me puedes dar alguna indicacion de lo que deberia hacer? soy programador en php avanzado, pero en wordpress soy novato del todo.
    saludos.

    Moderador kallookoo

    (@kallookoo)

    Hola @chupachota

    Lo primero seria crear un pagina o subpagina; https://developer.wordpress.org/plugins/administration-menus/
    Luego podrias usar la class WC_Admin_List_Table_Orders para mostrar solo los pedidos del usuario actual.
    Como esa class no esta pensada para eso tendrias que crear una nueva usandola como ejemplo.
    Otra opcion seria crear el contenido usando wc_get_orders; https://github.com/woocommerce/woocommerce/wiki/wc_get_orders-and-WC_Order_Query

    Con la primera opcion se crearia una pagina igual que en WooCommerce – Pedidos.
    Con la otra deberias crear tambien el html,css y recorrer los pedidos que te devuelva la function o la class.
    En los dos caso deberas primero obtener el id del usuario usando la function wp_get_current_user

    Iniciador del debate chupachota

    (@chupachota)

    tu opcion, la voy a dejar para luego, primero estoy intentando hacerlo con el plugin «user role editor» que me permite personalizar los permisos de los distintos usuarios. Ya casi lo tengo configurado pero todavia me falta restringir el acceso al apartado de «ajustes» de «woocommerce» ya que no quiero que el gestor de la tienda tenga acceso a esos ajustes ya que puede cometer un estropicio. ¿sabeis como puedo restringir eso con «user role editor».
    saludos, y gracias.

    Moderador kallookoo

    (@kallookoo)

    Hola @chupachota

    Los roles y capacidades es para decidir que permisos tiene x usuario y son genericos, lo que quiero decir es que si elimina un capacidad sera para toda la interfaz.

    El gestor de la tienda que rol tiene?

    Iniciador del debate chupachota

    (@chupachota)

    el rol del gestor es «Gestor de la tienda» que es un nuevo rol que me aparece al instalar el plugin de woocommerce.

    Imagen ejemplo

    Mira esa imagen. Te pone clarito en una ultima fila read_shop_order….

    Ya comentas si te sirvió la info

    Moderador kallookoo

    (@kallookoo)

    Hola @kaosroc

    Como comente no se puede, ya que el quiere mostrar los pedidos pero sin permitir su modificacion y si se modifica las capacidades simplemente estaria quitando el menu y diria que tambien quitaria otros y no permitiria la creacion de productos, etc…

    Pero vamos, no lo he probado y me puedo equivocar.

    Iniciador del debate chupachota

    (@chupachota)

    @kaosroc, si habilito eso me deja acceder a los pedidos realizados por dicho usuario, pero no a todos los pedidos realizados por todos los clientes.

    Iniciador del debate chupachota

    (@chupachota)

    como veo que no se puede, voy a ir a la solucion que me propuso @kallookoo. En primer lugar me dice que debo añadir este codigo php, para crear una pagina al menu principal:

    <?php
    add_menu_page(
        string $page_title,
        string $menu_title,
        string $capability,
        string $menu_slug,
        callable $function = '',
        string $icon_url = '',
        int $position = null
    );

    pero donde añado ese codigo?

    Iniciador del debate chupachota

    (@chupachota)

    he conseguido mostrar todos los pedidos del lado del front end (osea del lado del cliente) añadiendo este shortcode a una pagina:
    [woocommerce_my_account order_count=”-1”] Ahora solo quedaria poder cambiar el estado del pedido y poder filtrarlos por año. Se os ocurre alguna forma de hacerlo?

    • Esta respuesta fue modificada hace 3 años, 3 meses por chupachota.
    Moderador kallookoo

    (@kallookoo)

    Hola @chupachota

    Para añadir una nueva funcionalidad tienes dos opciones usando un plugin o añadiendolo en el functions.php del theme, como saber cual es la mejor manera?
    Simplemente se usa el functions.php cuando esta relacionado con el theme y un plugin en caso contrario.
    Lo puedes hacer con functions o classes, eso ya depende de tus gustos, aunque diria que casi todos ya lo hacen mediantes classes.
    Aqui tienes mas informacion al respecto; https://developer.wordpress.org/plugins/

    Sobre tu otra consulta, estas en lo mismo que con los pedidos en el admin.
    Ese shortcode no tiene la opcion de filtrar los pedidos y que yo sepa no existe ningun plugin que tenga esa caracteristica, podrias intentar buscarlo en el repositorio pero yo he mirado un poco ni no he visto ninguno, asi que ahora mismo solo se me ocurre que hagas tu propio shortcode añadiendo el filtro u otra caracteristica que necesites.

    Iniciador del debate chupachota

    (@chupachota)

    se puede hacer, en este articulo se explica como: https://www.role-editor.com/woocommerce-view-edit-orders/

    Moderador kallookoo

    (@kallookoo)

    Hola @chupachota

    Me alegro que encontrases una solucion para que los usuarios puedan editar los pedidos en el admin y gracias por compartirla.

    Que haras con el shortcode?

    Saludos

    Iniciador del debate chupachota

    (@chupachota)

    no, no voy a usar el shortcode.

Viendo 15 respuestas - de la 1 a la 15 (de un total de 17)
  • El debate ‘usuario que pueda ver el listado de pedidos’ está cerrado a nuevas respuestas.