defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );/** * When WP sets the update_plugins site transient, we set our own transient, then see rocket_add_response_to_updates * * @since 2.6.5 * * @param Object $value Site transient object. */ function rocket_check_update( $value ) { $timer_update_wprocket = (int) get_site_transient( 'update_wprocket' ); $temp_object = get_site_transient( 'update_wprocket_response' ); if ( ( ! isset( $_GET['rocket_force_update'] ) || defined( 'WP_INSTALLING' ) ) && ( 12 * HOUR_IN_SECONDS ) > ( time() - $timer_update_wprocket ) // retry in 12 hours. ) { if ( is_object( $value ) && false !== $temp_object ) { if ( version_compare( $temp_object->new_version, WP_ROCKET_VERSION ) > 0 ) { $value->response[ $temp_object->plugin ] = $temp_object; } else { delete_site_transient( 'update_wprocket_response' ); } } return $value; }if ( isset( $_GET['rocket_force_update'] ) ) { $_SERVER['REQUEST_URI'] = remove_query_arg( 'rocket_force_update' ); }$plugin_folder = plugin_basename( dirname( WP_ROCKET_FILE ) ); $plugin_file = basename( WP_ROCKET_FILE ); $version = true; if ( ! $value ) { $value = new stdClass(); $value->last_checked = time(); }$response = wp_remote_get( WP_ROCKET_WEB_CHECK, array( 'timeout' => 30, ) ); if ( ! is_a( $response, 'WP_Error' ) && 200 === $response['response']['code'] && strlen( $response['body'] ) > 32 ) {set_site_transient( 'update_wprocket', time() );list( $version, $url ) = explode( '|', $response['body'] ); if ( version_compare( $version, WP_ROCKET_VERSION ) <= 0 ) { return $value; }$temp_array = array( 'slug' => $plugin_folder, 'plugin' => $plugin_folder . '/' . $plugin_file, 'new_version' => $version, 'url' => 'http://wp-rocket.me', 'package' => $url, );$temp_object = (object) $temp_array; $value->response[ $plugin_folder . '/' . $plugin_file ] = $temp_object;set_site_transient( 'update_wprocket_response', $temp_object ); } else { set_site_transient( 'update_wprocket', ( time() + ( 11 * HOUR_IN_SECONDS ) ) ); // retry in 1 hour in case of error.. } return $value; } add_filter( 'site_transient_update_plugins', 'rocket_check_update', 1 );/** * When WP deletes the update_plugins site transient or updates the plugins, we delete our own transients to avoid another 12 hours waiting * * @since 2.6.8 * * @param string $transient Transient name. * @param object $value Transient object. */ function rocket_reset_check_update_timer( $transient = 'update_plugins', $value = null ) { // $value used by setted. if ( 'update_plugins' === $transient ) { if ( is_null( $value ) || is_object( $value ) && ! isset( $value->response ) ) { delete_site_transient( 'update_wprocket' ); } } } add_action( 'wp_update_plugins', 'rocket_reset_check_update_timer', 9 ); // WP Cron. add_action( 'deleted_site_transient', 'rocket_reset_check_update_timer' ); add_action( 'setted_site_transient', 'rocket_reset_check_update_timer' );defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );global $wp_version;if ( version_compare( $wp_version, '4.2' ) >= 0 && get_rocket_option( 'emoji', 0 ) ) : /** * Disable the emoji functionality to reduce then number of external HTTP requests. * * @since 2.7 */ function rocket_disable_emoji() { remove_action( 'wp_head' , 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts' , 'print_emoji_detection_script' ); remove_filter( 'the_content_feed' , 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss' , 'wp_staticize_emoji' ); remove_filter( 'wp_mail' , 'wp_staticize_emoji_for_email' ); } add_action( 'init', 'rocket_disable_emoji' );/** * Remove the tinymce emoji plugin. * * @since 2.7 * * @param Array $plugins Plugins loaded for TinyMCE. */ function rocket_disable_emoji_tinymce( $plugins ) { if ( is_array( $plugins ) ) { return array_diff( $plugins, array( 'wpemoji' ) ); }return array(); } add_filter( 'tiny_mce_plugins', 'rocket_disable_emoji_tinymce' ); endif;defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );global $wp_version;if ( version_compare( $wp_version, '4.4' ) >= 0 && get_rocket_option( 'embeds', 0 ) ) : /** * Disable embeds on init. * * - Removes the needed query vars. * - Disables oEmbed discovery. * - Completely removes the related JavaScript. * * @since 2.10 * @author Remy Perona */ function rocket_disable_embeds_init() { /* @var WP $wp */ global $wp;// Remove the embed query var. $wp->public_query_vars = array_diff( $wp->public_query_vars, array( 'embed', ) );// Remove the REST API endpoint. remove_action( 'rest_api_init', 'wp_oembed_register_route' );// Turn off oEmbed auto discovery. add_filter( 'embed_oembed_discover', '__return_false' );// Don't filter oEmbed results. remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );// Remove oEmbed discovery links. remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );// Remove oEmbed-specific JavaScript from the front-end and back-end. remove_action( 'wp_head', 'wp_oembed_add_host_js' ); add_filter( 'tiny_mce_plugins', 'rocket_disable_embeds_tiny_mce_plugin' );// Remove all embeds rewrite rules. add_filter( 'rewrite_rules_array', 'rocket_disable_embeds_rewrites' );// Remove filter of the oEmbed result before any HTTP requests are made. remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 ); } add_action( 'init', 'rocket_disable_embeds_init', 9999 );/** * Removes the 'wpembed' TinyMCE plugin. * * @since 2.10 * @author Remy Perona * * @param array $plugins List of TinyMCE plugins. * @return array The modified list. */ function rocket_disable_embeds_tiny_mce_plugin( $plugins ) { return array_diff( $plugins, array( 'wpembed' ) ); }/** * Remove all rewrite rules related to embeds. * * @since 2.10 * @author Remy Perona * * @param array $rules WordPress rewrite rules. * @return array Rewrite rules without embeds rules. */ function rocket_disable_embeds_rewrites( $rules ) { foreach ( $rules as $rule => $rewrite ) { if ( false !== strpos( $rewrite, 'embed=true' ) ) { unset( $rules[ $rule ] ); } }return $rules; } endif;defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );// Launch hooks that deletes all the cache domain. add_action( 'switch_theme' , 'rocket_clean_domain' ); // When user change theme. add_action( 'user_register' , 'rocket_clean_domain' ); // When a user is added. add_action( 'profile_update' , 'rocket_clean_domain' ); // When a user is updated. add_action( 'deleted_user' , 'rocket_clean_domain' ); // When a user is deleted. add_action( 'wp_update_nav_menu' , 'rocket_clean_domain' ); // When a custom menu is update. add_action( 'update_option_sidebars_widgets' , 'rocket_clean_domain' ); // When you change the order of widgets. add_action( 'update_option_category_base' , 'rocket_clean_domain' ); // When category permalink prefix is update. add_action( 'update_option_tag_base' , 'rocket_clean_domain' ); // When tag permalink prefix is update. add_action( 'permalink_structure_changed' , 'rocket_clean_domain' ); // When permalink structure is update. add_action( 'create_term' , 'rocket_clean_domain' ); // When a term is created. add_action( 'edited_terms' , 'rocket_clean_domain' ); // When a term is updated. add_action( 'delete_term' , 'rocket_clean_domain' ); // When a term is deleted. add_action( 'add_link' , 'rocket_clean_domain' ); // When a link is added. add_action( 'edit_link' , 'rocket_clean_domain' ); // When a link is updated. add_action( 'delete_link' , 'rocket_clean_domain' ); // When a link is deleted. add_action( 'customize_save' , 'rocket_clean_domain' ); // When customizer is saved. add_action( 'update_option_theme_mods_' . get_option( 'stylesheet' ), 'rocket_clean_domain' ); // When location of a menu is updated./** * Purge cache When a widget is updated * * @since 1.1.1 * * @param object $instance Widget instance. * @return object Widget instance */ function rocket_widget_update_callback( $instance ) { rocket_clean_domain(); return $instance; } add_filter( 'widget_update_callback', 'rocket_widget_update_callback' );/** * Update cache when a post is updated or commented * * @since 2.8 Only add post type archive if post type is not post * @since 2.6 Purge the page defined in "Posts page" option * @since 2.5.5 Don't cache for auto-draft post status * @since 1.3.2 Add wp_update_comment_count to purge cache when a comment is added/updated/deleted * @since 1.3.0 Compatibility with WPML * @since 1.3.0 Add 2 hooks : before_rocket_clean_post, after_rocket_clean_post * @since 1.3.0 Purge all parents of the post and the author page * @since 1.2.2 Add wp_trash_post and delete_post to purge cache when a post is trashed or deleted * @since 1.1.3 Use clean_post_cache instead of transition_post_status, transition_comment_status and preprocess_comment * @since 1.0 * * @param int $post_id The post ID. */ function rocket_clean_post( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) ) { return; }$purge_urls = array();// Get all post infos. $post = get_post( $post_id );// Return if $post is not an object. if ( ! is_object( $post ) ) { return; }// No purge for specific conditions. if ( 'auto-draft' === $post->post_status || empty( $post->post_type ) || 'nav_menu_item' === $post->post_type ) { return; }// Don't purge if post's post type is not public or not publicly queryable. $post_type = get_post_type_object( $post->post_type ); if ( ! is_object( $post_type ) || true !== $post_type->public ) { return; }// Get the post language. $lang = false;// WPML. if ( rocket_is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) && ! rocket_is_plugin_active( 'woocommerce-multilingual/wpml-woocommerce.php' ) ) { $lang = $GLOBALS['sitepress']->get_language_for_element( $post_id, 'post_' . get_post_type( $post_id ) );// Polylang. } elseif ( rocket_is_plugin_active( 'polylang/polylang.php' ) || rocket_is_plugin_active( 'polylang-pro/polylang.php' ) ) { $lang = pll_get_post_language( $post_id ); }// Get the permalink structure. $permalink_structure = get_rocket_sample_permalink( $post_id );// Get permalink. $permalink = str_replace( array( '%postname%', '%pagename%' ), $permalink_structure[1], $permalink_structure[0] );// Add permalink. if ( rocket_extract_url_component( $permalink, PHP_URL_PATH ) !== '/' ) { array_push( $purge_urls, $permalink ); }// Add Posts page. if ( 'post' === $post->post_type && (int) get_option( 'page_for_posts' ) > 0 ) { array_push( $purge_urls, get_permalink( get_option( 'page_for_posts' ) ) ); }// Add Post Type archive. if ( 'post' !== $post->post_type ) { $post_type_archive = get_post_type_archive_link( get_post_type( $post_id ) ); if ( $post_type_archive ) { $post_type_archive = trailingslashit( $post_type_archive ); array_push( $purge_urls, $post_type_archive . 'index.html' ); array_push( $purge_urls, $post_type_archive . 'index.html_gzip' ); array_push( $purge_urls, $post_type_archive . $GLOBALS['wp_rewrite']->pagination_base ); } }// Add next post. $next_post = get_adjacent_post( false, '', false ); if ( $next_post ) { array_push( $purge_urls, get_permalink( $next_post ) ); }// Add next post in same category. $next_in_same_cat_post = get_adjacent_post( true, '', false ); if ( $next_in_same_cat_post && $next_in_same_cat_post !== $next_post ) { array_push( $purge_urls, get_permalink( $next_in_same_cat_post ) ); }// Add previous post. $previous_post = get_adjacent_post( false, '', true ); if ( $previous_post ) { array_push( $purge_urls, get_permalink( $previous_post ) ); }// Add previous post in same category. $previous_in_same_cat_post = get_adjacent_post( true, '', true ); if ( $previous_in_same_cat_post && $previous_in_same_cat_post !== $previous_post ) { array_push( $purge_urls, get_permalink( $previous_in_same_cat_post ) ); }// Add urls page to purge every time a post is save. $cache_purge_pages = get_rocket_option( 'cache_purge_pages' ); if ( $cache_purge_pages ) { global $blog_id;$home_url = get_option( 'home' );if ( ! empty( $blog_id ) && is_multisite() ) { switch_to_blog( $blog_id ); $home_url = get_option( 'home' ); restore_current_blog(); }foreach ( $cache_purge_pages as $page ) { $page = trailingslashit( $home_url ) . $page; array_push( $purge_urls, $page ); } }// Add all terms archive page to purge. $purge_terms = get_rocket_post_terms_urls( $post_id ); if ( count( $purge_terms ) ) { $purge_urls = array_merge( $purge_urls, $purge_terms ); }// Add all dates archive page to purge. $purge_dates = get_rocket_post_dates_urls( $post_id ); if ( count( $purge_dates ) ) { $purge_urls = array_merge( $purge_urls, $purge_dates ); }// Add the author page. $purge_author = array( get_author_posts_url( $post->post_author ) ); $purge_urls = array_merge( $purge_urls, $purge_author );// Add all parents. $parents = get_post_ancestors( $post_id ); if ( (bool) $parents ) { foreach ( $parents as $parent_id ) { array_push( $purge_urls, get_permalink( $parent_id ) ); } }/** * Fires before cache files related with the post are deleted * * @since 1.3.0 * * @param obj $post The post object * @param array $purge_urls URLs cache files to remove * @param string $lang The post language */ do_action( 'before_rocket_clean_post', $post, $purge_urls, $lang );/** * Filter URLs cache files to remove * * @since 1.0 * * @param array $purge_urls List of URLs cache files to remove */ $purge_urls = apply_filters( 'rocket_post_purge_urls', $purge_urls, $post );// Purge all files. rocket_clean_files( $purge_urls );// Never forget to purge homepage and their pagination. rocket_clean_home( $lang );// Purge home feeds (blog & comments). rocket_clean_home_feeds();/** * Fires after cache files related with the post are deleted * * @since 1.3.0 * * @param obj $post The post object * @param array $purge_urls URLs cache files to remove * @param string $lang The post language */ do_action( 'after_rocket_clean_post', $post, $purge_urls, $lang ); } add_action( 'wp_trash_post' , 'rocket_clean_post' ); add_action( 'delete_post' , 'rocket_clean_post' ); add_action( 'clean_post_cache' , 'rocket_clean_post' ); add_action( 'wp_update_comment_count' , 'rocket_clean_post' );/** * Add pattern to clean files of connected users * * @since 2.0 * * @param array $urls An array of URLs to clean. * @return array An array of pattern to use for clearing the cache */ function rocket_clean_files_users( $urls ) { $pattern_urls = array(); foreach ( $urls as $url ) { $parse_url = get_rocket_parse_url( $url ); $pattern_urls[] = $parse_url['scheme'] . '://' . $parse_url['host'] . '*' . $parse_url['path']; } return $pattern_urls; } add_filter( 'rocket_clean_files', 'rocket_clean_files_users' );/** * Return all translated version of a post when qTranslate is used. * Use the "rocket_post_purge_urls" filter to insert URLs of traduction post * * @since 1.3.5 * * @param array $urls An array of URLs to clean. * @return array Updated array of URLs to clean */ function rocket_post_purge_urls_for_qtranslate( $urls ) { if ( rocket_is_plugin_active( 'qtranslate/qtranslate.php' ) || rocket_is_plugin_active( 'qtranslate-x/qtranslate.php' ) ) {global $q_config;// Get all languages. $enabled_languages = $q_config['enabled_languages'];// Remove default language. $enabled_languages = array_diff( $enabled_languages, array( $q_config['default_language'] ) );// Add translate URLs. foreach ( $urls as $url ) { foreach ( $enabled_languages as $lang ) { if ( rocket_is_plugin_active( 'qtranslate/qtranslate.php' ) ) { $urls[] = qtrans_convertURL( $url, $lang, true ); } elseif ( rocket_is_plugin_active( 'qtranslate-x/qtranslate.php' ) ) { $urls[] = qtranxf_convertURL( $url, $lang, true ); } } } }return $urls; } add_filter( 'rocket_post_purge_urls', 'rocket_post_purge_urls_for_qtranslate' );/** * Actions to be done after the purge cache files of a post * By Default, this hook call the WP Rocket Bot (cache json) * * @since 1.3.0 * * @param object $post The post object. * @param array $purge_urls An array of URLs to clean. * @param string $lang The language to clean. */ function run_rocket_bot_after_clean_post( $post, $purge_urls, $lang ) { // Run robot only if post is published. if ( 'publish' !== $post->post_status ) { return false; }// Add Homepage URL to $purge_urls for bot crawl. array_push( $purge_urls, get_rocket_i18n_home_url( $lang ) );// Add default WordPress feeds (posts & comments). array_push( $purge_urls, get_feed_link() ); array_push( $purge_urls, get_feed_link( 'comments_' ) );// Get the author page. $purge_author = array( get_author_posts_url( $post->post_author ) );// Get all dates archive page. $purge_dates = get_rocket_post_dates_urls( $post->ID );// Remove dates archives page and author page to preload cache. $purge_urls = array_diff( $purge_urls, $purge_dates, $purge_author );// Create json file and run WP Rocket Bot. $json_encode_urls = '["' . implode( '","', array_filter( $purge_urls ) ) . '"]'; if ( rocket_put_content( WP_ROCKET_PATH . 'cache.json', $json_encode_urls ) ) { global $do_rocket_bot_cache_json; $do_rocket_bot_cache_json = true; } } add_action( 'after_rocket_clean_post', 'run_rocket_bot_after_clean_post', 10, 3 );/** * Actions to be done after the purge cache files of a term * By Default, this hook call the WP Rocket Bot (cache json) * * @since 2.6.8 * * @param object $post The post object. * @param array $purge_urls An array of URLs to clean. * @param string $lang The language to clean. */ function run_rocket_bot_after_clean_term( $post, $purge_urls, $lang ) { // Add Homepage URL to $purge_urls for bot crawl. array_push( $purge_urls, get_rocket_i18n_home_url( $lang ) );// Create json file and run WP Rocket Bot. $json_encode_urls = '["' . implode( '","', array_filter( $purge_urls ) ) . '"]'; if ( rocket_put_content( WP_ROCKET_PATH . 'cache.json', $json_encode_urls ) ) { global $do_rocket_bot_cache_json; $do_rocket_bot_cache_json = true; } } add_action( 'after_rocket_clean_term', 'run_rocket_bot_after_clean_term', 10, 3 );/** * Run WP Rocket Bot when a post is added, updated or deleted * * @since 1.3.2 */ function do_rocket_bot_cache_json() { global $do_rocket_bot_cache_json; if ( $do_rocket_bot_cache_json ) { run_rocket_preload_cache( 'cache-json', false ); } } add_action( 'shutdown', 'do_rocket_bot_cache_json' );/** * Purge Cache file System in Admin Bar * * @since 1.3.0 Compatibility with WPML * @since 1.0 */ function do_admin_post_rocket_purge_cache() { if ( isset( $_GET['type'], $_GET['_wpnonce'] ) ) {$_type = explode( '-', $_GET['type'] ); $_type = reset( $_type ); $_id = explode( '-', $_GET['type'] ); $_id = end( $_id ); $_taxonomy = isset( $_GET['taxonomy'] ) ? $_GET['taxonomy'] : false;if ( ! wp_verify_nonce( $_GET['_wpnonce'], 'purge_cache_' . $_GET['type'] ) ) { wp_nonce_ays( '' ); }switch ( $_type ) {// Clear all cache domain. case 'all': set_transient( 'rocket_clear_cache', 'all', HOUR_IN_SECONDS ); // Remove all cache files. $lang = isset( $_GET['lang'] ) && 'all' !== $_GET['lang'] ? sanitize_key( $_GET['lang'] ) : ''; // Remove all cache files. rocket_clean_domain( $lang );// Remove all minify cache files. rocket_clean_minify();// Remove cache busting files. rocket_clean_cache_busting();// Generate a new random key for minify cache file. $options = get_option( WP_ROCKET_SLUG ); $options['minify_css_key'] = create_rocket_uniqid(); $options['minify_js_key'] = create_rocket_uniqid(); remove_all_filters( 'update_option_' . WP_ROCKET_SLUG ); update_option( WP_ROCKET_SLUG, $options );rocket_dismiss_box( 'rocket_warning_plugin_modification' );break;// Clear terms, homepage and other files associated at current post in back-end. case 'post': rocket_clean_post( $_id ); set_transient( 'rocket_clear_cache', 'post', HOUR_IN_SECONDS ); break;// Clear a specific term. case 'term': rocket_clean_term( $_id, $_taxonomy ); set_transient( 'rocket_clear_cache', 'term', HOUR_IN_SECONDS ); break;// Clear a specific user. case 'user': rocket_clean_user( $_id ); set_transient( 'rocket_clear_cache', 'user', HOUR_IN_SECONDS ); break;// Clear cache file of the current page in front-end. case 'url': $referer = wp_get_referer();if ( 0 !== strpos( $referer, 'http' ) ) { $parse_url = get_rocket_parse_url( untrailingslashit( home_url() ) ); $referer = $parse_url['scheme'] . '://' . $parse_url['host'] . $referer; }if ( home_url( '/' ) === $referer ) { rocket_clean_home(); } else { rocket_clean_files( $referer ); } break;default: wp_nonce_ays( '' ); break; }wp_redirect( wp_get_referer() ); die(); } } add_action( 'admin_post_purge_cache', 'do_admin_post_rocket_purge_cache' );/** * Purge OPCache content in Admin Bar * * @since 2.7 */ function do_admin_post_rocket_purge_opcache() { if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'rocket_purge_opcache' ) ) { wp_nonce_ays( '' ); }if ( function_exists( 'opcache_reset' ) ) { @opcache_reset(); }wp_redirect( wp_get_referer() ); die(); } add_action( 'admin_post_rocket_purge_opcache', 'do_admin_post_rocket_purge_opcache' );/** * Preload cache system in Admin Bar * It launch the WP Rocket Bot * * @since 1.3.0 Compatibility with WPML * @since 1.0 (delete in 1.1.6 and re-add in 1.1.9) */ function do_admin_post_rocket_preload_cache() { if ( isset( $_GET['_wpnonce'] ) ) {if ( ! wp_verify_nonce( $_GET['_wpnonce'], 'preload' ) ) { wp_nonce_ays( '' ); }$lang = isset( $_GET['lang'] ) && 'all' !== $_GET['lang'] ? sanitize_key( $_GET['lang'] ) : ''; run_rocket_preload_cache( 'cache-preload' );wp_redirect( wp_get_referer() ); die(); } } add_action( 'admin_post_preload', 'do_admin_post_rocket_preload_cache' ); add_action( 'admin_post_nopriv_preload', 'do_admin_post_rocket_preload_cache' );/** * Purge CloudFlare cache * * @since 2.5 */ function do_admin_post_rocket_purge_cloudflare() { if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'rocket_purge_cloudflare' ) ) { wp_nonce_ays( '' ); }// Purge CloudFlare. $cf_purge = rocket_purge_cloudflare();if ( is_wp_error( $cf_purge ) ) { $cf_purge_result = array( 'result' => 'error', // translators: %s = CloudFare API return message. 'message' => sprintf( __( 'Cloudflare cache purge error: %s', 'rocket' ), $cf_purge->get_error_message() ), ); } else { $cf_purge_result = array( 'result' => 'success', 'message' => __( 'Cloudflare cache successfully purged', 'rocket' ), ); }set_transient( $GLOBALS['current_user']->ID . '_cloudflare_purge_result', $cf_purge_result );wp_redirect( wp_get_referer() ); die(); } add_action( 'admin_post_rocket_purge_cloudflare', 'do_admin_post_rocket_purge_cloudflare' ); Magic Show for Children by Cincinnati FUN-tastic Magician

Magic Show for Children

Magic Show

New Magic Show Each Year!

Your have limited entertainment dollars and want quality in-house field trips for the children. Therefore, you need an experienced magician with a Magic Show for Children geared to the children’s ages and enjoyed by all.

Because so many centers have me back every year, they want a new Magic Show for Children. I create a new program every winter for the upcoming year.

New routines, new props, new silly fun, new puppet routine for younger children and more. But the same live rabbit, Harvey!

“The children talked about Charlie Cadabra for days after the magic show! We are looking forward to next summer with Charlie!” – ABC Childcare and Preschool

Magic Show

My Magic Show for Children includes different magic tricks and routines based on the age-range of the children attending. Both Preschool or School Age. And, audiences with both age-ranges combined.

Most magicians have only one show and do the same show for all ages! But there are vast differences in what a preschool child understands, enjoys and appreciates than school age children.

“Charlie related well to students and had tricks that were age appropriate. He held their attention and had a great show! Thanks!” – Small World Children’s Center

Magic ShowDiscover the Secret for A
Fun In-House Field Trip

The new 2018 Magic Show includes age-appropriate routines and astonishing magic tricks! As well as a live rabbit, tons of audience participation and helpers, goofy costumes, silly hats, music. And, a fun puppet routine for younger children.

  1. The magic shows are 45-minutes long.
  2. Harvey, my live rabbit, appears, at the end of the show.
  3. Petting the rabbit as the children exit takes another 10-15 minutes.
  4. I bring everything needed for the show, including tables and a sound system.

“The children were enchanted. And, several teachers remarked that you have the enviable skill of being able to interact with a large group of children without letting them get out of control.” – The Goddard School


Magic Show

Celebrating Everything Seussical!

Magic Show

Celebrate Dr. Seuss, his many wonderful books, zany creatures, moral lessons and silly fun.

Also, over a dozen of his best-selling books are featured in this Magic Show for Children.

As a result, Abra-CAT-abra is also a fun way to teach good character traits while capturing the audience in the weird and wacky world of Dr. Seuss.

Abra-CAT-Abra is for ages 3-9
The Magic Show includes some Seussical rhyming routines, with lots of funny costumes and hats. As well as, Dr. Seuss’ many zany, memorable characters. Plus incredible magic and laughter throughout the show!

“Everyone is looking for inexpensive, great programs. This is a great experience for the children that our program can afford.” – DeLanna Oeder

What’s Included in a Magic Show for Children?

Magic Show

  • Harvey, the Magical Rabbit, appears! And, Harvey stays around after the show for everyone to pet.
  • Also, lots of audience helpers to ensure that everyone is engaged throughout the show.
  • Age-appropriate comedy and magic designed for the audience’s primary age group. Unlike other magicians who only have one show for all ages, my fun magic show is different based on the age range of the audience.
  • Incredible magical feats! With magic tricks that has everyone asking: “How did he do that?”
  • A hilarious and magical storytelling routine.
  • Plus, a funny puppet routine for younger audiences. Sherlock Bones perform a magic trick.
  • Children love to dress up. So, the show includes goofy costumes and funny hats worn by the helpers.

“Great, high-energy show! Our students had a ton of fun! You kept us all, students and teachers alike, laughing throughout the performance!” – Sue Glanton

What’s NOT in Charlie’s Magic Show for Children?

Magic ShowMost importantly, I also know what to avoid and what NOT to include in my Magic Show for Children.

Based on experience, here is a list of items that are signs of an inexperienced magician that are not going to create a fun magic show for children.

  • No playing card tricks in the Magic Show for Children
  • No fire or flames, ever!
  • Snakes, rats or scary animals are not used
  • No “scare” techniques or “danger” tricks” are included
  • No sharp objects, like swords or knives
  • Toy weapons are not in my fun magic shows
  • No chemicals
  • No loud music booming

“The magic tricks are perfect for each age group – not over their heads, but we also love the little jokes that only the teachers understand.” – Jen Fowler

Magic Show Comparison Guide

You probably only coordinate special events once or twice a year. So, to ensure you get the best possible Magic Show, use the Magician Comparison Worksheet. Most of all, these 12 questions can guide you in selecting a magic show that fits your needs.

Other Magic Show Information

Charlie Cadabra is available to perform at your event throughout the Greater Cincinnati Area – including Mason, West Chester, Hamilton, Middletown, Harrison, Florence, Northern Kentucky and more.
Because you may have some questions about booking a magician, these Magic Show FAQs will help answer them.

Since birthdays only come once a year and you want your child’s special day to be memorable. So, your child is the star in Charlie Cadabra’s Birthday Magic Show! In addition, the birthday child helps to magically produce Harvey, a live rabbit. And, everyone gets to pet Harvey after the show.

As well as, Charlie’s silly fun, non-scary Halloween Magic Show. The show is perfect for daycares, family events, block parties, and church events. All of the routines are non-scary and silly fun for all ages.

Finally, a Christmas Magic Show with themes to celebrate the holidays. Themes include Santa, Reindeer, Snowpeople, Candy Canes and more!

Magic Show Reviews

Charlie Cadabra’s awarded the Best Children’s Entertainer by Cincinnati Parents Magazine for 9 years in a row. And, the Best Party Entertainer award from Cincinnati Family Magazine for the last 10 years. Plus, here is actual client feedback received from Charlie Cadabra’s clients:

“Your shows are always entertaining for children and adults of all ages. No two magic shows are alike which allow for successful return visits. We would highly recommend you!” – Samantha Feyka


“Charlie provides a wonderful magic show for the money. The children have the best time possible.” – Nancy Burwinkel


“Uses lots of props, music was a nice touch. Plus, I liked when you included the children in your act. And the children loved the silly stuff.” – Marcy Stinson


“How much fun the children had during the program. Children enjoyed being part of the magic show. They are still talking about it days after. Such an awesome and entertaining program.” – Bonnie Baldwin


“Great, high-energy show! And, our students had a ton of fun! You kept us all, students and teachers alike, laughing throughout the performance!” – Sue Glanton


Children Love Charlie Cadabra!

“Thank you, Charlie Cadabra for making the children laugh! Even the “hardest to please” older campers got a kick out of the show. So, this is why we book you every year!” – Amy Kayea


“The magic tricks are perfect for each age group – not over their heads. And, we also love the little jokes that only the teachers understand.” – Jen Fowler


“Related well to students and had tricks that were age appropriate. You held their attention and had a great show! Thanks!” – Melissa Sparks


“The magic show was great, and the children loved it. He kept their attention the whole time. Lots of laughter!” – Kristen Siciliano