__( 'Events', 'neuf_event'), 'singular_name' => __( 'Event', 'neuf_event'), 'add_new' => __( 'Add New', 'neuf_event'), 'add_new_item' => __( 'Add New', 'neuf_event'), 'edit_item' => __( 'Edit Event', 'neuf_event'), 'new_item' => __( 'Add New Event', 'neuf_event'), 'view_item' => __( 'View Event', 'neuf_event'), 'search_items' => __( 'Search Events', 'neuf_event'), 'not_found' => __( 'No events found', 'neuf_event'), 'not_found_in_trash' => __( 'No events found in trash', 'neuf_event') ); register_post_type( 'event', array( 'labels' => $labels, 'menu_position' => 5, 'public' => true, 'publicly_queryable' => true, 'query_var' => 'event', 'show_ui' => true, 'capability_type' => 'post', 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'revisions', 'administrator', 'custom-fields' ), 'register_meta_box_cb' => 'add_events_metaboxes', 'rewrite' => array( 'slug' => __( 'event', 'neuf_event' ), ), ) ); } /* When the post is saved, save our custom data */ function neuf_events_save_post( $post_id, $post ) { // verify this came from the our screen and with proper authorization, // because save_post can be triggered at other times if ( !array_key_exists('neuf_events_nonce', $_POST) || !wp_verify_nonce( $_POST['neuf_events_nonce'], 'neuf_events_nonce' )) { return $post_id; } // If this is an auto save routine, our form has not been submitted, // and we do nothing. if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; // Check permissions if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; // Date strings are converted to unix time $tosave['_neuf_events_starttime'] = strtotime( $_POST['_neuf_events_starttime'] ); $tosave['_neuf_events_endtime'] = strtotime( $_POST['_neuf_events_endtime'] ); $tosave['_neuf_events_price_regular'] = $_POST['_neuf_events_price_regular']; $tosave['_neuf_events_price_member'] = $_POST['_neuf_events_price_member']; $tosave['_neuf_events_bs_url'] = $_POST['_neuf_events_bs_url']; $tosave['_neuf_events_fb_url'] = $_POST['_neuf_events_fb_url']; $tosave['_neuf_events_venue'] = $_POST['_neuf_events_venue']; $tosave['_neuf_events_promo_period'] = $_POST['_neuf_events_promo_period']; // Update or add post meta foreach($tosave as $key=>$value) if(!update_post_meta($post_id, $key, $value)) { add_post_meta($post_id, $key, $value, true); } return $post_id; } /** * Set post variables. * * Add some handy variables to the global $post. Added to the 'the_post' action hook. */ function neuf_events_the_post( &$post ) { // Only apply to events if ( 'event' != get_post_type() ) return; $post->neuf_events_venue = get_post_meta( get_the_ID() , '_neuf_events_venue' , true ); $post->neuf_events_fb_url = get_post_meta( get_the_ID() , '_neuf_events_fb_url' , true ); $post->neuf_events_ticket_url = get_post_meta( get_the_ID() , '_neuf_events_bs_url' , true ); $post->neuf_events_price_regular = get_post_meta( get_the_ID() , '_neuf_events_price_regular' , true ); $post->neuf_events_price_member = get_post_meta( get_the_ID() , '_neuf_events_price_member' , true ); $post->neuf_events_starttime = get_post_meta( get_the_ID() , '_neuf_events_starttime' , true ); $post->neuf_events_endtime = get_post_meta( get_the_ID() , '_neuf_events_endtime' , true ); $post->neuf_events_endtime = $post->neuf_events_endtime ? $post->neuf_events_endtime : $post->neuf_events_starttime + 7200; // No endtime? Assume 2 hours $post->neuf_events_gcal_url = "http://www.google.com/calendar/event?action=TEMPLATE"; $post->neuf_events_gcal_url .= "&text=" . rawurlencode(get_the_title()); $post->neuf_events_gcal_url .= "&details=" . rawurlencode(get_the_excerpt()); $post->neuf_events_gcal_url .= "&location=Det%20Norske%20Studentersamfund,%20Slemdalsveien%2015,%20Oslo"; $post->neuf_events_gcal_url .= "&trp=true"; $post->neuf_events_gcal_url .= "&sprop=website:" . rawurlencode(get_permalink()); $post->neuf_events_gcal_url .= "&sprop=name:Det%20Norske%20Studentersamfund"; $post->neuf_events_gcal_url .= "&dates=" . date( 'Ymd\THis\Z' , $post->neuf_events_starttime - ( get_option('gmt_offset') * 3600 ) ); $post->neuf_events_gcal_url .= "/" . date( 'Ymd\THis\Z' , $post->neuf_events_starttime - ( get_option('gmt_offset') * 3600 ) ); } /** Sample table view of events */ function neuf_events_program() { global $post, $wp_locale; $events = new WP_Query( array( 'post_type' => 'event', 'posts_per_page' => -1, 'meta_key' => '_neuf_events_starttime', 'orderby' => 'meta_value', 'order' => 'ASC' ) ); if ( $events->have_posts() ) : $date = ""; ob_start(); echo '