Suporte » Ajustando o WordPress » Como mostrar produtos fora de estoque por último? – woocommerce

  • Resolvido fraziinha

    (@fraziinha)


    Olá, gostaria de saber se alguém usa woocommerce e se sabe como fazer com que, conforme os produtos vão saindo de estoque, eles apareçam por último nas páginas.

    Eu tentei achar plugin pra isso, mas não consegui.

    Tentei pesquisar e a única coisa qua achei foi nesse site: https://premium.wpmudev.org/forums/topic/change-query-for-out-of-stock-products-woocommerce falando sobre query. Mas como não desenvolvo/programo, mesmo achando no wp-includes um documento de query, eu não tenho coragem de ficar “testando” porque eu sei que posso fazer besteira e, pra começar, eu não sei nem onde deveria colar o código (então isso deve ser um sinal pra não sair mexendo sem auxílio), e também a resposta essa na página do que acho ser um tema ou algo assim, então talvez não funcione no meu site.

    Será que alguém sabe como me ajudar com isso?
    Obrigada!!

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • Criador do tópico fraziinha

    (@fraziinha)

    Resolvido através de php =)

    Preciso disto também, se importa em compartilhar a solução ?

    Obrigado!!

    Criador do tópico fraziinha

    (@fraziinha)

    Oi Haruel, imagina, claro que não =)

    Você sabe mexer no .php do seu site/loja? Usa esse Snippet em functions no seu tema. Talvez você queira usar uma ChildTheme também pra manter essa alteração quando for atualizar o seu tema.

    Segue:

    <?php
    
    /**
     * Order product collections by stock status, instock products first.
     */
    class iWC_Orderby_Stock_Status
    {
    
        public function __construct()
        {
            // Check if WooCommerce is active
            if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
                add_filter('posts_clauses', array($this, 'order_by_stock_status'), 2000);
            }
        }
    
        public function order_by_stock_status($posts_clauses)
        {
            global $wpdb;
            // only change query on WooCommerce loops
            if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) {
                $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
                $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
                $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
            }
            return $posts_clauses;
        }
    }
    
    new iWC_Orderby_Stock_Status;
    
    ?>

    Nossa muito obrigado vou testar agora!

    Funcionou!!! Muito obrigado novamente!

    Criador do tópico fraziinha

    (@fraziinha)

    Imagina, fico feliz que tenha dado certo! ^^

    Como exibir a frase “Fora de estoque” no lugar do preço, nesse produto que foi para o fim da lista?

    Criador do tópico fraziinha

    (@fraziinha)

    Oi @tianojunio, tudo bem?

    Talvez seja melhor você criar um novo tópico para a pergunta. A minha dúvida já está como “resolvido” e por isso as pessoas não irão ver que você fez uma pergunta – ou pelo menos acredito que as possibilidades sejam menores.

    Bom fim de semana =)

    Boa tarde!
    Funcionou perfeitamente @fraziinha porem meu FOOTER desapareceu, quando desabilito ele no snippet o footer volta.

    Sabe me ajudar??

    Criador do tópico fraziinha

    (@fraziinha)

    Oi Guilherme, boa tarde. Desculpe eu não tive esse problema do footer, mas talvez tenha colocado na área certa mas na linha errada? Tente ver se não pode ser algo assim.

    Minha sugestão também seria criar um novo tópico. Pois como esse está “resolvido” as pessoas provavelmente não irão conseguir ver para ajudar.

    Um ótima semana =)

    guidelorenzo

    (@guidelorenzo)

    Franziinha, eu inseri e meu site parou de funcionar. Ficava em branco.
    Só voltou quando eu tirei o código.

    Sabe me dizer o que pode estar acontecendo?

    guidelorenzo

    (@guidelorenzo)

    ops, via email..

    fraziinha (@fraziinha) Parabéns e muito obrigado… fiquei um bom tempo batendo cabeça para resolver isso.

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • O tópico ‘Como mostrar produtos fora de estoque por último? – woocommerce’ está fechado para novas respostas.