__('Verify Certificate', 'academic-certificate-verification'),
'post_name' => $page_slug,
'post_content' => '[acceve_certificate_display]',
'post_status' => 'publish',
'post_type' => 'page',
'post_author' => get_current_user_id(),
'comment_status' => 'closed',
'ping_status' => 'closed',
'meta_input' => array(
'_wp_page_template' => 'default'
)
);
// Insert the page
$page_id = wp_insert_post($page_data);
// Store page ID in options for future reference
if (!is_wp_error($page_id)) {
update_option('acceve_certificate_verification_page_id', $page_id);
}
} else {
// Update existing page with shortcode if needed
if (false === strpos($page->post_content, '[acceve_certificate_display]')) {
$page_data = array(
'ID' => $page->ID,
'post_content' => $page->post_content . "\n[acceve_certificate_display]"
);
wp_update_post($page_data);
}
// Store page ID in options
update_option('acceve_certificate_verification_page_id', $page->ID);
}
}
/**
* Add admin menu pages.
*
* Creates the main menu and submenu items in WordPress admin.
*
* @since 1.0.0
*
* @return void
*/
public function add_admin_menu() {
add_menu_page(
__('Certificate Verification', 'academic-certificate-verification'),
__('Certificates', 'academic-certificate-verification'),
'manage_options',
'certificate_verification',
array($this, 'admin_dashboard'),
'dashicons-awards',
30
);
add_submenu_page(
'certificate_verification',
__('All Certificates', 'academic-certificate-verification'),
__('All Certificates', 'academic-certificate-verification'),
'manage_options',
'certificate_verification',
array($this, 'admin_dashboard')
);
add_submenu_page(
'certificate_verification',
__('Add New Certificate', 'academic-certificate-verification'),
__('Add New', 'academic-certificate-verification'),
'manage_options',
'certificate_verification_add',
array($this, 'add_certificate_page')
);
add_submenu_page(
'certificate_verification',
__('Import Certificates', 'academic-certificate-verification'),
__('Import', 'academic-certificate-verification'),
'manage_options',
'certificate_verification_import',
array($this, 'import_certificates_page')
);
add_submenu_page(
'certificate_verification',
__('Settings', 'academic-certificate-verification'),
__('Settings', 'academic-certificate-verification'),
'manage_options',
'certificate_verification_settings',
array($this, 'settings_page')
);
add_submenu_page(
'certificate_verification',
__('Custom Fields', 'academic-certificate-verification'),
__('Custom Fields', 'academic-certificate-verification'),
'manage_options',
'manage_custom_fields',
array($this, 'manage_custom_fields_page')
);
add_submenu_page(
'certificate_verification',
__('Add Courses', 'academic-certificate-verification'),
__('Add Courses', 'academic-certificate-verification'),
'manage_options',
'manage_add_courses',
array($this, 'manage_add_courses_page')
);
add_submenu_page(
'certificate_verification',
__('Add Batches', 'academic-certificate-verification'),
__('Add Batches', 'academic-certificate-verification'),
'manage_options',
'manage_add_batches',
array($this, 'manage_add_batches_page')
);
add_submenu_page(
'certificate_verification',
__('Certificate Maker', 'academic-certificate-verification'),
__('Certificate Maker', 'academic-certificate-verification'),
'manage_options',
'certificate_maker',
array($this, 'certificate_maker_page')
);
add_submenu_page(
'certificate_verification',
__('Upgrade Pro', 'academic-certificate-verification'),
__('Upgrade Pro', 'academic-certificate-verification'),
'manage_options',
'certificate_verification_pro',
array($this, 'upgrade_pro_page')
);
}
/**
* Register plugin settings.
*
* Registers settings, sections, and fields for the plugin.
*
* @since 1.0.0
*
* @return void
*/
public function register_settings() {
register_setting(
'certificate_verification_settings',
'acceve_certificate_verification_options',
array(
'type' => 'array',
'sanitize_callback' => array($this, 'acceve_sanitize_settings'),
'default' => array(
'default_institution' => '',
'certificate_prefix' => 'CERT-',
'certificate_template' => 'template_one'
)
)
);
add_settings_section(
'general_settings',
__('General Settings', 'academic-certificate-verification'),
array($this, 'general_settings_section_callback'),
'certificate_verification_settings'
);
add_settings_field(
'default_institution',
__('Default Institution', 'academic-certificate-verification'),
array($this, 'default_institution_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'certificate_prefix',
__('Certificate ID Prefix', 'academic-certificate-verification'),
array($this, 'certificate_prefix_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'certificate_template',
__('Certificate Template', 'academic-certificate-verification'),
array($this, 'certificate_template_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'enable_date_of_birth',
__('Enable Date of Birth for Certificate Verification', 'academic-certificate-verification'),
array($this, 'enable_date_of_birth_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'enable_download_button',
__('Enable Download Button', 'academic-certificate-verification'),
array($this, 'enable_download_button_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'download_button_bg',
__('Verification form Button Background Color', 'academic-certificate-verification'),
array($this, 'download_button_bg_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'download_button_text',
__('Verification form Button Text Color', 'academic-certificate-verification'),
array($this, 'download_button_text_callback'),
'certificate_verification_settings',
'general_settings'
);
add_settings_field(
'verification_message',
__('Verification Message', 'academic-certificate-verification'),
array($this, 'verification_message_callback'),
'certificate_verification_settings',
'general_settings'
);
$this->register_filter_settings();
}
/**
* General settings section callback.
*
* Displays description for the general settings section.
*
* @since 1.0.0
*
* @return void
*/
public function general_settings_section_callback() {
echo '
' . esc_html__('Configure general settings for the certificate verification system.', 'academic-certificate-verification') . '
';
}
/**
* Default institution field callback.
*
* Renders the default institution input field.
*
* @since 1.0.0
*
* @return void
*/
public function default_institution_callback() {
$options = get_option('acceve_certificate_verification_options');
echo '';
}
/**
* Certificate prefix field callback.
*
* Renders the certificate ID prefix input field.
*
* @since 1.0.0
*
* @return void
*/
public function certificate_prefix_callback() {
$options = get_option('acceve_certificate_verification_options');
echo '';
echo '' . esc_html__('This will be prepended to all certificate IDs.', 'academic-certificate-verification') . '
';
}
/**
* Certificate template field callback.
*
* Renders the certificate template selection dropdown.
*
* @since 1.0.0
*
* @return void
*/
public function certificate_template_callback() {
$options = get_option('acceve_certificate_verification_options');
$template = isset($options['certificate_template']) ? $options['certificate_template'] : 'template_one';
$is_pro = class_exists('ACCEVE_Academic_Certificate_Verification_Pro');
$license_handler = ACCEVE_License_Handler::get_instance();
$is_active = $license_handler->is_license_active();
// Get certificate templates from database if pro version is active
$certificate_templates = array();
if ($is_pro) {
global $wpdb;
$table_name = $wpdb->prefix . 'acceve_certificate_templates';
if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
$certificate_templates = $wpdb->get_results("SELECT id, template_name FROM $table_name ORDER BY template_name ASC", ARRAY_A);
}
}
?>
is_license_active();
?>
is_license_active();
?>
is_license_active();
?>
name="acceve_certificate_verification_options[download_button_bg_color]"
value=""
data-default-color="#2271b1">
is_license_active();
?>
name="acceve_certificate_verification_options[download_button_text_color]"
value=""
data-default-color="#ffffff">
is_license_active();
?>
{institution},
{issue_date},
{certificate_id},
{student_name}
' . esc_html__('Configure certificate filtering options for the frontend.', 'academic-certificate-verification') . '';
echo '' . esc_html__('Shortcode:', 'academic-certificate-verification') . ' [acceve_certificate_filter]
';
}
/**
* Filter enabled field callback
*/
public function filter_enabled_callback() {
$options = get_option('acceve_certificate_verification_options');
$enabled = isset($options['filter_enabled']) ? $options['filter_enabled'] : 0;
$license_handler = ACCEVE_License_Handler::get_instance();
$is_active = $license_handler->is_license_active();
?>
is_license_active();
$available_fields = array(
'course_name' => __('Course Name', 'academic-certificate-verification'),
'course_type' => __('Course Type', 'academic-certificate-verification'),
'batch_name' => __('Batch Name', 'academic-certificate-verification'),
'institution' => __('Institution', 'academic-certificate-verification'),
'issue_date' => __('Issue Date', 'academic-certificate-verification'),
);
echo '