Função para adicionar uma nova aba na conta do WooCommerce

11 de setembro de 2023
// Função para adicionar uma nova aba na conta do WooCommerce
function adicionar_aba_personalizada( $items ) {
    $new_items = array();
    
    // Loop pelos itens existentes
    foreach ( $items as $key => $value ) {
        $new_items[ $key ] = $value;

        // Aqui, estamos verificando a posição onde a nova aba será inserida.
        // No exemplo atual, a nova aba será adicionada após a aba 'orders' (Pedidos).
        // Você pode controlar a posição alterando a condição abaixo.
        // Por exemplo:
        // - Para adicionar após a aba 'downloads', use: if ( 'downloads' === $key )
        // - Para adicionar no início, antes de todas as abas, adicione a nova aba fora deste loop.
        // - Para adicionar no final, após todas as abas, adicione a nova aba após o loop.
        if ( 'orders' === $key ) {
            $new_items['aba-teste'] = __( 'Aba Teste', 'woocommerce' );
        }
    }
    
    return $new_items;
}
add_filter( 'woocommerce_account_menu_items', 'adicionar_aba_personalizada' );


// Função para adicionar o novo endpoint
function adicionar_endpoint_personalizado() {
    // Adiciona o endpoint. Altere 'aba-teste' para o slug da sua aba
    add_rewrite_endpoint( 'aba-teste', EP_ROOT | EP_PAGES );
}
add_action( 'init', 'adicionar_endpoint_personalizado' );

// Função para exibir o conteúdo na nova aba
function exibir_conteudo_aba_personalizada() {
    // Altere os títulos, descrições e shortcodes conforme necessário
    echo '<h2>Título da Aba Teste</h2>'; 
    echo '<p>Descrição da Aba Teste</p>'; 
    echo do_shortcode('[seu_shortcode_aqui]');    
}
add_action('woocommerce_account_aba-teste_endpoint', 'exibir_conteudo_aba_personalizada');

// Função para atualizar as regras de reescrita automaticamente
function atualizar_regras_ao_ativar_tema() {
    adicionar_endpoint_personalizado();
    flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'atualizar_regras_ao_ativar_tema' );
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );

Comentários 0

Deixe um comentário

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *