Tribe__Events__Main::getLink( string $type = 'home', string|bool $secondary = false, int|bool|null $term = null, bool|null $featured = null )
Returns various internal events-related URLs
Contents
Parameters
- $type
-
(string) (Optional) type of link. See switch statement for types.
Default value: 'home'
- $secondary
-
(string|bool) (Optional) for $type = month, pass a YYYY-MM string for a specific month's URL for $type = week, pass a Week # string for a specific week's URL
Default value: false
- $term
-
(int|bool|null) (Optional)
Default value: null
- $featured
-
(bool|null) (Optional)
Default value: null
Return
(string) The link.
Source
File: src/Tribe/Main.php
public function getLink( $type = 'home', $secondary = false, $term = null, $featured = null ) {
// if permalinks are off or user doesn't want them: ugly.
if ( '' === get_option( 'permalink_structure' ) ) {
return esc_url_raw( $this->uglyLink( $type, $secondary ) );
}
if ( apply_filters( 'tribe_events_force_ugly_link', false ) ) {
return esc_url_raw( $this->uglyLink( $type, $secondary ) );
}
// if this is an ajax request where the baseurl is provided, use that as the base url and use semi-ugly links
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && ! empty( $_POST['baseurl'] ) ) {
return esc_url_raw( $this->uglyLink( $type, $secondary ) );
}
// account for semi-pretty permalinks
if ( false !== strpos( get_option( 'permalink_structure' ), 'index.php' ) ) {
$event_url = home_url( '/index.php/' );
} else {
$event_url = home_url( '/' );
}
// URL Arguments on home_url() pre-check
$url_query = @parse_url( $event_url, PHP_URL_QUERY );
$url_args = wp_parse_args( $url_query, array() );
// Remove the "args"
if ( ! empty( $url_query ) ) {
$event_url = str_replace( '?' . $url_query, '', $event_url );
}
// Append Events structure
$slug = _x( Tribe__Settings_Manager::get_option( 'eventsSlug', 'events' ), 'Archive Events Slug', 'the-events-calendar' );
$event_url .= trailingslashit( sanitize_title( $slug ) );
// if we're on an Event Cat, show the cat link, except for home and days.
if ( $type !== 'home' && is_tax( self::TAXONOMY ) && $term !== false && ! is_numeric( $term ) ) {
$term_link = get_term_link( get_query_var( 'term' ), self::TAXONOMY );
if ( ! is_wp_error( $term_link ) ) {
$event_url = trailingslashit( $term_link );
}
} elseif ( $term && is_numeric( $term ) ) {
$term_link = get_term_link( (int) $term, self::TAXONOMY );
if ( ! is_wp_error( $term_link ) ) {
$event_url = trailingslashit( $term_link );
}
}
switch ( $type ) {
case 'home':
$event_url = trailingslashit( esc_url_raw( $event_url ) );
break;
case 'month':
if ( $secondary ) {
$event_url = trailingslashit( esc_url_raw( $event_url . $secondary ) );
} else {
$event_url = trailingslashit( esc_url_raw( $event_url . $this->monthSlug ) );
}
break;
case 'list':
$event_url = trailingslashit( esc_url_raw( $event_url . $this->listSlug ) );
break;
case 'upcoming':
$event_url = trailingslashit( esc_url_raw( $event_url . $this->listSlug ) );
break;
case 'past':
$event_url = esc_url_raw( add_query_arg( 'tribe_event_display', 'past', trailingslashit( $event_url . $this->listSlug ) ) );
break;
case 'dropdown':
$event_url = esc_url_raw( $event_url );
break;
case 'single':
global $post;
$p = $secondary ? $secondary : $post;
$link = trailingslashit( get_permalink( $p ) );
$event_url = trailingslashit( esc_url_raw( $link ) );
break;
case 'day':
if ( empty( $secondary ) ) {
$secondary = $this->todaySlug;
} else {
$secondary = tribe_format_date( $secondary, false, Tribe__Date_Utils::DBDATEFORMAT );
}
$event_url = trailingslashit( esc_url_raw( $event_url . $secondary ) );
break;
default:
$event_url = esc_url_raw( $event_url );
break;
}
// Filter get link
$event_url = apply_filters( 'tribe_events_get_link', $event_url, $type, $secondary, $term, $url_args, $featured );
/**
* @deprecated 4.3
*/
$event_url = apply_filters( 'tribe_events_getLink', $event_url, $type, $secondary, $term, $url_args );
// Add the Arguments back
$event_url = add_query_arg( $url_args, $event_url );
return $event_url;
}