Function Reference: geodir_show_detail_page_tabs

Summary

The main function responsible for displaying tabs in frontend detail page.

Global Values

$post
(object) (required) The current post object.

Default: None
$post_images
(array) (required) List of images attached to the post.

Default: None
$video
(string) (required) The video embed content.

Default: None
$special_offers
(string) (required) Special offers content.

Default: None
$related_listing
(string) (required) Related listing html.

Default: None
$geodir_post_detail_fields
(string) (required) Detail field html.

Default: None

Package

GeoDirectory

Change Log

Since: 1.0.0

Actions

‘geodir_before_tab_list’ [Line: 1637]

‘geodir_before_tab_content’ [Line: 1677]

‘geodir_before_.$tab_index._tab_content’ [Line: 1687]

‘geodir_after_tab_content’ [Line: 1765]

‘geodir_after_.$tab_index._tab_content’ [Line: 1775]

‘geodir_after_tab_list’ [Line: 1793]

‘geodir_add_tab_content’ [Line: 1810]

Filters

‘geodir_tab_list_title’ [Line: 1666]

‘geodir_modify_.$detail_page_tab[tab_content]._tab_content’ [Line: 1783]

Source File

geodir_show_detail_page_tabs() is located in geodirectory-functions/custom_functions.php [Line: 1443]

Source Code

