0
X
Add Snippet To Project
New Project
Add To Existing Project
<?php
/**
* Plugin Name: Orçamento Plugin
* Description: Plugin para criação de orçamentos no WooCommerce.
* Version: 1.0
* Author: Seu Nome
* Author URI: https://www.seusite.com
* Text Domain: wpturbo
*/
// Adiciona um novo metabox na tela de edição do WooCommerce para inserir as informações do orçamento
function wpturbo_add_custom_fields() {
add_meta_box(
'wpturbo_custom_fields',
'Informações do Orçamento',
'wpturbo_render_custom_fields',
'product',
'normal',
'default'
);
}
add_action('add_meta_boxes', 'wpturbo_add_custom_fields');
// Renderiza os campos personalizados na tela de edição do WooCommerce
function wpturbo_render_custom_fields() {
global $post;
$custom_fields = get_post_meta($post->ID, 'wpturbo_custom_fields', true);
$client_name = isset($custom_fields['client_name']) ? $custom_fields['client_name'] : '';
$client_phone = isset($custom_fields['client_phone']) ? $custom_fields['client_phone'] : '';
$client_email = isset($custom_fields['client_email']) ? $custom_fields['client_email'] : '';
$client_address = isset($custom_fields['client_address']) ? $custom_fields['client_address'] : '';
$client_observation = isset($custom_fields['client_observation']) ? $custom_fields['client_observation'] : '';
$client_discount = isset($custom_fields['client_discount']) ? $custom_fields['client_discount'] : '';
// Renderiza os campos personalizados na tela de edição do WooCommerce
?>
<div class="wpturbo-custom-fields">
<div class="wpturbo-field">
<label for="client_name">Nome do Cliente:</label>
<input type="text" id="client_name" name="wpturbo_custom_fields[client_name]" value="<?php echo esc_attr($client_name); ?>">
</div>
<div class="wpturbo-field">
<label for="client_phone">Telefone do Cliente:</label>
<input type="text" id="client_phone" name="wpturbo_custom_fields[client_phone]" value="<?php echo esc_attr($client_phone); ?>">
</div>
<div class="wpturbo-field">
<label for="client_email">Email do Cliente:</label>
<input type="email" id="client_email" name="wpturbo_custom_fields[client_email]" value="<?php echo esc_attr($client_email); ?>">
</div>
<div class="wpturbo-field">
<label for="client_address">Endereço de Entrega:</label>
<textarea id="client_address" name="wpturbo_custom_fields[client_address]"><?php echo esc_textarea($client_address); ?></textarea>
</div>
<div class="wpturbo-field">
<label for="client_observation">Observações:</label>
<textarea id="client_observation" name="wpturbo_custom_fields[client_observation]"><?php echo esc_textarea($client_observation); ?></textarea>
</div>
<div class="wpturbo-field">
<label for="client_discount">Desconto:</label>
<input type="text" id="client_discount" name="wpturbo_custom_fields[client_discount]" value="<?php echo esc_attr($client_discount); ?>">
</div>
</div>
<?php
}
// Salva os valores dos campos personalizados
function wpturbo_save_custom_fields($post_id) {
if (isset($_POST['wpturbo_custom_fields'])) {
$custom_fields = $_POST['wpturbo_custom_fields'];
update_post_meta($post_id, 'wpturbo_custom_fields', $custom_fields);
}
}
add_action('save_post', 'wpturbo_save_custom_fields');
// Gera o PDF com os dados do orçamento
function wpturbo_generate_pdf($order_id) {
$order = wc_get_order($order_id);
$client_name = get_post_meta($order_id, 'wpturbo_custom_fields', true)['client_name'];
$client_phone = get_post_meta($order_id, 'wpturbo_custom_fields', true)['client_phone'];
$client_email = get_post_meta($order_id, 'wpturbo_custom_fields', true)['client_email'];
$client_address = get_post_meta($order_id, 'wpturbo_custom_fields', true)['client_address'];
$client_observation = get_post_meta($order_id, 'wpturbo_custom_fields', true)['client_observation'];
$client_discount = get_post_meta($order_id, 'wpturbo_custom_fields', true)['client_discount'];
// Código para gerar o PDF com os dados do orçamento
// Envia o email para o cliente
$to = $client_email;
$subject = 'Orçamento Gerado';
$message = 'Olá, você recebeu um novo orçamento. Verifique em sua conta.';
wp_mail($to, $subject, $message);
}
// Cria o pedido no WooCommerce com status "pendente" após a criação do orçamento
function wpturbo_create_order($order_id) {
$order = wc_get_order($order_id);
$order->update_status('pending');
}
// Adiciona os ganchos para chamar as funções nos botões apropriados
function wpturbo_add_hooks() {
add_action('woocommerce_checkout_order_processed', 'wpturbo_generate_pdf');
add_action('woocommerce_checkout_order_processed', 'wpturbo_create_order');
}
add_action('wp_loaded', 'wpturbo_add_hooks');
Explicação:
Plugins sugeridos para otimizar a produção dessa aplicação:
Lembre-se de instalar e ativar esses plugins antes de usar o código acima. Certifique-se também de personalizar o código de acordo com suas necessidades.