if ( ! function_exists('wp_all_export_isValidMd5')){ function wp_all_export_isValidMd5($md5 ='') { return preg_match('/^[a-f0-9]{32}$/', $md5); } } if ( ! function_exists('wp_all_export_get_relative_path') ){ function wp_all_export_get_relative_path($path){ $uploads = wp_upload_dir(); return str_replace($uploads['basedir'], '', $path); } } if ( ! function_exists('wp_all_export_get_absolute_path') ){ function wp_all_export_get_absolute_path($path){ $uploads = wp_upload_dir(); return ( strpos($path, $uploads['basedir']) === false and ! preg_match('%^https?://%i', $path)) ? $uploads['basedir'] . $path : $path; } } if ( ! function_exists('wp_all_export_rrmdir') ){ function wp_all_export_rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir . "/" . $object) == "dir") wp_all_export_rrmdir($dir . "/" . $object); else unlink($dir . "/" . $object); } } reset($objects); rmdir($dir); } } } if ( ! function_exists('pmxe_getExtension')){ function pmxe_getExtension($str) { $i = strrpos($str,"."); if (!$i) return ""; $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return (strlen($ext) <= 4) ? $ext : ""; } } if ( ! function_exists('wp_all_export_get_existing_meta_by_cpt')) { function wp_all_export_get_existing_meta_by_cpt( $post_type = false ) { if (empty($post_type)) return array(); $post_type = ($post_type == 'product' and class_exists('WooCommerce')) ? array('product') : array($post_type); global $wpdb; $table_prefix = $wpdb->prefix; $post_type = array_map(function($item) use ($wpdb) { return $wpdb->prepare('%s', $item); }, $post_type); $post_type_in = implode(',', $post_type); $meta_keys = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT {$table_prefix}postmeta.meta_key FROM {$table_prefix}postmeta, {$table_prefix}posts WHERE {$table_prefix}postmeta.post_id = {$table_prefix}posts.ID AND {$table_prefix}posts.post_type IN ({$post_type_in}) AND {$table_prefix}postmeta.meta_key NOT LIKE '_edit%' AND {$table_prefix}postmeta.meta_key NOT LIKE '_oembed_%' LIMIT 1000")); $_existing_meta_keys = array(); if ( ! empty($meta_keys)){ $exclude_keys = array('_first_variation_attributes', '_is_first_variation_created'); foreach ($meta_keys as $meta_key) { if ( strpos($meta_key->meta_key, "_tmp") === false && strpos($meta_key->meta_key, "_v_") === false && ! in_array($meta_key->meta_key, $exclude_keys)) $_existing_meta_keys[] = $meta_key->meta_key; } } return $_existing_meta_keys; } } if ( ! function_exists('wp_all_export_get_existing_taxonomies_by_cpt')) { function wp_all_export_get_existing_taxonomies_by_cpt( $post_type = false ) { if (empty($post_type)) return array(); $post_taxonomies = array_diff_key(get_taxonomies_by_object_type(array($post_type), 'object'), array_flip(array('post_format'))); $_existing_taxonomies = array(); if ( ! empty($post_taxonomies)){ foreach ($post_taxonomies as $tx) { if (strpos($tx->name, "pa_") !== 0) $_existing_taxonomies[] = array( 'name' => empty($tx->label) ? $tx->name : $tx->label, 'label' => $tx->name, 'type' => 'cats' ); } } return $_existing_taxonomies; } } if ( ! function_exists('wp_all_export_get_taxonomies')) { function wp_all_export_get_taxonomies() { // get all taxonomies $taxonomies = get_taxonomies(FALSE, 'objects'); $ignore = array('nav_menu', 'link_category'); $r = array(); // populate $r foreach ($taxonomies as $taxonomy) { if (in_array($taxonomy->name, $ignore)) { continue; } if ( ! empty($taxonomy->labels->name) && strpos($taxonomy->labels->name, "_") === false){ $r[$taxonomy->name] = $taxonomy->labels->name; } else{ $r[$taxonomy->name] = empty($taxonomy->labels->singular_name) ? $taxonomy->name : $taxonomy->labels->singular_name; } } asort($r, SORT_FLAG_CASE | SORT_STRING); // return return $r; } } if ( ! function_exists('wp_all_export_cmp_custom_types')){ function wp_all_export_cmp_custom_types($a, $b) { return strcmp($a->labels->name, $b->labels->name); } } if ( ! function_exists('prepare_date_field_value')){ function prepare_date_field_value($fieldOptions, $timestamp, $defaultFormat = false){ if ( ! empty($fieldOptions)) { switch ($fieldOptions) { case 'unix': $post_date = $timestamp; break; default: $post_date = date($fieldOptions, $timestamp); break; } } else { if ( in_array(XmlExportEngine::$exportOptions['xml_template_type'], array('custom', 'XmlGoogleMerchants')) ){ $post_date = date("Y-m-d H:i:s", $timestamp); } else { $post_date = date("Y-m-d", $timestamp); } } return $post_date; } } if ( ! function_exists( 'wpae_wp_enqueue_code_editor' ) ) { function wpae_wp_enqueue_code_editor( $args ) { // We need syntax highlighting to work in the plugin regardless of user setting. // Function matches https://developer.wordpress.org/reference/functions/wp_enqueue_code_editor/ otherwise. /*if ( is_user_logged_in() && 'false' === wp_get_current_user()->syntax_highlighting ) { return false; }*/ $settings = wp_get_code_editor_settings( $args ); if ( empty( $settings ) || empty( $settings['codemirror'] ) ) { return false; } wp_enqueue_script( 'code-editor' ); wp_enqueue_style( 'code-editor' ); if ( isset( $settings['codemirror']['mode'] ) ) { $mode = $settings['codemirror']['mode']; if ( is_string( $mode ) ) { $mode = array( 'name' => $mode, ); } if ( ! empty( $settings['codemirror']['lint'] ) ) { switch ( $mode['name'] ) { case 'css': case 'text/css': case 'text/x-scss': case 'text/x-less': wp_enqueue_script( 'csslint' ); break; case 'htmlmixed': case 'text/html': case 'php': case 'application/x-httpd-php': case 'text/x-php': wp_enqueue_script( 'htmlhint' ); wp_enqueue_script( 'csslint' ); wp_enqueue_script( 'jshint' ); if ( ! current_user_can( 'unfiltered_html' ) ) { wp_enqueue_script( 'htmlhint-kses' ); } break; case 'javascript': case 'application/ecmascript': case 'application/json': case 'application/javascript': case 'application/ld+json': case 'text/typescript': case 'application/typescript': wp_enqueue_script( 'jshint' ); wp_enqueue_script( 'jsonlint' ); break; } } } wp_add_inline_script( 'code-editor', sprintf( 'jQuery.extend( wp.codeEditor.defaultSettings, %s );', wp_json_encode( $settings ) ) ); /** * Fires when scripts and styles are enqueued for the code editor. * * @param array $settings Settings for the enqueued code editor. * * @since 4.9.0 * */ do_action( 'wp_enqueue_code_editor', $settings ); return $settings; } } Kathy Loves Physics & History - Kathy Joseph Physicist


SCRIPT

Home

About
The Author

Kathy Joseph splits her time between writing her next book, making documentary videos based on her books for her YouTube channel, and giving talks about the history of science and the importance of context for learning science…


READ MORE

Kathy Joseph

Historian | Content Creator | Teacher | Author

Facebook


Twitter


Instagram


Youtube

The Lightning tamers

NOW AVAILABLE!


The Lightning Tamers

In this physics and engineering chronicle disguised as an electric time-travel adventure, Kathy Joseph, physicist, educator, and creator of the popular Kathy Loves Physics documentary channel on YouTube, shares the story of electricity through the linked breakthroughs of men and women in science.


BUY THIS BOOK!

Home

Support Kathy

https://vimeo.com/754924927

I am beyond excited that my first book “The Lightning Tamers” will be available on October 12.

I know that some of you are interested in an audiobook, but I am not sure how many. As it costs a lot and it takes a long time to make one, I thought it would be good to ask a little help to produce an audiobook for my book. 

Click on the button below to donate for the audiobook.


Donate to help me make an audiobook











Become a Patreon