Descobri isso. Eu estava faltando alguns parâmetros necessários para adicionar um produto variável ao meu carrinho. Os parâmetros ausentes são o variation_id
e o tipo de atributo ao qual o variation_id
está se referindo. O ID da variação pode ser encontrado no diretório admin > woocomerce > produtos e na guia Variações, ao lado da variação do produto que você criou.
O atributo param é formado pelo prefixo attribute_
e, em seguida, pelo nome do atributo higienizado. Por exemplo, meu atributo é chamado de Stock Colors, então meu tipo de atributo param é attribute_stock-colors. Pelo que eu posso dizer, você acabou de definir attribute_stock-colors=1
porque o método "adicionar ao carrinho" apenas verifica se ele existe.
Veja um exemplo simples de um link que adiciona um produto ao carrinho com o ID de variação 261 de cores de ações:
<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=261&attribute_stock-colors=1">Add to Cart</a>
Para usar isso em uma situação real, você precisaria definir o tipo de atributo e o ID de variação dinamicamente a partir das opções escolhidas pelo usuário em um menu suspenso ou algo parecido (a menos que cada produto tenha a mesma variação, o que basicamente faria com que um produto simpel).