Suporte » Plugins » Shortcode woocommerce

  • Resolvido andersu

    (@andersu)


    Olá, alguém sabe se tem um modo, preferencialmente shortcode de filtrar produtos por usuário.
    Não o link do perfil de quem fez o post, gostaria de algo relacionado mais ou menos dessa forma: [woocommerce _products_ user] para quando o usuário estiver logado em sua conta, vê os produtos dele.

Visualizando 15 respostas - 1 até 15 (de um total de 16)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, tudo bem?

    Você quer um shortcode para listar os produtos criados por um usuário, certo?

    Está usando algum plugin para que os usuários criem produtos no front-end ou está tudo padrão?

    Minha sugestão seria:
    1 – Cria um plugin próprio (ou adiciona no functions do seu tema) o shortcode:
    https://codex.wordpress.org/Shortcode_API

    2 – Dentro do shortcode cria o Loop para apresentar os produtos:
    https://developer.wordpress.org/themes/basics/the-loop/
    https://docs.woocommerce.com/document/sample-products-loop/

    • Esta resposta foi modificada 4 anos, 3 meses atrás por Mário Valney.
    Criador do tópico andersu

    (@andersu)

    Olá Mário!
    Obrigado por separar um tempinho pra me ajudar. Eu não estou usando nenhum plugin para os usuários criem produtos no front-end. O envio seria por formulário mesmo. Até mesmo porque não conheço nenhum pluguin que faça isto. Se souber algum diz ae 😛

    E também não sei desenvolver um plugin. Mas obrigado pelas dicas.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Ah! Existem alguns shortcodes de produtos do WooCommerce:
    https://docs.woocommerce.com/document/woocommerce-shortcodes

    Mas infelizmente eles não dão suporte a filtrar por usuário.

    Nesse código aqui eu tentei criar um plugin para alterar o shortcode products.
    https://gist.github.com/mariovalney/47b240420bac6e506578565ddb4a3058

    Você teria que colocar “current_user” no shortcode de produtos.
    Por exemplo: [products current_user].

    Não consegui testar, mas quem sabe possa te ajudar.

    Abraços

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Criar um plugin é bem fácil. Mas poderia também colocar o código no functions.php do seu tema.

    Referência: https://developer.wordpress.org/plugins

    Se for tentar com o código que te mandei, basta colocar esse arquivo na pasta de plugins, para testar (lembre de fazer backup ou testar num ambiente local primeiro).

    • Esta resposta foi modificada 4 anos, 3 meses atrás por Mário Valney.
    Criador do tópico andersu

    (@andersu)

    Adicionei o código ao functions.php porem não funcionou. :<

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Qual o erro?

    Adicionou o shortcode à alguma página?

    Criador do tópico andersu

    (@andersu)

    Erro nenhum. Apenas não filta. Mostra todos os produtos.
    Adicionei o shortcode [products current_user]

    • Esta resposta foi modificada 4 anos, 3 meses atrás por andersu.
    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Achei o problema: o WooCommerce não “passa” qualquer atributo (fora dos que ele já usa) para essa função que estamos usando.

    Dá uma olhada agora.
    Alterei o código e testei numa instalação local.

    [products_current_user]

    Ele aceita todos os valores do shortcode de produtos. Única diferença é que irá adicionar o id do usuário (se estiver logado) na query de produtos.

    Criador do tópico andersu

    (@andersu)

    Mário, muito obrigado! Funcionou perfeitamente. Obrigado, obrigado, o brigado mesmo! Só mais uma dúvida, sem querer tomar muito do seu tempo, quando o user não tiver nenhum produto, não tem como a aparecer uma mensagem informando que ele não enviou produtos? Por favor, se for complexo ou se tomará seu tempo não tem problema. Esse code seu já me ajudou BASTANTE! Obrigado!

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Não sei como é o comportamento do shortcode do WooCommerce, caso não retorne nenhum post.

    Atualmente aparece o quê?

    Criador do tópico andersu

    (@andersu)

    Aparece nada, fica limpo. Sem nenhuma info.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Achei aqui: tem uma ação para o caso de nenhum resultado.

    Ficaria mais ou menos assim:

    add_action( 'woocommerce_shortcode_products_current_user_loop_no_results', 'wc_products_shortcode_by_user_no_results' );
    
    function wc_products_shortcode_by_user_no_results() {
      echo '<p>Você ainda não publicou nenhum produto</p>';
    }
    Criador do tópico andersu

    (@andersu)

    Funcionou perfeitamente, mais uma vez muito obrigado!!!! Você é um DEUS!! ♥

    Criador do tópico andersu

    (@andersu)

    @mariovalney desculpa estar te incomodando novamente, rs. Mas só agora percebi que para o cod. mostrar os produtos de alguém eu tenho que editar o “autor” do produto no woocommerce. Há possibilidade de alguém se cadastrar como assinante e o ADMIN apenas alterar o produto para aquele assinante? tipo se altera o autor de uma postagem!?

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Se não me engano, assinante não pode publicar posts.
    A pessoa precisa ser pelo menos colaboradora.

    Mas com isso em mente, o admin pode alterar o autor sim.
    Tranquilamente.

    Uma dica: o código que publica o produto através do seu formulário poderia já colocar o usuário atual como autor, não?

    Abraços

Visualizando 15 respostas - 1 até 15 (de um total de 16)
  • O tópico ‘Shortcode woocommerce’ está fechado para novas respostas.