• Resolved drgozen

    (@drgozen)


    Hello,

    I have a doctors database website. I’m adding all doctors with their specialties, biography, clinic name, address, phone numbers etc. This is to help people to find a doctor with their specialties and clinic adresses.

    There are 109 doctors in my database. Some of them are working in the same clinic. I want to show other doctors working in the same clinic at the bottom of the profile page.

    For example: Doctor Joe Doe is working at “Health Clinic”. Doctor Jane Doe is also working in the same clinic. If someone checks Dr. Joe Doe’s profile, Dr. Jane Doe will be shown at the bottom of Dr. Joe Doe’s profile as Related Doctors in the same Clinic field. And the same, Dr. Joe Doe will be shown at Dr. Jane Doe’s profile.

    Dr. Jack Doe is working at “The Dental Clinic”. He will not be shown neither Dr. Joe Doe nor Dr. Jane Doe’s profile pages.

    How can I do that?

    Thank you.

    The page I need help with: [log in to see the link]

Viewing 10 replies - 1 through 10 (of 10 total)
  • missveronica

    (@missveronicatv)

    @drgozen

    You can try this shortcode [um_doctors_same_clinic] with this code snippet.
    Add the shortcode to your Profile form with UM Forms Builder.
    Change clinic in the code snippet to your UM clinic meta_key if different.

    add_shortcode( 'um_doctors_same_clinic', 'um_doctors_same_clinic' );
    
    function um_doctors_same_clinic( $atts, $content = false ) {
    
        $output = '';
        if ( class_exists( 'UM' ) ) {
    
            $args = array(  'fields'     => array( 'ID', 'display_name' ),
                            'meta_query' => array( 'relation'  => 'AND',
                                                    array(  'key'     => 'clinic',
                                                            'value'   => um_user( 'clinic' ),
                                                            'compare' => '=' )),
                        );
    
            $users = get_users( $args );
    
            if ( count( $users ) > 1 ) {
                foreach( $users as $user ) {
                    if ( $user->ID != um_profile_id() ) {
                        $output .= '<div><a href="' . esc_url( um_user_profile_url( $user->ID )) . '">' . esc_attr( $user->display_name ) . '</a></div>';
                    }
                }
            }
        }
    
        return $output;
    }

    Install by adding the code snippet to your active theme’s functions.php file
    or use the “Code Snippets” Plugin

    https://www.ads-software.com/plugins/code-snippets/

    • This reply was modified 2 weeks, 6 days ago by missveronica.
    Thread Starter drgozen

    (@drgozen)

    Great! Thank you so much. It works perfectly fine.

    Thread Starter drgozen

    (@drgozen)

    I have one more question.

    Some of the doctors work at more than one clinic. So in this code how can I print the clinic1 or clinic2 ?

     $output .= '<div><a href="' . esc_url( um_user_profile_url( $user->ID )) . '">' . esc_attr( $user->display_name ) . '</a> - ' . esc_attr( $user->clinic ) . '</div>';

    I added this but it doesn’t work.

    Thank you.

    Thread Starter drgozen

    (@drgozen)

    There’s one more problem. In the database one doctor can be listed under maximum 3 clinics. For example:

    Doctor1’s first clinic is X Clinic and second clinic is Y Clinic.

    Doctor2’s first clinic is Y Clinic.

    Doctor3’s first clinic is Q Clinic, second clinic is W Clinic and third clinic is X Clinic.

    Doctor1 and Doctor2 are both working in the Y Clinic but it is “clinic2” for doctor1 and “clinic1” for doctor2.

    Doctor1 and Doctor 3 are both worjing at the X Clinic.

    How can I sort these all?

    missveronica

    (@missveronicatv)

    @drgozen

    Use this code for addition of the Clinic name

    ... '</a> - ' . esc_attr( um_user( 'clinic' ) ) . '</div>'

    missveronica

    (@missveronicatv)

    @drgozen

    In the database one doctor can be listed under maximum 3 clinics.

    You can replace the old code snippet with this.
    Additional Clinic’s meta_keys are clinic2 and clinic3

    add_shortcode( 'um_doctors_same_clinic', 'um_doctors_same_clinic' );
    
    function um_doctors_same_clinic( $atts, $content = false ) {
    
        $output = '';
        if ( class_exists( 'UM' ) ) {
    
            $clinics = array( um_user( 'clinic' ), um_user( 'clinic2' ), um_user( 'clinic3' ));
    
            foreach( $clinics as $clinic ) {
                if ( ! empty( $clinic )) {
    
                    $args = array(  'fields'     => array( 'ID', 'display_name' ),
                                    'number'     => -1,
                                    'meta_query' => array( 'relation'  => 'AND',
                                                            array(
                                                                   'relation' => 'OR',
                                                                    array(  'key'     => 'clinic',
                                                                            'value'   => $clinic,
                                                                            'compare' => '='
                                                                        ),
                                                                    array(  'key'     => 'clinic2',
                                                                            'value'   => $clinic,
                                                                            'compare' => '='
                                                                        ),
                                                                    array(  'key'     => 'clinic3',
                                                                            'value'   => $clinic,
                                                                            'compare' => '='
                                                                        ),
                                                                ),
                                                            ),
                                    );
    
                    $users = get_users( $args );
    
                    if ( count( $users ) > 1 ) {
                        foreach( $users as $user ) {
                            if ( $user->ID != um_profile_id() ) {
                                $output .= '<div><a href="' . esc_url( um_user_profile_url( $user->ID )) . '">' . esc_attr( $user->display_name ) . '</a> - ' . esc_attr( $clinic ) . '</div>';
                            }
                        }
                    }
                }
            }
        }
    
        if ( empty( $output )) {
            $output = '<div>None found</div>';
        }
    
        return $output;
    }
    Thread Starter drgozen

    (@drgozen)

    Thank you so much! That works perfect. Thank you

    Thread Starter drgozen

    (@drgozen)

    Hello again, I need help for some more improvements.

    In the database, clinics has phone, address, website, email, whatsapp number and location information.

    The WhatsApp number automatically creates a WhatsApp link for clinic 1, but it does not create a link for clinics 2 and 3.

    WhatsApp metakey for clinic 1 is whatsapp, clinic 2 is whatsapp_66 and clinic 3 is whatsap_66_66

    I had to duplicate WhatsApp for WhatsApp 2 and WhatsApp 3 because when I added WhatsApp for clinic 1, it was no longer clickable for clinic 2 and clinic 3.

    Can you help me with this?

    Thank you.

    missveronica

    (@missveronicatv)

    @drgozen

    You need these additional whatsapp numbers to be UM predefined
    and this code snippet will convert your UM Form custom fields to predefined.

    Your whatsap_66_66 is whatsapp_66_66?

    add_filter( 'um_predefined_fields_hook', 'custom_predefined_fields_hook_whatsapp', 10, 1 );
    add_filter( 'um_profile_field_filter_hook__whatsapp_66', 'um_profile_field_filter_hook__whatsapp', 99, 2 );
    add_filter( 'um_profile_field_filter_hook__whatsapp_66_66', 'um_profile_field_filter_hook__whatsapp', 99, 2 );
    
    function custom_predefined_fields_hook_whatsapp( $predefined_fields ) {
    
        $predefined_fields['whatsapp_2'] = array(
                                                    'title'      => __( 'WhatsApp number 2', 'ultimate-member' ),
                                                    'metakey'    => 'whatsapp_66',
                                                    'type'       => 'text',
                                                    'label'      => __( 'WhatsApp number 2', 'ultimate-member' ),
                                                    'required'   => 0,
                                                    'public'     => 1,
                                                    'editable'   => true,
                                                    'url_target' => '_blank',
                                                    'url_rel'    => 'nofollow',
                                                    'icon'       => 'fab fa-whatsapp',
                                                    'validate'   => 'phone_number',
                                                );
    
        $predefined_fields['whatsapp_3'] = array(
                                                    'title'      => __( 'WhatsApp number 3', 'ultimate-member' ),
                                                    'metakey'    => 'whatsapp_66_66',
                                                    'type'       => 'text',
                                                    'label'      => __( 'WhatsApp number 3', 'ultimate-member' ),
                                                    'required'   => 0,
                                                    'public'     => 1,
                                                    'editable'   => true,
                                                    'url_target' => '_blank',
                                                    'url_rel'    => 'nofollow',
                                                    'icon'       => 'fab fa-whatsapp',
                                                    'validate'   => 'phone_number',
                                                );
    
        return  $predefined_fields;
    }

    Install by adding the code snippet to your active theme’s functions.php file
    or use the “Code Snippets” Plugin

    https://www.ads-software.com/plugins/code-snippets/

    • This reply was modified 1 week, 2 days ago by missveronica.
    • This reply was modified 1 week, 2 days ago by missveronica.
    • This reply was modified 1 week, 2 days ago by missveronica.
    Thread Starter drgozen

    (@drgozen)

    Thank you so much! It works perfectly fine.

Viewing 10 replies - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.