Como ocultar um produto no WooCommerce ou ocultar produtos por categoria ou funções
Publicados: 2020-02-24Existem muitas maneiras que você pode usar para ocultar um produto específico no WooCommerce e neste post; vamos explorar cada uma dessas maneiras de ocultar um produto no WooCommerce. Existem várias razões pelas quais você deve considerar ocultar um produto da loja WooCommerce, mas o topo da lista é quando o produto está fora de estoque ou quando o produto está reservado para clientes específicos ou funções de usuário.
Ocultar produto WooCommerce
Se você deseja ocultar produtos fora de estoque, primeiro considere adicionar a etiqueta de falta de estoque no produto em vez de ocultar o produto.
No entanto, se você ainda deseja ocultar esses produtos esgotados ou quaisquer outros produtos WooCommerce, compartilharei neste post como você pode ocultar produtos por ID, nome ou categoria.
Ocultar o produto WooCommerce usando opções
O WooCommerce por padrão vem com uma excelente opção que permite aos usuários controlar a visibilidade de um produto.
Você pode criar um produto oculto no WooCommerce controlando a opção de visibilidade antes de publicar a imagem. Para ocultar o produto no WooCommerce usando visibilidade, você precisa seguir as seguintes etapas:
- Faça login no painel do seu site WordPress
- Clique no menu de produtos conforme mostrado na imagem abaixo para acessar o produto que deseja ocultar dos usuários usando uma opção de visibilidade.
- Selecione o produto da lista de todos os produtos que deseja ocultar conforme mostrado abaixo e clique em editar para acessar a tela de edição do produto:
- Na tela de edição do produto no lado direito sob a metabox de publicação abaixo, há uma opção chamada 'Visibilidade do catálogo' Clique neste link e um menu suspenso com opções aparecerá e a última opção será Oculta.
Ao marcar esta opção de rádio e clicar em ok, atualize a postagem, o produto ficará oculto do catálogo da loja. Conforme ilustrado nestas três etapas (1,2,3): - Ao salvar essas opções e atualizar a postagem, a visibilidade do produto será definida como oculta, como você pode ver no frontend da loja:
- Se você marcar a opção de visibilidade do catálogo no back-end na tela de edição do produto, verá que foi atualizado para oculto quando a postagem foi atualizada:
Esta é a maneira mais rápida de ocultar um produto WooCommerce do catálogo da loja. Existem outras maneiras que você pode usar, como adicionar código ao tema filho. Vamos explorar mais opções que você pode usar para ocultar produtos no WooCommerce.
Woocommerce Ocultar produtos de categoria específica da página da loja
Se você deseja ocultar produtos específicos da página da loja no WooCommerce, pode fazer isso usando um gancho de ação que direciona a consulta da página da loja 'woocommerce_product_query'.
A função de retorno de chamada deve usar $tax_query para restringir os termos associados ao produto que você deseja ocultar.
Nesse caso, a chave de termos na matriz $tax_query é equivalente à categoria/tag, conforme expliquei no post como obter a categoria atual de produtos WooCommerce.
Suponha que queremos ocultar este produto da categoria 'autopeças'.
Podemos usar o seguinte trecho de código adicionado ao arquivo functions.php para ocultar o produto da página da loja:
/** * Esconda o produto WooCommerce por categoria da página da loja. * * @param $q */ add_action( 'woocommerce_product_query', 'njengah_hide_product_by_category_shop_page' ); function njengah_hide_product_by_category_shop_page( $q ) { $tax_query = (array) $q->get( 'tax_query'); $tax_query[] = array( 'taxonomia' => 'produto_cat', 'campo' => 'slug', 'terms' => array( 'uncategorised','auto-parts'), // Não exibe produtos na categoria 'autopeças' na página da loja. 'operador' => 'NOT IN' ); $q->set('consulta_tax', $consulta_tax); }
Adicione este código às funções do tema e você pode substituir a categoria 'autopeças' por qualquer outra categoria que você deseja ocultar produtos e isso efetivamente ocultará os produtos dessa categoria na página da loja, conforme mostrado abaixo:
WooCommerce ocultar produtos a menos que esteja logado
Outra maneira comum de ocultar produtos no WooCommerce envolve a restrição da visibilidade do produto com base no status do usuário registrado ou não.
O primeiro passo é obviamente verificar se o usuário está logado. Expliquei em detalhes aqui – como verificar se o usuário está logado no WordPress.
Vamos usar este código para verificar o status de login e combiná-lo com a consulta para ocultar os produtos WooCommerce condicionalmente, dependendo do status de login do usuário.
O código deve ser o seguinte:
** * Ocultar o produto WooCommerce se o usuário não estiver logado * * @param $consulta */ function njengah_hide_product_if_user_not_logged( $query) { if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) { $tax_query = array( variedade( 'taxonomia' => 'produto_cat', 'campo' => 'slug', 'terms' => array( 'uncategorised','auto-parts'), // Não exibe produtos na categoria 'autopeças' na página da loja. 'operador'=> 'NOT IN' // exclui ) ); $consulta->set('consulta_tax', $consulta_tax); } } add_action( 'pre_get_posts', 'njengah_hide_product_if_user_not_logged' );
Como você pode ver, estamos verificando condicionalmente se o usuário está logado usando a função is_user_logged_in() antes de prosseguirmos com a consulta.
Woocommerce Ocultar Produtos por Funções de Usuário
Você também pode ocultar os produtos pelas funções do usuário. Você precisa primeiro obter o usuário conectado no momento e sua função de usuário, conforme descrevi no tutorial anterior sobre como obter a função de usuário atual no WordPress . Este código para obter a função do usuário é simplesmente o seguinte:
$usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel $roles[0] //função do usuário atual
Devemos combinar este código com a ação pre_get_posts anterior e o código que ocultará o produto para todos os usuários que esperam que o administrador seja o seguinte:
/** * Ocultar o produto WooCommerce pela função do usuário, como neste caso, apenas o administrador pode ver este produto * * @param $consulta */ function njengah_hide_product_by_user_role( $query) { $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual $roles = (array) $user->roles; //obtendo o papel if ( $query->is_main_query() && is_woocommerce() && $roles[0] != 'administrador' ) { $tax_query = array( variedade( 'taxonomia' => 'produto_cat', 'campo' => 'slug', 'terms' => array( 'uncategorised','auto-parts'), // Não exibe produtos na categoria 'autopeças' na página da loja. 'operador'=> 'NOT IN' // exclui ) ); $consulta->set('consulta_tax', $consulta_tax); } } add_action( 'pre_get_posts', 'njengah_hide_product_by_user_role' );
Como você pode ver nesta linha de código onde estamos verificando condicionalmente a consulta, eu introduzi a condição para verificar se a função do usuário não é admin – $roles[0] != 'administrator' então continuamos com a consulta. É assim que você oculta os produtos WooCommerce com base na função do usuário.
Você pode expor este exemplo para atender às suas necessidades específicas e também pode combinar todos esses casos para criar uma maneira condicional de ocultar produtos WooCommerce.
Pensamentos finais
Nesta postagem, destacamos as três maneiras comuns de ocultar produtos WooCommerce que incluem ocultar por função de usuário, ocultar produtos, a menos que o usuário esteja logado e ocultar os produtos WooCommerce sem nenhuma dessas condições. Também descrevemos a maneira mais simples de ocultar produtos WooCommerce usando a opção de visibilidade do catálogo fornecida na tela de edição do produto. Espero que agora você possa implementar facilmente qualquer uma dessas soluções para ocultar os produtos WooCommerce da sua loja.