Last active
April 27, 2017 18:17
-
-
Save cliffordp/08386a29677d25d8fd6deb0fbfe75bf9 to your computer and use it in GitHub Desktop.
Shortcode to display count of authored Events, Organizers, and/or Venues per user. Defaults to displaying the currently logged-in user's public_only Events. https://cl.ly/1H3q0w140B10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Shortcode to display count of authored Events, Organizers, and/or Venues per user | |
* Defaults to displaying the currently logged-in user's public_only Events. | |
* Can be configured to specify a specific user ID. | |
* Valid values for the boolean arguments are either "true" for TRUE or anything else, like "" or "false", for FALSE | |
* Examples: https://cl.ly/1H3q0w140B10 | |
* [tribe_count_author_posts] | |
* [tribe_count_author_posts user_id=6] | |
* [tribe_count_author_posts events=true organizers=true venues=true public_only=false] | |
* | |
* From https://gist.github.com/cliffordp/08386a29677d25d8fd6deb0fbfe75bf9 | |
* For https://theeventscalendar.com/support/forums/topic/i-want-total-of-user-events-count-number/ | |
*/ | |
function tribe_count_author_posts_logic( $atts ) { | |
// bail if The Events Calendar is not active | |
if ( ! class_exists( 'Tribe__Events__Main' ) ) { | |
return false; | |
} | |
$defaults = array( | |
'user_id' => get_current_user_id(), | |
'events' => 'true', | |
'organizers' => '', | |
'venues' => '', | |
'public_only' => 'true', | |
); | |
$atts = shortcode_atts( $defaults, $atts, 'tribe_count_author_posts' ); | |
$user_id = intval( $atts[ 'user_id' ] ); | |
// https://developer.wordpress.org/reference/functions/get_userdata/ | |
$user_data = get_userdata( $user_id ); | |
// bail if user ID does not exist | |
if ( empty( $user_data ) ) { | |
return false; | |
} | |
$events = strtolower( trim( $atts[ 'events' ] ) ); | |
if ( 'true' !== $events ) { | |
$events = false; | |
} else { | |
$events = true; | |
} | |
$organizers = strtolower( trim( $atts[ 'organizers' ] ) ); | |
if ( 'true' !== $organizers ) { | |
$organizers = false; | |
} else { | |
$organizers = true; | |
} | |
$venues = strtolower( trim( $atts[ 'venues' ] ) ); | |
if ( 'true' !== $venues ) { | |
$venues = false; | |
} else { | |
$venues = true; | |
} | |
// bail if no posts types are selected | |
if ( empty( $events ) && empty( $organizers ) && empty( $venues ) ) { | |
return false; | |
} | |
$public_only = strtolower( trim( $atts[ 'public_only' ] ) ); | |
if ( 'true' !== $public_only ) { | |
$public_only = false; | |
} else { | |
$public_only = true; | |
} | |
// start the count | |
$count = 0; // cumulative | |
$c = 0; // temporary | |
$labels = ''; | |
if ( $events ) { | |
// do count | |
$c = count_user_posts( $user_id, Tribe__Events__Main::POSTTYPE, $public_only ); | |
$count = $count + $c; | |
$c = 0; | |
// do label | |
$label = Tribe__Events__Main::instance()->get_event_label_plural(); | |
if ( empty( $labels ) ) { | |
$labels = $label; | |
} else { | |
$labels .= sprintf( ', %s', $label ); | |
} | |
} | |
if ( $organizers ) { | |
// do count | |
$c = count_user_posts( $user_id, Tribe__Events__Main::ORGANIZER_POST_TYPE, $public_only ); | |
$count = $count + $c; | |
$c = 0; | |
// do label | |
$label = Tribe__Events__Main::instance()->get_organizer_label_plural(); | |
if ( empty( $labels ) ) { | |
$labels = $label; | |
} else { | |
$labels .= sprintf( ', %s', $label ); | |
} | |
} | |
if ( $venues ) { | |
// do count | |
$c = count_user_posts( $user_id, Tribe__Events__Main::VENUE_POST_TYPE, $public_only ); | |
$count = $count + $c; | |
$c = 0; | |
// do label | |
$label = Tribe__Events__Main::instance()->get_venue_label_plural(); | |
if ( empty( $labels ) ) { | |
$labels = $label; | |
} else { | |
$labels .= sprintf( ', %s', $label ); | |
} | |
} | |
// begin output | |
$output = sprintf( '<div id="tribe_count_author_posts_%d" class="tribe_count_author_posts">', $user_id ); | |
$output .= sprintf( '%d %s', $count, $labels ); | |
$output .= '</div>'; | |
return $output; | |
} | |
add_shortcode( 'tribe_count_author_posts', 'tribe_count_author_posts_logic' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment