WooCommerce Loja vitrine
-
Olá, No WooCommerce, tenho dois tipos de produtos diferentes. Na vitrine (loja), eles aparecem todos juntos. Como faço para mostrá-los separadamente.Ou seja, uma vitrine com um tipo de produto, e outra que mostre o outro tipo. Obrigado, desde já.
-
Olá, tudo bem?
Você precisa alterar o seu tema. Mais precisamente o arquivo
woocommerce/templates/archive-product.php
ou algum outro.A alteração será criar dois Loops personalizados. Para isso, basta criar com a classe WP_Query:
https://codex.wordpress.org/Class_Reference/WP_Query
Entendendo os parâmetros dessa classe, você pode usar esse exemplo da WooCommerce:
https://docs.woocommerce.com/document/sample-products-loop/
Observação: não esqueça de fazer o backup antes e criar um tema filho para não perder as atualizações.
Olá, @mariovalney,estou bem, obrigado. Em relação ao código de (sample-products-loop) que você passou, eu colocaria em que parte do do (archive-product.php)? Eu quero expor uma vitrine para livros e uma vitrine para vinil. Como te disse, atualmente esses dois produtos estão expostos numa mesma vitrine todos juntos. Seriam duas páginas então?
Desde já agradeço.Bem @ceslad, você vai precisar achar a parte do código que cria a vitrine e então trocar pelo Loop personalizado para a primeira vitrine.
Depois que isso estiver OK, você vai procurar todo o código que forma a vitrine (tanto o Loop quanto o HTML/PHP) e duplicar para mostrar a segunda vitrine.
Tudo dentro de uma página só, afinal você quer duas vitrines na mesma página inicial, ne? Se fossem duas páginas, já temos a listagem por categoria.
Abraços
Isso mesmo, @mariovalney. Duas vitrines numa mesma página, mostrando os livros e também os discos, porém com eles separados. Envio-lhe o código do meu archive-product.php, pois gostaria que você me indicasse,por favor, qual é a parte que devo substituir por aquele loop (sample-products-loop). Obrigado.
- Esta resposta foi modificada 7 anos, 2 meses atrás por Mário Valney. Razão: Código
@ceslad você tentou procurar?
Estou perguntando isso, porque se tivesse lido sobre a WP_Query ou tivesse dado uma olhada no código, veria que no código que mandou tem um
if ( have_posts() ) :
que se parece bastante com o código do Loop que te mandei, então mesmo que não saiba nada de WordPress, dá pra chutar que seria ali.Mas então precisamos confirmar.
Faça assim: pegue da linha do começo do loop (a com o IF, que deve ser a 56 no pastebin acima) até oendif
que é o seu final (linha 110) e apague. Aí coloque qualquer coisa como “Olá, tudo bem?”.Salve e recarregue a página. Se a vitrine principal sumiu é porque é esse código aí mesmo. Se não, basta continuar procurando.
Abraços
Olá, @mariovalney, quero agradecer pela sua atenção. Bom, eu cheguei ver, sim. É que havia algumas coisas diferentes, então fiquei receoso mexer e desfigurar tudo. Mas estou procurando aprender, sou principiante. Bom, o fato é que consegui duplicar, mas o item que ordena os produtos por mais novos, menores preços, etc, sumiu. O número de paginação para ir para a próxima página também.
E para finalizar, ao duplicar o código, é claro que duplicou também os produtos. Agora não sei como deixar só os discos em um código, e os livros em outro código.- Esta resposta foi modificada 7 anos, 2 meses atrás por ceslad.
Pois não tenha medo de mexer: faça sempre backup que na hora que der errado é só voltar. Essa é a melhor forma de aprender.
Agora sobre seu problema, vamos por partes: a primeira coisa a fazer é alterar a query de cada vitrine. Para isso vamos voltar no código de exemplo:
https://docs.woocommerce.com/document/sample-products-loop/Note que nele temos a WP_Query e ela recebe parâmetros:
$args = array( 'post_type' => 'product', 'posts_per_page' => 12 ); $loop = new WP_Query( $args );
post_type é o tipo de post e como estamos fazendo um Loop dos produtos do WooCommerce você deve mantê-lo. O outro é a quantidade de posts por página, que no exemplo é 12 (e você pode remover, por enquanto).
Agora o que você deve fazer?
O primeiro passo é decidir como vai ser seu Loop. Pelo que entendi, você quer separar duas categorias de produtos, então vai usar os parâmetros de categoria:
https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
Agora você adiciona na WP_Query e vê se deu certo.
Quando fechar a questão de mostrar os produtos que quer mostrar, passamos pra parte da paginação.
Abraços
Olá, @mariovalney. Bom, existem quatro parâmetros de categorias. Eu optei pelo cat (int) – use category id.Veja como eu o enseri no código WP_Query: https://pastebin.com/Kd8vX18R
Só que, ao colocá-lo, a página de produtos some. Provavelmente, exista um parâmetro de categoria mais indicado. Qual você indicaria entre os quatro parâmetros?
O que você acha do parâmetro category_name? Ele usa o slug (nome da categoria (vinil ou livro), ao invés do id.
Até, obrigado.Qualquer um serve, mas indicaria o que usa o slug mesmo, pois aí mesmo que exclua e crie a categoria novamente não vai dar problema (pois iria gerar um novo ID, mas o slug seria o mesmo).
Sobre o seu código, só pode haver uma array de argumentos. Você está sobrescrevendo a array na hora que adiciona o parâmetro da categoria.
Deve ser assim:$args = array( 'post_type' => 'product', 'param1' => 'value 1', 'param2' => 'value 2', 'param3' => 'value 3', 'param4' => 'value 4', 'param5' => 'value 5', 'param6' => 'value 6', );
Abraços
Olá, @mariovalney, fiz as duas query, em sequência. Uma para “vinil” e outra para “livros”:
https://pastebin.com/aSgjdQpKAtualmente, uso na extensão da minha URL a palavra “SEBO” para o nome da vitrine (loja), no WooCommerce. Terei que mudar esse nome? Esses “param value” dizem respeito a quê? (Qual seria função deles?).
Agradeço, até mais.
- Esta resposta foi modificada 7 anos, 2 meses atrás por Mário Valney.
Olá.
Esses “param value” dizem respeito a quê? (Qual seria função deles?).
Eram apenas exemplos. Acho que seria interessante dar uma olhada no básico de PHP, pois é a linguagem que usamos aqui.
Atualmente, uso na extensão da minha URL a palavra “SEBO” para o nome da vitrine (loja), no WooCommerce.
Não vejo problemas. O que estamos fazendo é alterando a vitrine da loja principal, o resto se mantem.
Uma para “vinil” e outra para “livros”:
Sobre seu código, retire os param/value, pois eram apenas de exemplo.
No mais acho que está OK. Deu certo a listagem?Abraços
Oi, @mariovalney, retirei os ‘param;value’. e coloquei a category_name, como segue no exemplo: https://pastebin.com/wWnY9VKW
Coloquei no archive-product.php, do Woocommerce. Salvei, mas ao atualizei a página do site, não deu certo. Não apareceu nada.Bem, não deveria “aparecer nada”.
Ativa o DEBUG por favor, vai no
wp-config.php
e procura por WP_DEBUG e coloca true:define( 'WP_DEBUG', true );
(se já tiver “false” troca para “true”).
Assim deve aparecer algo escrito, se tiver erro.
Abraços
@mariovalney,troquei o false pelo true. Aparecem duas mensagens assim:
No products found
No products foundObservo também que com o ‘false’ definido no WP_DEBUG também aparece
No products found
No products found
- O tópico ‘WooCommerce Loja vitrine’ está fechado para novas respostas.