[ 'name' => 'ABC Leads', 'singular_name' => 'ABC Lead', 'menu_name' => 'ABC Leads', 'add_new_item' => 'Add Lead', 'edit_item' => 'View Lead', ], 'public' => false, 'show_ui' => true, 'show_in_menu' => true, 'menu_icon' => 'dashicons-chart-line', 'supports' => ['title', 'editor', 'custom-fields'], 'capability_type' => 'post', ]); } public static function assets() { wp_enqueue_style('abc-leads', plugin_dir_url(__FILE__) . 'abc-leads.css', [], '1.0.0'); } private static function redirect_back($status) { $url = wp_get_referer() ?: home_url('/contact/'); $url = remove_query_arg(['abc_status'], $url); wp_safe_redirect(add_query_arg('abc_status', $status, $url)); exit; } public static function handle_contact() { if (!isset($_POST['abc_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['abc_nonce'])), 'abc_contact')) { self::redirect_back('invalid'); } $message = sanitize_textarea_field(wp_unslash($_POST['message'] ?? '')); $fields = [ 'name' => self::clean('name'), 'company' => self::clean('company'), 'email' => sanitize_email(wp_unslash($_POST['email'] ?? '')), 'phone' => self::clean('phone'), 'interest' => self::clean('interest'), 'newsletter' => isset($_POST['newsletter']) ? 'Da' : 'Nu', ]; if (!$fields['name'] || !$fields['email']) { self::redirect_back('missing'); } $saved = self::save_submission('Solicitare consultanță', $fields, $message); self::redirect_back(is_wp_error($saved) ? 'error' : 'contact_success'); } public static function handle_assessment() { if (!isset($_POST['abc_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['abc_nonce'])), 'abc_assessment')) { self::redirect_back('invalid'); } $message = sanitize_textarea_field(wp_unslash($_POST['notes'] ?? '')); $fields = [ 'name' => self::clean('name'), 'company' => self::clean('company'), 'email' => sanitize_email(wp_unslash($_POST['email'] ?? '')), 'company_size' => self::clean('company_size'), 'request_source' => self::clean('request_source'), 'topics' => self::clean('topics'), 'timeline' => self::clean('timeline'), ]; if (!$fields['company'] || !$fields['email']) { self::redirect_back('missing'); } $saved = self::save_submission('Evaluare ESG preliminară', $fields, $message); self::redirect_back(is_wp_error($saved) ? 'error' : 'assessment_success'); } private static function status_notice($context) { $status = isset($_GET['abc_status']) ? sanitize_key(wp_unslash($_GET['abc_status'])) : ''; if (!$status) { return ''; } $messages = [ 'invalid' => ['Nu am putut valida formularul. Vă rugăm să încercați din nou.', 'error'], 'missing' => ['Completați câmpurile obligatorii marcate cu *.', 'error'], 'error' => ['A apărut o eroare la trimitere. Vă rugăm să încercați din nou.', 'error'], 'contact_success' => ['Mulțumim. Solicitarea a fost înregistrată — vă vom contacta pentru discuția inițială.', 'success'], 'assessment_success' => ['Evaluarea preliminară a fost trimisă. Vom reveni cu pașii recomandați pentru organizarea ESG.', 'success'], ]; if (!isset($messages[$status])) { return ''; } [$msg, $type] = $messages[$status]; return self::notice($msg, $type); } private static function clean($key) { if (!isset($_POST[$key])) { return ''; } if (is_array($_POST[$key])) { return array_map('sanitize_text_field', wp_unslash($_POST[$key])); } return sanitize_text_field(wp_unslash($_POST[$key])); } private static function save_submission($type, $fields, $message = '') { $name = $fields['name'] ?? ''; $company = $fields['company'] ?? ''; $email = $fields['email'] ?? ''; $title = trim($type . ' — ' . ($company ?: $name ?: $email ?: current_time('mysql'))); $content = $message ? wp_kses_post($message) : ''; $post_id = wp_insert_post([ 'post_type' => self::CPT, 'post_status' => 'private', 'post_title' => $title, 'post_content' => $content, ], true); if (is_wp_error($post_id)) { return $post_id; } update_post_meta($post_id, '_abc_type', $type); foreach ($fields as $key => $value) { update_post_meta($post_id, '_abc_' . sanitize_key($key), is_array($value) ? implode(', ', $value) : $value); } update_post_meta($post_id, '_abc_submitted_at', current_time('mysql')); return $post_id; } private static function notice($text, $type = 'success') { return '
' . esc_html($text) . '
'; } public static function contact_form() { $notice = self::status_notice('contact'); if (false && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['abc_form_type']) && $_POST['abc_form_type'] === 'contact') { if (!isset($_POST['abc_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['abc_nonce'])), 'abc_contact')) { $notice = self::notice('Nu am putut valida formularul. Vă rugăm să încercați din nou.', 'error'); } else { $message = sanitize_textarea_field(wp_unslash($_POST['message'] ?? '')); $fields = [ 'name' => self::clean('name'), 'company' => self::clean('company'), 'email' => sanitize_email(wp_unslash($_POST['email'] ?? '')), 'phone' => self::clean('phone'), 'interest' => self::clean('interest'), 'newsletter' => isset($_POST['newsletter']) ? 'Da' : 'Nu', ]; if (!$fields['name'] || !$fields['email']) { $notice = self::notice('Completați cel puțin numele și adresa de email.', 'error'); } else { $saved = self::save_submission('Solicitare consultanță', $fields, $message); $notice = is_wp_error($saved) ? self::notice('A apărut o eroare la trimitere. Vă rugăm să încercați din nou.', 'error') : self::notice('Mulțumim. Solicitarea a fost înregistrată — vă vom contacta pentru discuția inițială.'); } } } ob_start(); ?>

Răspunsurile sunt salvate securizat în zona de administrare WordPress pentru follow-up.

self::clean('name'), 'company' => self::clean('company'), 'email' => sanitize_email(wp_unslash($_POST['email'] ?? '')), 'company_size' => self::clean('company_size'), 'request_source' => self::clean('request_source'), 'topics' => self::clean('topics'), 'timeline' => self::clean('timeline'), ]; if (!$fields['company'] || !$fields['email']) { $notice = self::notice('Completați cel puțin compania și adresa de email.', 'error'); } else { $saved = self::save_submission('Evaluare ESG preliminară', $fields, $message); $notice = is_wp_error($saved) ? self::notice('A apărut o eroare la trimitere. Vă rugăm să încercați din nou.', 'error') : self::notice('Evaluarea preliminară a fost trimisă. Vom reveni cu pașii recomandați pentru organizarea ESG.'); } } } ob_start(); ?>
Ce informații trebuie organizate?
$columns['cb'], 'title' => 'Lead', 'abc_type' => 'Tip', 'abc_company' => 'Companie', 'abc_email' => 'Email', 'date' => 'Data', ]; } public static function column_content($column, $post_id) { $map = [ 'abc_type' => '_abc_type', 'abc_company' => '_abc_company', 'abc_email' => '_abc_email', ]; if (isset($map[$column])) { echo esc_html(get_post_meta($post_id, $map[$column], true)); } } public static function sortable_columns($columns) { $columns['abc_type'] = 'abc_type'; return $columns; } } ABC_Leads_Plugin::init();