WordPress.org

Ready to get started?Download WordPress

Forums

Interstrategy Events Manager
[resolved] Documentation? (11 posts)

  1. Roway13
    Member
    Posted 2 years ago #

    Looks like a great plugin, but I can't find any documentation. How do you use it? Shortcodes?

    http://wordpress.org/extend/plugins/interstrategy-events-manager/

  2. Bill Erickson
    Member
    Plugin Author

    Posted 2 years ago #

    I'll be writing tutorials for it soon. We just needed to get it live for a client site.

    The plugin handles only the backend, the frontend display must be done within your theme.

    - Create an archive-event.php template file to handle the event listing (accessible from /event ). If not provided, it will use your standard archive layout (archive.php or index.php).
    - Create a single-event.php template file to handle the single event (accessible from /event/event-name ). If not provided, it will use your standard single post layout (single.php)
    - In your theme, here's how to access the post metadata:

    $location = esc_attr( get_post_meta( $post->ID, 'be_events_manager_location', true ) );
    		$start = esc_attr( date( 'F j, Y', get_post_meta( $post->ID, 'be_events_manager_start_date', true ) ) );
    		$end = esc_attr( date( 'F j, Y', get_post_meta( $post->ID, 'be_events_manager_end_date', true ) ) );
    		$cost = esc_attr( get_post_meta( $post->ID, 'be_events_manager_cost', true ) );
    		$telephone = esc_attr( get_post_meta( $post->ID, 'be_events_manager_telephone', true ) );

    To make your archive page show only upcoming events and sort them by end date rather than publish date, add this to your functions.php file (I should probably move this into the plugin, so you won't need this on the next version):

    /**
     * Only show upcoming events in archive queries
     *
     */
    
    function be_event_query( $query ) {
    	global $wp_query;
    	if ( !is_admin() && $wp_query === $query && ( is_post_type_archive( 'event' ) || is_tax( 'event-category' ) ) ) {
    		$meta_query = array(
    			array(
    				'key' => 'be_events_manager_end_date',
    				'value' => time(),
    				'compare' => '>'
    			)
    		);
    		$query->set( 'orderby', 'meta_value_num' );
    		$query->set( 'order', 'ASC' );
    		$query->set( 'meta_query', $meta_query );
    	}
    }
    
    add_action( 'pre_get_posts', 'be_event_query' );

    I hope that helps get you started. I'm hoping to add to the plugin this weekend and write tutorials.

  3. Roway13
    Member
    Posted 2 years ago #

    Thanks, I look forward to the updates.

  4. dave
    Member
    Posted 2 years ago #

    Hey,

    I'm pretty new to the Genesis framework and I found your blog post (http://www.artofblog.com/building-a-genesis-child-theme/) really helpful to figure out a lot of what I need.

    I'm ending up using this plugin as well. I followed the code you had on that blog post to pull the events into a list on the sidebar, but I can't figure out how to get the event meta to show up.

    Your code lists the event title fine, but now I need the date (preferably in "Happening today..." "Happening October 20, 2011" format) on the next line. I'm calling it all from my child theme function file.

    Any help is much appreciated. Thanks for some great plugins and genesis help.

    Dave

  5. Bill Erickson
    Member
    Plugin Author

    Posted 2 years ago #

    Sorry, writing documentation is still on my to-do list :)

    All of the fields are stored as standard post meta. In the Barnwell theme we're displaying the start date and event categories on the archive page, and all the post meta on the single page. Both pages are using the "Genesis Post Info" area for this. You can of course put this data wherever you want, but I wrote a filter in functions.php to update the post info accordingly: https://gist.github.com/1289597

    Any customizations you'd like to make to the layout can be done in archive-event.php and single-event.php.

    I also recommend you use the archive-event.php template file for the "event category" taxonomy. This way you don't have to create two theme files with the same stuff in them. https://gist.github.com/1289603

    If you want even more control over it, you can disable the following:

    The creation of Events Category taxonomy (if you don't need it or want to create a new taxonomy).
    add_filter( 'be_events_manager_taxonomy_override', '__return_true' );

    The creation of Event Information metabox. You can then build your own by writing a function in functions.php ( https://gist.github.com/1289628 ):
    add_filter( 'be_events_manager_metabox_override', '__return_true' );

    The automatic filtering of the events post type. By default the plugin will sort by event date and exclude past events.
    add_filter( 'be_events_manager_query_override', '__return_true' );

    Hopefully that provides the documentation you need. Soon (I keep saying that) I'll write a blog post or two with more documentation.

  6. dave
    Member
    Posted 2 years ago #

    You've been really helpful with what's been written already, so no worries.

    Thanks for the help. I'll give that stuff a try.

  7. dave
    Member
    Posted 2 years ago #

    I think I'm getting the hang of Genesis finally, haha, but I do have a question(of course); probably a really simple answer that I'm just overlooking.

    What you just posted is working great pulling the meta I need for the archives page and single pages, but I noticed the sidebar code you used in Barnwell uses have_posts and then WP template tags to get the title, permalink, etc. I'm trying to show the date and other event-specific meta stuff here, so naturally, when I use get_the_date, I get the date the event was created, rather than the $start. I can see the $location, $end, etc being defined a few lines above the html, and that it differs from the archive and single pages by the $info variable you've defined, but how do I pull that start date here?

    I really appreciate the help, as I'm just one of those awful 'designers who takes violent stabs at coding.'

  8. Bill Erickson
    Member
    Plugin Author

    Posted 2 years ago #

    This line gets you the start date of the event:

    $start = esc_attr( date( 'F j, Y', get_post_meta( $post->ID, 'be_events_manager_start_date', true ) ) );

    There's a lot of stuff going on there, so I'll break it apart.

    • The start date is stored in metadata using the key be_events_manager_start_date
    • To get the metadata, we use the get_post_meta() function. The first variable is the post ID, second is the key, and third is whether it is single or not (in almost all cases this will be true)
    • Once you have the start date, you'll see it is stored as a UNIX timestamp, which is just a really long number (it's the number of seconds since Jan 1, 1970). We need to convert this to something usable using the date() function. the first argument is the date format, and the second is the unix timestamp (our post meta)
    • Finally, since this is information provided by the user, we can't trust it and must escape it. I'm using the escape attribute function, esc_attr. More
  9. dave
    Member
    Posted 2 years ago #

    Ok, I do understand how the date is constructed, it's just once it is, and the desired html is echo'd within an if-statement, how do I print/echo/pull that date?

    Sorry for my ignorance on the subject. I've figured this sort of thing out for "regular" wordpress, but my client insisted on Genesis, so I'm happy I'm learning.

  10. Bill Erickson
    Member
    Plugin Author

    Posted 2 years ago #

    If you're in the same function you can just use $start to echo or modify it. If you're outside that function you'll need to rebuild the $start variable.

    You could make $start a global variable, but then you'd need to come up with a unique way of separating each event (because on archive pages there will be multiple events): either give them all unique variable names like $start-[postID], or make $start an array with id => date.

    But this becomes much too complicated, so it's best just to get_post_meta to get the date again.

  11. kwameboame
    Member
    Posted 2 years ago #

    Hi Bill,

    I want to add a "search events by date" feature on my site with this plugin. This is what I have for my search form:

    <form action="<?php bloginfo('url'); ?>/" method="get" class="events-search-form">
    
    		Event Search:
    
          <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" class="searchinput" />
    		<!-- START Date Search -->
    		<span class="events-search-dates">
    			<?php _e('between','ghes'); ?>:
    			<input type="text" id="date-start-loc" class="inputbox"/>
    			<input type="hidden" id="date-start" name="scope[0]" value="<?php $start ?>" />
    			<?php _e('and','ghes'); ?>
    			<input type="text" id="date-end-loc" class="inputbox"/>
    			<input type="hidden" id="date-end" name="scope[1]" value="<?php $end ?>" />
    		</span>
    		<!-- END Date Search -->
    		<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('search_events'); ?>" />
    		<input type="submit" value="<?php _e('Search','ghes'); ?>" class="darkbtn" />
    	</form>

    I couldn't get this to work. Maybe I'm making a mistake somewhere? Please help.

    Thanks.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic