WooCommerce Bookings: Exibir Detalhes de Reserva com Shortcode

Este snippet permite exibir os detalhes completos de uma reserva do WooCommerce com base no ID do pedido fornecido na URL. Inclui informações sobre o pedido, cliente e detalhes específicos da reserva, oferecendo uma visão abrangente e fácil de entender para os usuários.

 

0
				
					function get_booking_status_name($status) {
    $statuses = [
        'pending'    => 'Pendente',
        'confirmed'  => 'Confirmado',
        'paid'       => 'Pago',
        'unpaid'     => 'Não Pago',
        'cancelled'  => 'Cancelado',
        'complete'   => 'Completo',
    ];
    return isset($statuses[$status]) ? $statuses[$status] : $status;
}

function get_person_type_name($person_type_id) {
    $person_types = [
        6414 => 'Crianças',
        6415 => 'Adultos',
    ];
    return isset($person_types[$person_type_id]) ? $person_types[$person_type_id] : 'Desconhecido';
}

function wc_booking_details_shortcode() {
    if ( ! isset( $_GET['pedido'] ) ) {
        return '<p>ID do pedido não fornecido.</p>';
    }

    $order_id = intval( $_GET['pedido'] );
    $order = wc_get_order( $order_id );

    if ( ! $order ) {
        return '<p>Pedido não encontrado.</p>';
    }

    // Recuperar dados da reserva associada ao pedido
    $booking_ids = WC_Booking_Data_Store::get_booking_ids_from_order_id( $order_id );

    if ( empty( $booking_ids ) ) {
        return '<p>Reserva não encontrada para este pedido.</p>';
    }

    $booking_id = $booking_ids[0]; // Assumindo que há apenas uma reserva por pedido
    $booking = new WC_Booking( $booking_id );

    // Recuperar dados do cliente
    $customer_id = $order->get_customer_id();
    $customer = new WP_User( $customer_id );

    // Recuperar dados adicionais do cliente
    $customer_email = $customer->user_email;
    $customer_phone = get_user_meta( $customer_id, 'billing_phone', true );
    $customer_cpf = get_user_meta( $customer_id, 'billing_cpf', true ); // Presumindo que o CPF está salvo como 'billing_cpf'

    // Recuperar dados específicos da reserva
    $persons = $booking->get_persons();

    // Verificar se o produto é reservável e está ativo/publicado
    $product = $booking->get_product();
    if ( $product && $product->get_type() === 'accommodation-booking' && $product->is_visible() ) {
        $product_name = $product->get_name();
    } else {
        $product_name = 'N/D';
    }

    ob_start();
    ?>
    <div class="wc-booking-details">
        <h2>Detalhes da Reserva n° </h2>

        <div class="booking-section">
            <h3>Detalhes Gerais</h3>
            <table>
                <tr>
                    <td><strong>ID do Pedido:</strong></td>
                    <td> – get_date_created() ) ); ?></td>
                </tr>
                <tr>
                    <td><strong>Data de criação:</strong></td>
                    <td>get_date_created() ) ); ?> @ get_date_created() ) ); ?></td>
                </tr>
                <tr>
                    <td><strong>Estado da Reserva:</strong></td>
                    <td>get_status() ); ?></td>
                </tr>
                <tr>
                    <td><strong>Cliente:</strong></td>
                    <td>display_name; ?> (#)</td>
                </tr>
                <tr>
                    <td><strong>Email:</strong></td>
                    <td></td>
                </tr>
                <tr>
                    <td><strong>Telefone:</strong></td>
                    <td></td>
                </tr>
                <tr>
                    <td><strong>CPF:</strong></td>
                    <td></td>
                </tr>
            </table>
        </div>

        <div class="booking-section">
            <h3>Especificação da Reserva</h3>
            <table>
                <tr>
                    <td><strong>Produto reservado:</strong></td>
                    <td></td>
                </tr>
                <tr>
                    <td><strong>ID da reserva pai:</strong></td>
                    <td>get_parent_id() ? $booking->get_parent_id() : 'N/A'; ?></td>
                </tr>
            </table>
        </div>

        <div class="booking-section">
            <h3>Pessoa(s)</h3>
            <table>
                
                     $count ) : ?>
                        <tr>
                            <td><strong>:</strong></td>
                            <td></td>
                        </tr>
                    
                
                    <tr>
                        <td><strong>Pessoas:</strong></td>
                        <td>Não especificado</td>
                    </tr>
                
            </table>
        </div>

        <div class="booking-section">
            <h3>Horário e data da reserva</h3>
            <table>
                <tr>
                    <td><strong>Data inicial:</strong></td>
                    <td>get_start() ); ?></td>
                </tr>
                <tr>
                    <td><strong>Data final:</strong></td>
                    <td>get_end() ); ?></td>
                </tr>
                <tr>
                    <td><strong>Reserva para o dia todo:</strong></td>
                    <td>is_all_day() ? 'Sim' : 'Não'; ?></td>
                </tr>
            </table>
        </div>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode( 'wc_booking_details', 'wc_booking_details_shortcode' );

				
			

Quer ajuda de um especialista para implementar?

Instruções de Uso

Este snippet cria um shortcode [wc_booking_details] que exibe os detalhes de uma reserva do WooCommerce baseada no ID do pedido fornecido na URL. Inclui informações sobre o pedido, cliente e detalhes da reserva.

Como funciona:

  1. Funções Auxiliares:
    • get_booking_status_name($status): Converte o status da reserva em um nome legível.
    • get_person_type_name($person_type_id): Converte o ID do tipo de pessoa em um nome legível.
  2. Função do Shortcode:
    • function wc_booking_details_shortcode() { ... }: Define a função wc_booking_details_shortcode que gera o HTML para os detalhes da reserva.
  3. Verificação e Recuperação do Pedido:
    • if ( ! isset( $_GET['pedido'] ) ) { ... }: Verifica se o ID do pedido foi fornecido na URL.
    • $order_id = intval( $_GET['pedido'] );: Obtém o ID do pedido da URL.
    • $order = wc_get_order( $order_id );: Recupera o pedido pelo ID.
  4. Verificação e Recuperação da Reserva:
    • $booking_ids = WC_Booking_Data_Store::get_booking_ids_from_order_id( $order_id );: Recupera os IDs das reservas associadas ao pedido.
    • $booking = new WC_Booking( $booking_id );: Recupera os detalhes da reserva.
  5. Recuperação de Dados do Cliente:
    • $customer_id = $order->get_customer_id();: Obtém o ID do cliente.
    • $customer = new WP_User( $customer_id );: Recupera os detalhes do cliente.
    • $customer_email = $customer->user_email;: Recupera o email do cliente.
    • $customer_phone = get_user_meta( $customer_id, 'billing_phone', true );: Recupera o telefone do cliente.
    • $customer_cpf = get_user_meta( $customer_id, 'billing_cpf', true );: Recupera o CPF do cliente.
  6. Recuperação de Dados Específicos da Reserva:
    • $persons = $booking->get_persons();: Recupera o número de pessoas na reserva.
    • $product = $booking->get_product();: Recupera o produto reservado.
  7. Geração do HTML:
    • Utiliza ob_start() e ob_get_clean() para capturar o HTML gerado e retornar como string.
    • Estrutura o HTML em seções para exibir os detalhes gerais, especificações da reserva, informações das pessoas e horários/datas da reserva.
  8. Registro do Shortcode:
    • add_shortcode( 'wc_booking_details', 'wc_booking_details_shortcode' );: Registra o shortcode [wc_booking_details] no WordPress.

Instruções de Uso

  1. Adicione o código ao arquivo functions.php do seu tema ou em um plugin específico.
  2. Use o shortcode [wc_booking_details] em uma página ou post onde deseja exibir os detalhes da reserva.
  3. Certifique-se de que a URL inclui o parâmetro pedido com o ID do pedido, por exemplo: https://seusite.com/sua-pagina?pedido=1234.

Outros Snippets

WordPress
Este snippet redireciona todos os visitantes do site que não estejam logados para uma página específica (não a página de login).
WordPress
Este snippet redireciona todos os visitantes do site que não estejam logados para a página de login do WordPress. Isso é útil se você deseja restringir o acesso ao conteúdo do seu site apenas para usuários autenticados.
WordPress
Este snippet cria um shortcode que exibe uma avaliação por estrelas baseada em um campo personalizado de um post no WordPress.

Últimos Posts

Conclusão: Resumo e Próximos Passos no Desenvolvimento WordPress

Conclusão: Resumo e Próximos Passos no Desenvolvimento WordPress

Resumo dos principais pontos do desenvolvimento WordPress e próximos passos para continuar aprendendo e evoluindo como desenvolvedor. Guia final para iniciantes e intermediários!

Recursos e Comunidade: Onde Buscar Suporte e Continuar Aprendendo

Recursos e Comunidade: Onde Buscar Suporte e Continuar Aprendendo

Descubra onde buscar suporte e continuar aprendendo sobre WordPress com comunidades online, fóruns de suporte, blogs, cursos e documentações oficiais. Guia completo para iniciantes e intermediários!

Desenvolvimento WordPress como Profissão: Vale a Pena?

Desenvolvimento WordPress como Profissão: Vale a Pena?

Descubra se vale a pena seguir uma carreira em desenvolvimento WordPress, explore os potenciais de ganho, como gerar renda e os melhores investimentos em conhecimento e habilidades. Guia completo para aspirantes a desenvolvedor WordPress.

Otimização para SEO e Performance no WordPress

Otimização para SEO e Performance no WordPress

Aprenda técnicas essenciais de otimização para SEO e performance no WordPress. Melhore a visibilidade e a velocidade do seu site com práticas recomendadas para desenvolvedores e administradores de sites.

Segurança no Desenvolvimento WordPress: Mantendo seu Site Seguro

Segurança no Desenvolvimento WordPress: Mantendo seu Site Seguro

Descubra práticas recomendadas para manter seu site WordPress seguro e conheça os plugins essenciais de segurança. Guia completo para desenvolvedores!

Explorando a REST API do WordPress: Integrações e Funcionalidades Avançadas

Descubra o que é a REST API do WordPress, por que é importante e como usá-la para integrar WordPress com outras aplicações. Guia completo para iniciantes e intermediários!

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Você precisa estar logado para ver esta informação.

Adicione seu Snippet

Título *
Resumo *
Descrição Completa *
Código *
Instruções de uso *

Solicitar Orçamento

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! 

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!