احجز موعدك
ابحث باسم الطبيب أو التخصص للعثور على مقدم الرعاية الصحية المناسب لك.
function custom_kivicare_doctors_list($atts) {
ob_start();
$current_locale = get_locale();
$is_arabic = (strpos($current_locale, 'ar') === 0);
$is_german = (strpos($current_locale, 'de') === 0);
$strings = array(
'search_label' => $is_arabic ? 'البحث عن طبيب' : ($is_german ? 'Arzt suchen' : 'Search Doctors'),
'spec_label' => $is_arabic ? 'التخصص' : ($is_german ? 'Fachbereich' : 'Specialization'),
'all_specs' => $is_arabic ? 'جميع التخصصات' : ($is_german ? 'Alle Fachbereiche' : 'All Specializations'),
'filter_btn' => $is_arabic ? 'تصفية' : ($is_german ? 'Filtern' : 'Filter'),
'reset_btn' => $is_arabic ? 'إلغاء' : ($is_german ? 'Zurücksetzen' : 'Reset'),
'search_placeholder' => $is_arabic ? 'الاسم...' : ($is_german ? 'Name...' : 'Name...'),
'view_profile' => $is_arabic ? 'عرض الملف الشخصي' : ($is_german ? 'Profil anzeigen' : 'View Profile'),
'experience_label' => $is_arabic ? 'الخبرة:' : ($is_german ? 'Erfahrung:' : 'Experience:'),
'years_label' => $is_arabic ? 'سنوات' : ($is_german ? 'Jahre' : 'Years'),
'qual_label' => $is_arabic ? 'المؤهل:' : ($is_german ? 'Qualifikation:' : 'Qualification:'),
'not_available' => $is_arabic ? 'غير متاح' : ($is_german ? 'Nicht verfügbar' : 'Not Available'),
'dr_prefix' => $is_arabic ? 'د. ' : 'Dr. ',
'no_docs_title' => $is_arabic ? 'لم يتم العثور على أطباء' : ($is_german ? 'Keine Ärzte gefunden' : 'No Doctors Found'),
'no_docs_gen' => $is_arabic ? 'حالياً لا يوجد أطباء متاحين.' : ($is_german ? 'Keine Ärzte verfügbar.' : 'No doctors available.')
);
$atts = shortcode_atts(array(
'specialization' => 'all'
), $atts);
$search_term = isset($_GET['doctor_search'])
? sanitize_text_field(wp_unslash($_GET['doctor_search']))
: '';
$specialization_filter = isset($_GET['doctor_specialization'])
? sanitize_text_field(wp_unslash($_GET['doctor_specialization']))
: 'all';
if ($atts['specialization'] !== 'all') {
$specialization_filter = $atts['specialization'];
}
$query_args = array(
'role' => 'kivicare_doctor',
'orderby' => 'display_name',
'order' => 'ASC',
'number' => -1
);
if (!empty($search_term)) {
$query_args['search'] = '*' . esc_attr($search_term) . '*';
$query_args['search_columns'] = array(
'display_name',
'user_login',
'user_email'
);
}
$user_query = new WP_User_Query($query_args);
$raw_users = $user_query->get_results();
$filtered_users = array();
$all_specializations = array();
foreach ($raw_users as $doctor) {
$doctor_id = $doctor->ID;
/*
|--------------------------------------------------------------------------
| HIDE INACTIVE DOCTORS
|--------------------------------------------------------------------------
*/
$user_data = get_userdata($doctor_id);
$status = get_user_meta($doctor_id, 'kivicare_doctor_status', true);
// DEBUG (temporary)
// echo '
';
// print_r($status);
// echo '';
if (
!$user_data ||
!empty($user_data->user_status) ||
$status == '0' ||
$status == 0 ||
$status === false
) {
continue;
}
/*
|--------------------------------------------------------------------------
| BASIC DATA
|--------------------------------------------------------------------------
*/
$basic_data_json = get_user_meta($doctor_id, 'basic_data', true);
$basic_data = json_decode($basic_data_json, true);
/*
|--------------------------------------------------------------------------
| SPECIALIZATION FILTER
|--------------------------------------------------------------------------
*/
$doctor_has_specialization = false;
if (!empty($basic_data['specialties']) && is_array($basic_data['specialties'])) {
foreach ($basic_data['specialties'] as $spec) {
if (!empty($spec['label'])) {
if (!in_array($spec['label'], $all_specializations)) {
$all_specializations[] = $spec['label'];
}
if (
$specialization_filter === 'all' ||
$specialization_filter === $spec['label']
) {
$doctor_has_specialization = true;
}
}
}
}
if (!$doctor_has_specialization && $specialization_filter !== 'all') {
continue;
}
$filtered_users[] = $doctor;
}
sort($all_specializations);
/*
|--------------------------------------------------------------------------
| PAGINATION
|--------------------------------------------------------------------------
*/
$page = isset($_GET['doctor_page'])
? absint($_GET['doctor_page'])
: 1;
$per_page = 6;
$offset = ($page - 1) * $per_page;
$total_users = count($filtered_users);
$total_pages = ceil($total_users / $per_page);
$users_to_display = array_slice(
$filtered_users,
$offset,
$per_page
);
/*
|--------------------------------------------------------------------------
| FILTER FORM
|--------------------------------------------------------------------------
*/
echo '';
echo '';
echo '
';
/*
|--------------------------------------------------------------------------
| DOCTOR GRID
|--------------------------------------------------------------------------
*/
if (!empty($users_to_display)) {
echo '';
foreach ($users_to_display as $doctor) {
$doctor_id = $doctor->ID;
$doctor_display_name = $doctor->display_name;
$doctor_name =
(strpos($doctor_display_name, 'Dr.') === 0 ||
strpos($doctor_display_name, 'د.') === 0)
? $doctor_display_name
: $strings['dr_prefix'] . $doctor_display_name;
$basic_data_json = get_user_meta($doctor_id, 'basic_data', true);
$basic_data = json_decode($basic_data_json, true);
$avatar_id = get_user_meta(
$doctor_id,
'doctor_profile_image',
true
);
$avatar_url = $avatar_id
? wp_get_attachment_url($avatar_id)
: get_avatar_url($doctor_id);
/*
|--------------------------------------------------------------------------
| QUALIFICATION
|--------------------------------------------------------------------------
*/
$qualification = $strings['not_available'];
if (!empty($basic_data['qualifications'][0])) {
$q = $basic_data['qualifications'][0];
$qualification =
($q['degree'] ?? '') .
(!empty($q['university'])
? ' - ' . $q['university']
: '');
}
/*
|--------------------------------------------------------------------------
| SPECIALTIES
|--------------------------------------------------------------------------
*/
$specializations_output = '';
if (!empty($basic_data['specialties'])) {
foreach ($basic_data['specialties'] as $spec) {
if (!empty($spec['label'])) {
$specializations_output .=
'' .
esc_html($spec['label']) .
' ';
}
}
}
/*
|--------------------------------------------------------------------------
| EXPERIENCE
|--------------------------------------------------------------------------
*/
$experience = !empty($basic_data['no_of_experience'])
? $basic_data['no_of_experience']
: '';
/*
|--------------------------------------------------------------------------
| PROFILE URL
|--------------------------------------------------------------------------
*/
$profile_url = add_query_arg(
'id',
$doctor_id,
home_url('/doctor-profile/')
);
/*
|--------------------------------------------------------------------------
| CARD
|--------------------------------------------------------------------------
*/
echo '
';
} else {
echo '';
echo '
';
}
echo '';
echo '';
echo '
';
echo '';
echo '
';
echo ''; echo ''; echo esc_html($doctor_name); echo ''; echo '
'; echo '';
echo $specializations_output;
echo '
';
if (!empty($experience)) {
echo ''; echo '' . esc_html($strings['experience_label']) . ' '; echo esc_html($experience) . ' ' . esc_html($strings['years_label']); echo '
'; } echo ''; echo '' . esc_html($strings['qual_label']) . ' '; echo esc_html($qualification); echo '
'; echo ''; echo esc_html($strings['view_profile']); echo ''; echo '';
echo '
';
}
return ob_get_clean();
}
add_shortcode(
'kivicare_doctors_grid',
'custom_kivicare_doctors_list'
);' . esc_html($strings['no_docs_title']) . '
'; echo '' . esc_html($strings['no_docs_gen']) . '
'; echo '