function geodir_show_detail_page_tabs() {
	global $post, $post_images, $video, $special_offers, $related_listing, $geodir_post_detail_fields, $preview;

	$post_id            = ! empty( $post ) && isset( $post->ID ) ? (int) $post->ID : 0;
	$request_post_id    = ! empty( $_REQUEST['p'] ) ? (int) $_REQUEST['p'] : 0;
	$is_backend_preview = ( is_single() && ! empty( $_REQUEST['post_type'] ) && ! empty( $_REQUEST['preview'] ) && ! empty( $_REQUEST['p'] ) ) && is_super_admin() ? true : false; // skip if preview from backend

	if ( $is_backend_preview && ! $post_id > 0 && $request_post_id > 0 ) {
		$post = geodir_get_post_info( $request_post_id );
		setup_postdata( $post );
	}

	$geodir_post_detail_fields = geodir_show_listing_info( 'moreinfo' );

	$package_info = geodir_post_package_info(array(), $post, (!empty($post->post_type) ? $post->post_type : ''));
	$image_limit = '';
	if (defined('GEODIRPAYMENT_VERSION') && !empty($package_info) && isset($package_info->image_limit) && $package_info->image_limit !== '') {
		$image_limit = (int)$package_info->image_limit;
	}

	if ( geodir_is_page( 'detail' ) ) {
		$video                 = geodir_get_video( $post->ID );
		$special_offers        = geodir_get_special_offers( $post->ID );
		$related_listing_array = array();
		if ( get_option( 'geodir_add_related_listing_posttypes' ) ) {
			$related_listing_array = get_option( 'geodir_add_related_listing_posttypes' );
		}

		$excluded_tabs = get_option( 'geodir_detail_page_tabs_excluded' );
		if ( ! $excluded_tabs ) {
			$excluded_tabs = array();
		}

		$related_listing = '';
		if ( in_array( $post->post_type, $related_listing_array ) && ! in_array( 'related_listing', $excluded_tabs ) ) {
			$request = array(
				'post_number'         => get_option( 'geodir_related_post_count' ),
				'relate_to'           => get_option( 'geodir_related_post_relate_to' ),
				'layout'              => get_option( 'geodir_related_post_listing_view' ),
				'add_location_filter' => get_option( 'geodir_related_post_location_filter' ),
				'list_sort'           => get_option( 'geodir_related_post_sortby' ),
				'character_count'     => get_option( 'geodir_related_post_excerpt' )
			);

			if ( $post->post_type == 'gd_event' && defined( 'GDEVENTS_VERSION' ) ) {
				$related_listing = geodir_get_detail_page_related_events( $request );
			} else {
				$related_listing = geodir_related_posts_display( $request );
			}

		}

		$post_images = geodir_get_images( $post->ID, 'thumbnail' );
		$thumb_image = '';
		if ( ! empty( $post_images ) ) {
			$count = 1;
			foreach ( $post_images as $image ) {
				if ($image_limit !== '' && $count > $image_limit) {
					break;
				}
				$caption = ( ! empty( $image->caption ) ) ? $image->caption : '';
				$thumb_image .= '';
				$thumb_image .= geodir_show_image( $image, 'thumbnail', true, false );
				$thumb_image .= '';
				$count++;
			}
		}

		$map_args                    = array();
		$map_args['map_canvas_name'] = 'detail_page_map_canvas';
		$map_args['width']           = '600';
		$map_args['height']          = '300';
		if ( $post->post_mapzoom ) {
			$map_args['zoom'] = '' . $post->post_mapzoom . '';
		}
		$map_args['autozoom']                 = false;
		$map_args['scrollwheel']              = ( get_option( 'geodir_add_listing_mouse_scroll' ) ) ? 0 : 1;
		$map_args['child_collapse']           = '0';
		$map_args['enable_cat_filters']       = false;
		$map_args['enable_text_search']       = false;
		$map_args['enable_post_type_filters'] = false;
		$map_args['enable_location_filters']  = false;
		$map_args['enable_jason_on_load']     = true;
		$map_args['enable_map_direction']     = true;
		$map_args['map_class_name']           = 'geodir-map-detail-page';
		$map_args['maptype']                  = ( ! empty( $post->post_mapview ) ) ? $post->post_mapview : 'ROADMAP';
	} else if ( geodir_is_page( 'preview' ) ) {
		$video          = isset( $post->geodir_video ) ? $post->geodir_video : '';
		$special_offers = isset( $post->geodir_special_offers ) ? $post->geodir_special_offers : '';

		if ( isset( $post->post_images ) ) {
			$post->post_images = trim( $post->post_images, "," );
		}

		if ( isset( $post->post_images ) && ! empty( $post->post_images ) ) {
			$post_images = explode( ",", $post->post_images );
		}

		$thumb_image = '';
		if ( ! empty( $post_images ) ) {
			$count = 1;
			foreach ( $post_images as $image ) {
				if ( $image != '' ) {
					if ($image_limit !== '' && $count > $image_limit) {
						break;
					}
					$thumb_image .= '';
					$thumb_image .= geodir_show_image( array( 'src' => $image ), 'thumbnail', true, false );
					$thumb_image .= '';
					$count++;
				}
			}
		}

		global $map_jason;
		$marker_json      = $post->marker_json != '' ? json_decode( $post->marker_json, true ) : array();
		$marker_icon      = ( ! empty( $marker_json ) && ! empty( $marker_json['i'] ) ) ? $marker_json['i'] : '';
		$icon_size        = geodir_get_marker_size( $marker_icon );
		$marker_json['w'] = $icon_size['w'];
		$marker_json['h'] = $icon_size['h'];
		$map_jason[]      = json_encode( $marker_json );

		$address_latitude  = isset( $post->post_latitude ) ? $post->post_latitude : '';
		$address_longitude = isset( $post->post_longitude ) ? $post->post_longitude : '';
		$mapview           = isset( $post->post_mapview ) ? $post->post_mapview : '';
		$mapzoom           = isset( $post->post_mapzoom ) ? $post->post_mapzoom : '';
		if ( ! $mapzoom ) {
			$mapzoom = 12;
		}

		$map_args                             = array();
		$map_args['map_canvas_name']          = 'preview_map_canvas';
		$map_args['width']                    = '950';
		$map_args['height']                   = '300';
		$map_args['child_collapse']           = '0';
		$map_args['maptype']                  = $mapview;
		$map_args['autozoom']                 = false;
		$map_args['zoom']                     = "$mapzoom";
		$map_args['latitude']                 = $address_latitude;
		$map_args['longitude']                = $address_longitude;
		$map_args['enable_cat_filters']       = false;
		$map_args['enable_text_search']       = false;
		$map_args['enable_post_type_filters'] = false;
		$map_args['enable_location_filters']  = false;
		$map_args['enable_jason_on_load']     = true;
		$map_args['enable_map_direction']     = true;
		$map_args['map_class_name']           = 'geodir-map-preview-page';
	}

	$arr_detail_page_tabs = geodir_detail_page_tabs_list();// get this sooner so we can get the active tab for the user

	$active_tab       = '';
	$active_tab_name  = '';
	$default_tab      = '';
	$default_tab_name = '';
	foreach ( $arr_detail_page_tabs as $tab_index => $tabs ) {
		if ( isset( $tabs['is_active_tab'] ) && $tabs['is_active_tab'] && ! empty( $tabs['is_display'] ) && isset( $tabs['heading_text'] ) && $tabs['heading_text'] ) {
			$active_tab      = $tab_index;
			$active_tab_name = __( $tabs['heading_text'], 'geodirectory' );
		}

		if ( $default_tab === '' && ! empty( $tabs['is_display'] ) && ! empty( $tabs['heading_text'] ) ) {
			$default_tab      = $tab_index;
			$default_tab_name = __( $tabs['heading_text'], 'geodirectory' );
		}
	}

	if ( $active_tab === '' && $default_tab !== '' ) { // Make first tab as a active tab if not any tab is active.
		if ( isset( $arr_detail_page_tabs[ $active_tab ] ) && isset( $arr_detail_page_tabs[ $active_tab ]['is_active_tab'] ) ) {
			$arr_detail_page_tabs[ $active_tab ]['is_active_tab'] = false;
		}

		$arr_detail_page_tabs[ $default_tab ]['is_active_tab'] = true;
		$active_tab                                            = $default_tab;
		$active_tab_name                                       = $default_tab_name;
	}
	$tab_list = ( get_option( 'geodir_disable_tabs', false ) ) ? true : false;
	?>
	
$detail_page_tab ) { if ( $detail_page_tab['is_display'] ) { if ( ! $tab_list ) { ?>
class="geodir-tab-active" >
  • ' . __( $detail_page_tab['heading_text'], 'geodirectory' ) . '
    '; /** * Filter the tab list title html. * * @since 1.6.1 * * @param string $tab_title The html for the tab title. * @param string $tab_index The tab index type. * @param array $detail_page_tab The array of values including title text. */ echo apply_filters( 'geodir_tab_list_title', $tab_title, $tab_index, $detail_page_tab ); } ?>
    post_desc ) ); } /** * Called after the listing description content on the details page tab. * * @since 1.0.0 */ do_action( 'geodir_after_description_on_listing_detail' ); break; case 'post_info': echo $geodir_post_detail_fields; break; case 'post_images': echo $thumb_image; break; case 'post_video': // some browsers hide $_POST data if used for embeds so we replace with a placeholder if ( $preview ) { if ( $video ) { echo "


    " . __( 'Video Preview Placeholder', 'geodirectory' ) . "

    "; } } else { // stop payment manager filtering content length $filter_priority = has_filter( 'the_content', 'geodir_payments_the_content' ); if ( false !== $filter_priority ) { remove_filter( 'the_content', 'geodir_payments_the_content', $filter_priority ); } /** This action is documented in geodirectory_template_actions.php */ echo apply_filters( 'the_content', stripslashes( $video ) );// we apply the_content filter so oembed works also; if ( false !== $filter_priority ) { add_filter( 'the_content', 'geodir_payments_the_content', $filter_priority ); } } break; case 'special_offers': echo apply_filters( 'gd_special_offers_content', wpautop( stripslashes( $special_offers ) ) ); break; case 'post_map': geodir_draw_map( $map_args ); break; case 'reviews': comments_template(); break; case 'related_listing': echo $related_listing; break; default: { if ( ( isset( $post->{$tab_index} ) || ( ! isset( $post->{$tab_index} ) && ( strpos( $tab_index, 'gd_tab_' ) !== false || $tab_index == 'link_business' ) ) ) && ! empty( $detail_page_tab['tab_content'] ) ) { echo $detail_page_tab['tab_content']; } } break; } /** * Called after the details tab content is output per tab. * * @since 1.0.0 */ do_action( 'geodir_after_tab_content', $tab_index ); /** * Called after the details tab content is output per tab. * * Uses dynamic hook name: geodir_after_$tab_index_tab_content * * @since 1.0.0 * @todo do we need this if we have the hook above? 'geodir_after_tab_content' */ do_action( 'geodir_after_' . $tab_index . '_tab_content' ); ?>