post_type === 'domain') { wp_enqueue_style( 'rl-mailwarmer-admin-css', RL_MAILWARMER_URL . '/css/admin-style.css', // Path to your CSS file [], '1.0.0' // Version number ); wp_enqueue_script('rl-mailwarmer-admin-script', RL_MAILWARMER_URL . '/js/admin-check-domain-health.js', ['jquery'], null, true); wp_localize_script('rl-mailwarmer-admin-script', 'rlMailWarmer', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('check_domain_health_nonce'), 'post_id' => $post->ID ]); wp_enqueue_script('rl-mailwarmer-spf-script', RL_MAILWARMER_URL . '/js/admin-update-spf.js', ['jquery'], null, true); wp_localize_script('rl-mailwarmer-spf-script', 'rlMailWarmerSpf', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('update_spf_record_nonce'), 'post_id' => $post->ID ]); wp_enqueue_script('rl-mailwarmer-dmarc-script', RL_MAILWARMER_URL . '/js/admin-update-dmarc.js', ['jquery'], null, true); wp_localize_script('rl-mailwarmer-dmarc-script', 'rlMailWarmerDmarc', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('update_dmarc_record_nonce'), 'post_id' => $post->ID ]); wp_enqueue_script('rl-mailwarmer-dkim-script', RL_MAILWARMER_URL . '/js/admin-update-dkim.js', ['jquery'], null, true); wp_localize_script('rl-mailwarmer-dkim-script', 'rlMailWarmerDkim', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('update_dkim_record_nonce'), 'post_id' => $post->ID ]); wp_enqueue_script('rl-mailwarmer-dns-fix-script', RL_MAILWARMER_URL . '/js/admin-fix-dns.js', ['jquery'], null, true); wp_localize_script('rl-mailwarmer-dns-fix-script', 'rlMailWarmerDnsFix', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('fix_deliverability_dns_issues_nonce'), 'post_id' => $post->ID ]); wp_enqueue_script('rl-mailwarmer-dns-backup', RL_MAILWARMER_URL . '/js/admin-dns-backup.js' , ['jquery'], null, true); wp_localize_script('rl-mailwarmer-dns-backup', 'rlMailWarmerDnsBackup', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('create_dns_backup_nonce'), ]); } } }); /** * Add "Check Domain Health" button to the sidebar of the domain edit screen. */ add_action('add_meta_boxes', function () { add_meta_box( 'check_domain_health_box', __('Check Domain Health', 'rl-mailwarmer'), 'rl_mailwarmer_check_domain_health_box_callback', 'domain', 'side', 'default' ); add_meta_box( 'create_dns_backup_box', __('Create DNS Backup', 'rl-mailwarmer'), 'rl_mailwarmer_render_create_dns_backup_box', 'domain', 'side', 'default' ); add_meta_box( 'fix_deliverability_dns_issues_box', // Meta box ID __('Fix Deliverability DNS Issues', 'rl-mailwarmer'), // Title 'rl_mailwarmer_render_fix_deliverability_dns_issues_box', // Callback function 'domain', // Post type 'side', // Context 'default' // Priority ); add_meta_box( 'update_spf_record_box', // Meta box ID __('Update SPF Record', 'rl-mailwarmer'), // Title 'rl_mailwarmer_render_update_spf_record_box', // Callback function 'domain', // Post type 'side', // Context 'default' // Priority ); add_meta_box( 'update_dmarc_record_box', // Meta box ID __('Update DMARC Record', 'rl-mailwarmer'), // Title 'rl_mailwarmer_render_update_dmarc_record_box', // Callback function 'domain', // Post type 'side', // Context 'default' // Priority ); add_meta_box( 'update_dkim_record_box', // Meta box ID __('Update DKIM Record', 'rl-mailwarmer'), // Title 'rl_mailwarmer_render_update_dkim_record_box', // Callback function 'domain', // Post type 'side', // Context 'default' // Priority ); }); /** * Callback for the "Check Domain Health" meta box. */ function rl_mailwarmer_check_domain_health_box_callback($post) { // Add nonce for security wp_nonce_field('check_domain_health_nonce', 'check_domain_health_nonce_field'); // Render the button echo '

'; echo ''; echo '

'; // Output a placeholder for results echo '
'; } /** * Render the meta box for DNS backup. * * @param WP_Post $post The current post object. */ function rl_mailwarmer_render_create_dns_backup_box($post) { // Add a nonce field for security wp_nonce_field('create_dns_backup_nonce', 'create_dns_backup_nonce_field'); // Render the button ?>



















__('Domain Name', 'rl-mailwarmer'), 'domain_valid' => __('Valid', 'rl-mailwarmer'), 'domain_age' => __('Age', 'rl-mailwarmer'), 'domain_days_to_expiration' => __('Days to Expiration', 'rl-mailwarmer'), 'a_record_valid' => __('A Record Valid', 'rl-mailwarmer'), 'a_record_resolves' => __('A Record Resolves To', 'rl-mailwarmer'), 'http_status' => __('HTTP Status', 'rl-mailwarmer'), 'https_enabled' => __('HTTPS Enabled', 'rl-mailwarmer'), 'mx_record_valid' => __('MX Valid', 'rl-mailwarmer'), 'mx_record_ptr_valid' => __('PTR Valid', 'rl-mailwarmer'), 'mx_record_ptr_match' => __('PTR Matches', 'rl-mailwarmer'), 'spf_record_exists' => __('SPF Exists', 'rl-mailwarmer'), 'spf_record_content' => __('SPF Valid', 'rl-mailwarmer'), 'spf_record_ttl' => __('SPF TTL', 'rl-mailwarmer'), 'spf_record_all_mechanism' => __('SPF All Mechanism', 'rl-mailwarmer'), 'dmarc_record_exists' => __('DMARC Exists', 'rl-mailwarmer'), 'dmarc_policy' => __('DMARC Policy', 'rl-mailwarmer'), 'dmarc_sp_policy' => __('DMARC SP Policy', 'rl-mailwarmer'), 'dmarc_percentage' => __('DMARC Percentage', 'rl-mailwarmer'), 'dmarc_aspf' => __('DMARC ASPF', 'rl-mailwarmer'), 'dmarc_adkim' => __('DMARC ADKIM', 'rl-mailwarmer'), 'dmarc_aggregate_rpt' => __('DMARC Aggregate RPT', 'rl-mailwarmer'), 'dmarc_forensic_rpt' => __('DMARC Forensic RPT', 'rl-mailwarmer'), 'dmarc_report_format' => __('DMARC Report Format', 'rl-mailwarmer'), 'dmarc_report_interval' => __('DMARC Report Interval', 'rl-mailwarmer'), 'dkim_records' => __('DKIM Records', 'rl-mailwarmer'), ]; return array_merge($columns, $custom_columns); }); /** * Populate custom column data for the "All Domain Health Reports" admin page. * * @param string $column The column name. * @param int $post_id The post ID. */ add_action('manage_domain-health-report_posts_custom_column', function ($column, $post_id) { $meta = get_post_meta($post_id); switch ($column) { case 'domain_name': echo esc_html($meta['domain_name'][0] ?? ''); break; case 'domain_valid': echo !empty($meta['domain_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'domain_age': echo esc_html($meta['domain_age'][0] ?? ''); break; case 'domain_days_to_expiration': echo esc_html($meta['domain_days_to_expiration'][0] ?? ''); break; case 'a_record_valid': echo !empty($meta['a_record_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'a_record_resolves': echo esc_html($meta['a_record_resolves'][0] ?? ''); break; case 'http_status': echo esc_html($meta['http_status'][0] ?? ''); break; case 'https_enabled': echo !empty($meta['https_enabled'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'mx_record_valid': echo !empty($meta['mx_record_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'mx_record_ptr_valid': echo !empty($meta['mx_record_ptr_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'mx_record_ptr_match': echo !empty($meta['mx_record_ptr_match'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'spf_record_exists': echo !empty($meta['spf_record_exists'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'spf_record_content': echo !empty($meta['spf_record_content'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'spf_record_ttl': echo esc_html($meta['spf_record_ttl'][0] ?? ''); break; case 'spf_record_all_mechanism': echo esc_html($meta['spf_record_all_mechanism'][0] ?? ''); break; case 'dmarc_record_exists': echo !empty($meta['dmarc_record_exists'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'dmarc_policy': echo esc_html($meta['dmarc_policy'][0] ?? ''); break; case 'dmarc_sp_policy': echo esc_html($meta['dmarc_sp_policy'][0] ?? ''); break; case 'dmarc_percentage': echo esc_html($meta['dmarc_percentage'][0] ?? ''); break; case 'dmarc_aspf': echo esc_html($meta['dmarc_aspf'][0] ?? ''); break; case 'dmarc_adkim': echo esc_html($meta['dmarc_adkim'][0] ?? ''); break; case 'dmarc_aggregate_rpt': echo esc_html($meta['dmarc_aggregate_rpt'][0] ?? ''); break; case 'dmarc_forensic_rpt': echo esc_html($meta['dmarc_forensic_rpt'][0] ?? ''); break; case 'dmarc_report_format': echo esc_html($meta['dmarc_report_format'][0] ?? ''); break; case 'dmarc_report_interval': echo esc_html($meta['dmarc_report_interval'][0] ?? ''); break; case 'dkim_records': echo esc_html($meta['dkim_records'][0] ?? ''); break; default: echo ''; } }, 10, 2); // Make Columns Sortable add_filter('manage_edit-domain-health-report_sortable_columns', function ($columns) { $columns['domain_name'] = 'domain_name'; $columns['domain_valid'] = 'domain_valid'; $columns['domain_age'] = 'domain_age'; // Add more sortable columns as needed return $columns; }); /** * Add custom columns to the "All Domains" admin page. * * @param array $columns Default columns. * @return array Modified columns. */ add_filter('manage_domain_posts_columns', function ($columns) { // Remove default columns if necessary // unset($columns['date']); // Add custom columns $custom_columns = [ 'domain_valid' => __('Valid', 'rl-mailwarmer'), 'domain_age' => __('Age', 'rl-mailwarmer'), 'domain_days_to_expiration' => __('Days to Expiration', 'rl-mailwarmer'), 'a_record_valid' => __('A Record Valid', 'rl-mailwarmer'), 'a_record_resolves' => __('A Record Resolves To', 'rl-mailwarmer'), 'http_status' => __('HTTP Status', 'rl-mailwarmer'), 'https_enabled' => __('HTTPS Enabled', 'rl-mailwarmer'), 'mx_record_valid' => __('MX Valid', 'rl-mailwarmer'), 'mx_record_ptr_valid' => __('PTR Valid', 'rl-mailwarmer'), 'mx_record_ptr_match' => __('PTR Matches', 'rl-mailwarmer'), 'spf_record_exists' => __('SPF Exists', 'rl-mailwarmer'), 'spf_record_is_valid' => __('SPF Valid', 'rl-mailwarmer'), 'spf_record_ttl' => __('SPF TTL', 'rl-mailwarmer'), 'spf_record_all_mechanism' => __('SPF All Mechanism', 'rl-mailwarmer'), 'dmarc_record_exists' => __('DMARC Exists', 'rl-mailwarmer'), 'dmarc_policy' => __('DMARC Policy', 'rl-mailwarmer'), 'dmarc_sp_policy' => __('DMARC SP Policy', 'rl-mailwarmer'), 'dmarc_percentage' => __('DMARC Percentage', 'rl-mailwarmer'), 'dmarc_aspf' => __('DMARC ASPF', 'rl-mailwarmer'), 'dmarc_adkim' => __('DMARC ADKIM', 'rl-mailwarmer'), 'dmarc_aggregate_rpt' => __('DMARC Aggregate RPT', 'rl-mailwarmer'), 'dmarc_forensic_rpt' => __('DMARC Forensic RPT', 'rl-mailwarmer'), 'dmarc_report_format' => __('DMARC Report Format', 'rl-mailwarmer'), 'dmarc_report_interval' => __('DMARC Report Interval', 'rl-mailwarmer'), 'dkim_records' => __('DKIM Records', 'rl-mailwarmer'), ]; return array_merge($columns, $custom_columns); }); /** * Populate custom column data for the "All Domains" admin page. * * @param string $column The column name. * @param int $post_id The post ID. */ add_action('manage_domain_posts_custom_column', function ($column, $post_id) { $meta = get_post_meta($post_id); switch ($column) { case 'domain_valid': echo !empty($meta['domain_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'domain_age': echo esc_html($meta['domain_age'][0] ?? ''); break; case 'domain_days_to_expiration': echo esc_html($meta['domain_days_to_expiration'][0] ?? ''); break; case 'a_record_valid': echo !empty($meta['a_record_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'a_record_resolves': echo esc_html($meta['a_record_resolves'][0] ?? ''); break; case 'http_status': echo esc_html($meta['http_status'][0] ?? ''); break; case 'https_enabled': echo !empty($meta['https_enabled'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'mx_record_valid': echo !empty($meta['mx_record_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'mx_record_ptr_valid': echo !empty($meta['mx_record_ptr_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'mx_record_ptr_match': echo !empty($meta['mx_record_ptr_match'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'spf_record_exists': echo !empty($meta['spf_record_exists'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'spf_record_is_valid': echo !empty($meta['spf_record_is_valid'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'spf_record_ttl': echo esc_html($meta['spf_record_ttl'][0] ?? ''); break; case 'spf_record_all_mechanism': echo esc_html($meta['spf_record_all_mechanism'][0] ?? ''); break; case 'dmarc_record_exists': echo !empty($meta['dmarc_record_exists'][0]) ? __('Yes', 'rl-mailwarmer') : __('No', 'rl-mailwarmer'); break; case 'dmarc_policy': echo esc_html($meta['dmarc_policy'][0] ?? ''); break; case 'dmarc_sp_policy': echo esc_html($meta['dmarc_sp_policy'][0] ?? ''); break; case 'dmarc_percentage': echo esc_html($meta['dmarc_percentage'][0] ?? ''); break; case 'dmarc_aspf': echo esc_html($meta['dmarc_aspf'][0] ?? ''); break; case 'dmarc_adkim': echo esc_html($meta['dmarc_adkim'][0] ?? ''); break; case 'dmarc_aggregate_rpt': echo esc_html($meta['dmarc_aggregate_rpt'][0] ?? ''); break; case 'dmarc_forensic_rpt': echo esc_html($meta['dmarc_forensic_rpt'][0] ?? ''); break; case 'dmarc_report_format': echo esc_html($meta['dmarc_report_format'][0] ?? ''); break; case 'dmarc_report_interval': echo esc_html($meta['dmarc_report_interval'][0] ?? ''); break; case 'dkim_records': echo esc_html($meta['dkim_records'][0] ?? ''); break; default: echo ''; } }, 10, 2); // Make Columns Sortable add_filter('manage_edit-domain_sortable_columns', function ($columns) { // $columns['domain_name'] = 'domain_name'; $columns['domain_valid'] = 'domain_valid'; $columns['domain_age'] = 'domain_age'; // Add more sortable columns as needed return $columns; }); /** * Add a custom meta box to display domain metadata. */ add_action('add_meta_boxes', function () { add_meta_box( 'domain_metadata_table', // Meta box ID __('Domain Health', 'rl-mailwarmer'), // Title 'rl_mailwarmer_render_domain_metadata_table', // Callback function 'domain', // Post type 'normal', // Context 'low' // Priority ); }); /** * Render the metadata table for the "Domain Metadata" meta box. * * @param WP_Post $post The current post object. */ function rl_mailwarmer_render_domain_metadata_table($post) { // Fetch all metadata for the current post $post_meta = get_post_meta($post->ID); // Assign metadata to the array using $post_meta $metadata = [ 'domain_valid' => $post_meta['domain_valid'][0] ?? '', 'domain_age' => $post_meta['domain_age'][0] ?? '', 'domain_days_to_expiration' => $post_meta['domain_days_to_expiration'][0] ?? '', 'a_record_resolves' => $post_meta['a_record_resolves'][0] ?? '', 'http_status' => $post_meta['http_status'][0] ?? '', 'https_enabled' => $post_meta['https_enabled'][0] ?? '', 'mx_record_valid' => $post_meta['mx_record_valid'][0] ?? '', 'mx_record_ptr_valid' => $post_meta['mx_record_ptr_valid'][0] ?? '', 'mx_record_ptr_match' => $post_meta['mx_record_ptr_match'][0] ?? '', 'spf_record_exists' => $post_meta['spf_record_exists'][0] ?? '', 'spf_record_is_valid' => $post_meta['spf_record_is_valid'][0] ?? '', 'spf_record_ttl' => $post_meta['spf_record_ttl'][0] ?? '', 'spf_record_all_mechanism' => $post_meta['spf_record_all_mechanism'][0] ?? '', 'dmarc_record_exists' => $post_meta['dmarc_record_exists'][0] ?? '', 'dmarc_policy' => $post_meta['dmarc_policy'][0] ?? '', 'dmarc_sp_policy' => $post_meta['dmarc_sp_policy'][0] ?? '', 'dmarc_percentage' => $post_meta['dmarc_percentage'][0] ?? '', 'dmarc_aspf' => $post_meta['dmarc_aspf'][0] ?? '', 'dmarc_adkim' => $post_meta['dmarc_adkim'][0] ?? '', 'dmarc_aggregate_rpt' => $post_meta['dmarc_aggregate_rpt'][0] ?? '', 'dmarc_forensic_rpt' => $post_meta['dmarc_forensic_rpt'][0] ?? '', 'dmarc_report_format' => $post_meta['dmarc_report_format'][0] ?? '', 'dmarc_report_interval' => $post_meta['dmarc_report_interval'][0] ?? '', 'dkim_records' => $post_meta['dkim_records'][0] ?? '', ]; // Render the table echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; foreach ($metadata as $key => $value) { echo ''; echo ''; echo ''; echo ''; } echo ''; echo '
' . __('Title', 'rl-mailwarmer') . '' . __('Value', 'rl-mailwarmer') . '
' . esc_html(ucwords(str_replace('_', ' ', $key))) . '' . esc_html(is_array($value) ? json_encode($value) : $value) . '
'; }