Removendo / comprar / de URLs WooCommerce

Nov 26 2020

Atualmente, tenho uma instalação do WooCommerce onde os URLs dos produtos são produzidos da seguinte forma:

domain.com/shop/product-category/product-name/

Devido ao SEO e à estrutura atual do site, gostaria de alterá-lo para:

domain.com/product-category/product-name/

Eu sei como remover a loja da localização atual usando o filtro woocommerce_get_breadcrumb, mas não tenho certeza de como proceder para os próprios URLs.

Tudo que encontrei no Stack Overflow são pessoas recomendando a instalação de um plugin chamado Premmerce. Este plug-in tem uma versão premium e constantemente o incomoda para atualizar: Removendo / categoria-produto / e / loja / do URL no WooCommerce

Eu gostaria de fazer isso programaticamente a partir do meu próprio plugin ou apenas functions.php

Respostas

Sefam Nov 28 2020 at 02:40

O WooCommerce impõe / product / on você se você tentar inserir apenas /% product_cat% / no painel permalinks por meio de class-wc-admin-permalink-settings.php. O wc permalinks é uma opção chamada "woocommerce_permalinks". Como desejo apenas /% product_cat% /, posso apenas forçá-lo, embora não seja a solução mais elegante:

add_action( "update_option_woocommerce_permalinks", "apply_product_cat", 10, 3 );

function apply_product_cat( $old_val, $new_val, $option_name ) { if ($option_name == "woocommerce_permalinks") {
        $new_val['product_base'] = "/%product_cat%/"; update_option( "woocommerce_permalinks", $new_val );
    }
}

O que o Premmerce faz é efetivamente oferecer a você outro painel de administração, onde eles apenas salvam nesta opção por conta própria.