0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_event=$matches[1]&paged=$matches[2]', 'top' ); add_rewrite_rule( "$link/([^/]+)/?$", 'index.php?page_id='.$id.'&aec_event=$matches[1]', 'top' ); } // Single Category Page $id = $page_settings['category']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_category=$matches[1]&paged=$matches[2]', 'top' ); add_rewrite_rule( "$link/([^/]+)/?$", 'index.php?page_id='.$id.'&aec_category=$matches[1]', 'top' ); } // Single Tag Page $id = $page_settings['tag']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_tag=$matches[1]&paged=$matches[2]', 'top' ); add_rewrite_rule( "$link/([^/]+)/?$", 'index.php?page_id='.$id.'&aec_tag=$matches[1]', 'top' ); } // Single Venue Page $id = $page_settings['venue']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_venue=$matches[1]&paged=$matches[2]', 'top' ); add_rewrite_rule( "$link/([^/]+)/?$", 'index.php?page_id='.$id.'&aec_venue=$matches[1]', 'top' ); } // Single Organizer Page $id = $page_settings['organizer']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_organizer=$matches[1]&paged=$matches[2]', 'top' ); add_rewrite_rule( "$link/([^/]+)/?$", 'index.php?page_id='.$id.'&aec_organizer=$matches[1]', 'top' ); } // Event Form [ Edit Page ] $id = $page_settings['event_form']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_action=$matches[1]&aec_id=$matches[2]', 'top' ); } // Venue Form [ Edit Page ] $id = $page_settings['venue_form']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_action=$matches[1]&aec_id=$matches[2]', 'top' ); } // Organizer Form [ Edit Page ] $id = $page_settings['organizer_form']; if( $id > 0 ) { $link = str_replace( $url, '', get_permalink( $id ) ); $link = trim( $link, '/' ); add_rewrite_rule( "$link/([^/]+)/([0-9]{1,})/?$", 'index.php?page_id='.$id.'&aec_action=$matches[1]&aec_id=$matches[2]', 'top' ); } // Rewrite tags add_rewrite_tag( '%aec_event%', '([^/]+)' ); add_rewrite_tag( '%aec_category%', '([^/]+)' ); add_rewrite_tag( '%aec_tag%', '([^/]+)' ); add_rewrite_tag( '%aec_venue%', '([^/]+)' ); add_rewrite_tag( '%aec_organizer%', '([^/]+)' ); add_rewrite_tag( '%aec_id%', '([0-9]{1,})' ); } /** * Flush rewrite rules when it's necessary. * * @since 1.0.0 * @access public */ public function maybe_flush_rules() { $rewrite_rules = get_option( 'rewrite_rules' ); if( $rewrite_rules ) { global $wp_rewrite; foreach( $rewrite_rules as $rule => $rewrite ) { $rewrite_rules_array[$rule]['rewrite'] = $rewrite; } $rewrite_rules_array = array_reverse( $rewrite_rules_array, true ); $maybe_missing = $wp_rewrite->rewrite_rules(); $missing_rules = false; foreach( $maybe_missing as $rule => $rewrite ) { if( ! array_key_exists( $rule, $rewrite_rules_array ) ) { $missing_rules = true; break; } } if( true === $missing_rules ) { flush_rewrite_rules(); } } } /** * Register the stylesheets for the public-facing side of the site. * * @since 1.0.0 */ public function enqueue_styles() { $settings = get_option( 'aec_general_settings'); wp_register_style( 'jquery-ui-css', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css' ); $deps = array( 'jquery-ui-css' ); if( array_key_exists( 'bootstrap', $settings ) && in_array( 'css', $settings['bootstrap'] ) ) { wp_register_style( AEC_PLUGIN_SLUG.'-bootstrap', AEC_PLUGIN_URL.'public/css/bootstrap.css', array(), AEC_PLUGIN_VERSION, 'all' ); $deps[] = AEC_PLUGIN_SLUG.'-bootstrap'; } wp_register_style( AEC_PLUGIN_SLUG, AEC_PLUGIN_URL.'public/css/aec-public.css', $deps, AEC_PLUGIN_VERSION, 'all' ); if( is_singular('aec_events') ) { wp_enqueue_style( AEC_PLUGIN_SLUG ); } } /** * Register the JavaScript for the public-facing side of the site. * * @since 1.0.0 */ public function enqueue_scripts() { $general_settings = get_option( 'aec_general_settings' ); $map_settings = get_option( 'aec_map_settings' ); $deps = array( 'jquery' ,'jquery-ui-datepicker' ); if( array_key_exists( 'bootstrap', $general_settings ) && in_array( 'javascript', $general_settings['bootstrap'] ) ) { wp_register_script( AEC_PLUGIN_SLUG.'-bootstrap', AEC_PLUGIN_URL.'public/js/bootstrap.min.js', array( 'jquery' ), AEC_PLUGIN_VERSION, true ); $deps[] = AEC_PLUGIN_SLUG.'-bootstrap'; } wp_register_script( AEC_PLUGIN_SLUG, AEC_PLUGIN_URL.'public/js/aec-public.js', $deps, AEC_PLUGIN_VERSION, true ); wp_localize_script( AEC_PLUGIN_SLUG, 'aec', array( 'plugin_url' => AEC_PLUGIN_URL, 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'zoom' => ! empty( $map_settings['zoom_level'] ) ? $map_settings['zoom_level'] : 5, 'i18n_organizer' => __( 'Organizer', 'another-events-calendar' ) ) ); // Validator wp_register_script( AEC_PLUGIN_SLUG.'-bootstrap-validator', AEC_PLUGIN_URL.'public/js/validator.js', array( 'jquery' ), AEC_PLUGIN_VERSION, false ); // Marker Cluster wp_register_script( AEC_PLUGIN_SLUG.'-markercluster', AEC_PLUGIN_URL.'public/js/markerclusterer.js', array( 'jquery' ), AEC_PLUGIN_VERSION, false ); // Google Map $api_key = ! empty( $map_settings['api_key'] ) ? '&key='.$map_settings['api_key'] : ''; wp_register_script( AEC_PLUGIN_SLUG.'-google-map', '//maps.googleapis.com/maps/api/js?v=3.exp'.$api_key ); if( is_singular('aec_events') ) { wp_enqueue_script( AEC_PLUGIN_SLUG.'-google-map' ); wp_enqueue_script( AEC_PLUGIN_SLUG ); } } /** * Adds the Facebook OG tags and Twitter Cards. * * @since 1.0.0 * @access public */ public function og_metatags() { global $post; if( empty( $post ) ) return; $page_settings = get_option( 'aec_page_settings' ); $socialshare_settings = get_option( 'aec_socialshare_settings' ); $page = ''; if( is_singular('aec_events') ) { $page = 'event_detail'; } else { if( $page_settings['categories'] == $post->ID ) { $page = 'categories'; } if( in_array( $post->ID, array( $page_settings['calendar'], $page_settings['events'], $page_settings['category'], $page_settings['tag'], $page_settings['venue'], $page_settings['organizer'], $page_settings['search'] ) ) ) { $page = 'event_archives'; } } if( isset( $socialshare_settings['pages'] ) && in_array( $page, $socialshare_settings['pages'] ) ) { $permalink = aec_get_current_url(); $title = get_the_title(); $content = get_the_content(); $post_thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' ); // If current page = single category page if( $post->ID == $page_settings['category'] ) { $slug = get_query_var( 'aec_category' ); if( $slug && $term = get_term_by( 'slug', $slug, 'aec_categories' ) ) { $title = $term->name; $content = $term->description; } } // If current page = single tag page if( $post->ID == $page_settings['tag'] ) { $slug = get_query_var( 'aec_tag' ); if( $slug && $term = get_term_by( 'slug', $slug, 'aec_tags' ) ) { $title = $term->name; $content = $term->description; } } // If current page = single venue page if( $post->ID == $page_settings['venue'] ) { $slug = get_query_var( 'aec_venue' ); if( $slug && $page = get_page_by_path( $slug, OBJECT, 'aec_venues' ) ) { $title = $page->post_title; $content = $page->post_content; } } // If current page = single organizer page if( $post->ID == $page_settings['organizer'] ) { $slug = get_query_var( 'aec_organizer' ); if( $slug && $page = get_page_by_path( $slug, OBJECT, 'aec_organizers' ) ) { $title = $page->post_title; $content = $page->post_content; $post_thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $page->ID ), 'full' ); } } // ... $meta = array(); $meta[] = ''; $meta[] = ''; $meta[] = ''; if( ! empty( $content ) ) $meta[] = ''; if( ! empty( $post_thumbnail ) ) $meta[] = ''; $meta[] = ''; $meta[] = ''; echo "\n".implode("\n", $meta)."\n"; } } /** * Change the current page title if applicable. * * @since 1.0.0 * @access public * * @params string $title Current page title. * @return string $title Modified page title. */ public function the_title( $title ) { global $id, $post; if( is_singular('aec_events') && 'aec_events' == $post->post_type ) return $title; if( is_page() && in_the_loop() ) { $page_settings = get_option( 'aec_page_settings' ); // Change Recurring events page title if( $id == $page_settings['events'] ) { $slug = get_query_var( 'aec_event' ); if( $slug && $page = get_page_by_path( $slug, OBJECT, 'aec_events' ) ) { $title = $page->post_title; } } // Change Category page title if( $id == $page_settings['category'] ) { $slug = get_query_var( 'aec_category' ); if( $slug && $term = get_term_by( 'slug', $slug, 'aec_categories' ) ) { $title = $term->name; } } // Change Tag page title if( $id == $page_settings['tag'] ) { $slug = get_query_var( 'aec_tag' ); if( $slug && $term = get_term_by( 'slug', $slug, 'aec_tags' ) ) { $title = $term->name; } } // Change Venue page title if( $id == $page_settings['venue'] ) { $slug = get_query_var( 'aec_venue' ); if( $slug && $page = get_page_by_path( $slug, OBJECT, 'aec_venues' ) ) { $title = $page->post_title; } } // Change Organizer page title if( $id == $page_settings['organizer'] ) { $slug = get_query_var( 'aec_organizer' ); if( $slug && $page = get_page_by_path( $slug, OBJECT, 'aec_organizers' ) ) { $title = $page->post_title; } } } return $title; } /** * Change the current page title if applicable. * * @since 1.7.0 * @access public * * @param string $title The document title. * @param string $sep Title separator. * @param string $seplocation Location of the separator (left or right). * @return string The filtered title. */ public function wp_title( $title, $sep = '', $seplocation = '' ) { global $post; $page_settings = get_option( 'aec_page_settings' ); $custom_title = ''; $site_name = get_bloginfo( 'name' ); // Change Recurring events page title if( $post->ID == $page_settings['events'] ) { if( $slug = get_query_var( 'aec_event' ) ) { $page = get_page_by_path( $slug, OBJECT, 'aec_recurring_events' ); $custom_title = $page->post_title; } } // Change Category page title if( $post->ID == $page_settings['category'] ) { if( $slug = get_query_var( 'aec_category' ) ) { $term = get_term_by( 'slug', $slug, 'aec_categories' ); $custom_title = $term->name; } } // Change Tag page title if( $post->ID == $page_settings['tag'] ) { if( $slug = get_query_var( 'aec_tag' ) ) { $term = get_term_by( 'slug', $slug, 'aec_tags' ); $custom_title = $term->name; } } // Change Venue page title if( $post->ID == $page_settings['venue'] ) { if( $slug = get_query_var( 'aec_venue' ) ) { $page = get_page_by_path( $slug, OBJECT, 'aec_venues' ); $custom_title = $page->post_title; } } // Change Organizer page title if( $post->ID == $page_settings['organizer'] ) { if( $slug = get_query_var( 'aec_organizer' ) ) { $page = get_page_by_path( $slug, OBJECT, 'aec_organizers' ); $custom_title = $page->post_title; } } // ... if( ! empty( $custom_title ) ) { $title = ( 'left' == $seplocation ) ? "$site_name $sep $custom_title" : "$custom_title $sep $site_name"; } return $title; } /** * Fix conflict with the YOAST plugin when updating the post/page title. * * @since 1.7.0 * @access public * * @param array $title The document title. * @return Filtered title. */ public function pre_get_document_title( $title ) { global $post; if( ! isset( $post ) ) return $title; $page_settings = get_option( 'aec_page_settings' ); $aec_pages = array( $page_settings['events'], $page_settings['category'], $page_settings['tag'], $page_settings['venue'], $page_settings['organizer'] ); if( in_array( $post->ID, $aec_pages ) ) { $title = ''; } return $title; } /** * Override the default post/page title. * * @since 1.7.0 * @access public * * @param array $title The document title parts. * @return Filtered title parts. */ public function document_title_parts( $title ) { global $post; if( ! isset( $post ) ) return $title; $page_settings = get_option( 'aec_page_settings' ); // Change Recurring events page title if( $post->ID == $page_settings['events'] ) { if( $slug = get_query_var( 'aec_event' ) ) { $page = get_page_by_path( $slug, OBJECT, 'aec_recurring_events' ); $title['title'] = $page->post_title; } } // Change Category page title if( $post->ID == $page_settings['category'] ) { if( $slug = get_query_var( 'aec_category' ) ) { $term = get_term_by( 'slug', $slug, 'aec_categories' ); $title['title'] = $term->name; } } // Change Tag page title if( $post->ID == $page_settings['tag'] ) { if( $slug = get_query_var( 'aec_tag' ) ) { $term = get_term_by( 'slug', $slug, 'aec_tags' ); $title['title'] = $term->name; } } // Change Venue page title if( $post->ID == $page_settings['venue'] ) { if( $slug = get_query_var( 'aec_venue' ) ) { $page = get_page_by_path( $slug, OBJECT, 'aec_venues' ); $title['title'] = $page->post_title; } } // Change Organizer page title if( $post->ID == $page_settings['organizer'] ) { if( $slug = get_query_var( 'aec_organizer' ) ) { $page = get_page_by_path( $slug, OBJECT, 'aec_organizers' ); $title['title'] = $page->post_title; } } // ... return $title; } }