! $order->is_download_permitted() ) { continue; } $product_id = intval( $result->product_id ); if ( ! $_product || $_product->get_id() !== $product_id ) { // New product. $file_number = 0; $_product = wc_get_product( $product_id ); } // Check product exists and has the file. if ( ! $_product || ! $_product->exists() || ! $_product->has_file( $result->download_id ) ) { continue; } $download_file = $_product->get_file( $result->download_id ); // Download name will be 'Product Name' for products with a single downloadable file, and 'Product Name - File X' for products with multiple files. $download_name = apply_filters( 'woocommerce_downloadable_product_name', $download_file['name'], $_product, $result->download_id, $file_number ); $downloads[] = array( 'download_url' => add_query_arg( array( 'download_file' => $product_id, 'order' => $result->order_key, 'email' => rawurlencode( $result->user_email ), 'key' => $result->download_id, ), home_url( '/' ) ), 'download_id' => $result->download_id, 'product_id' => $_product->get_id(), 'product_name' => $_product->get_name(), 'product_url' => $_product->is_visible() ? $_product->get_permalink() : '', // Since 3.3.0. 'download_name' => $download_name, 'order_id' => $order->get_id(), 'order_key' => $order->get_order_key(), 'downloads_remaining' => $result->downloads_remaining, 'access_expires' => $result->access_expires, 'file' => array( 'name' => $download_file->get_name(), 'file' => $download_file->get_file(), ), ); $file_number++; } } return apply_filters( 'woocommerce_customer_available_downloads', $downloads, $customer_id ); } /** * Get total spent by customer. * * @param int $user_id User ID. * @return string */ function wc_get_customer_total_spent( $user_id ) { $customer = new WC_Customer( $user_id ); return $customer->get_total_spent(); } /** * Get total orders by customer. * * @param int $user_id User ID. * @return int */ function wc_get_customer_order_count( $user_id ) { $customer = new WC_Customer( $user_id ); return $customer->get_order_count(); } /** * Reset _customer_user on orders when a user is deleted. * * @param int $user_id User ID. */ function wc_reset_order_customer_id_on_deleted_user( $user_id ) { global $wpdb; $wpdb->update( $wpdb->postmeta, array( 'meta_value' => 0 ), array( 'meta_key' => '_customer_user', 'meta_value' => $user_id, ) ); // WPCS: slow query ok. } add_action( 'deleted_user', 'wc_reset_order_customer_id_on_deleted_user' ); /** * Get review verification status. * * @param int $comment_id Comment ID. * @return bool */ function wc_review_is_from_verified_owner( $comment_id ) { $verified = get_comment_meta( $comment_id, 'verified', true ); return '' === $verified ? WC_Comments::add_comment_purchase_verification( $comment_id ) : (bool) $verified; } /** * Disable author archives for customers. * * @since 2.5.0 */ function wc_disable_author_archives_for_customers() { global $author; if ( is_author() ) { $user = get_user_by( 'id', $author ); if ( user_can( $user, 'customer' ) && ! user_can( $user, 'edit_posts' ) ) { wp_redirect( wc_get_page_permalink( 'shop' ) ); } } } add_action( 'template_redirect', 'wc_disable_author_archives_for_customers' ); /** * Hooks into the `profile_update` hook to set the user last updated timestamp. * * @since 2.6.0 * @param int $user_id The user that was updated. * @param array $old The profile fields pre-change. */ function wc_update_profile_last_update_time( $user_id, $old ) { wc_set_user_last_update_time( $user_id ); } add_action( 'profile_update', 'wc_update_profile_last_update_time', 10, 2 ); /** * Hooks into the update user meta function to set the user last updated timestamp. * * @since 2.6.0 * @param int $meta_id ID of the meta object that was changed. * @param int $user_id The user that was updated. * @param string $meta_key Name of the meta key that was changed. * @param string $_meta_value Value of the meta that was changed. */ function wc_meta_update_last_update_time( $meta_id, $user_id, $meta_key, $_meta_value ) { $keys_to_track = apply_filters( 'woocommerce_user_last_update_fields', array( 'first_name', 'last_name' ) ); $update_time = in_array( $meta_key, $keys_to_track, true ) ? true : false; $update_time = 'billing_' === substr( $meta_key, 0, 8 ) ? true : $update_time; $update_time = 'shipping_' === substr( $meta_key, 0, 9 ) ? true : $update_time; if ( $update_time ) { wc_set_user_last_update_time( $user_id ); } } add_action( 'update_user_meta', 'wc_meta_update_last_update_time', 10, 4 ); /** * Sets a user's "last update" time to the current timestamp. * * @since 2.6.0 * @param int $user_id The user to set a timestamp for. */ function wc_set_user_last_update_time( $user_id ) { update_user_meta( $user_id, 'last_update', gmdate( 'U' ) ); } /** * Get customer saved payment methods list. * * @since 2.6.0 * @param int $customer_id Customer ID. * @return array */ function wc_get_customer_saved_methods_list( $customer_id ) { return apply_filters( 'woocommerce_saved_payment_methods_list', array(), $customer_id ); } /** * Get info about customer's last order. * * @since 2.6.0 * @param int $customer_id Customer ID. * @return WC_Order|bool Order object if successful or false. */ function wc_get_customer_last_order( $customer_id ) { $customer = new WC_Customer( $customer_id ); return $customer->get_last_order(); } /** * Add support for searching by display_name. * * @since 3.2.0 * @param array $search_columns Column names. * @return array */ function wc_user_search_columns( $search_columns ) { $search_columns[] = 'display_name'; return $search_columns; } add_filter( 'user_search_columns', 'wc_user_search_columns' ); /** * When a user is deleted in WordPress, delete corresponding WooCommerce data. * * @param int $user_id User ID being deleted. */ function wc_delete_user_data( $user_id ) { global $wpdb; // Clean up sessions. $wpdb->delete( $wpdb->prefix . 'woocommerce_sessions', array( 'session_key' => $user_id, ) ); // Revoke API keys. $wpdb->delete( $wpdb->prefix . 'woocommerce_api_keys', array( 'user_id' => $user_id, ) ); // Clean up payment tokens. $payment_tokens = WC_Payment_Tokens::get_customer_tokens( $user_id ); foreach ( $payment_tokens as $payment_token ) { $payment_token->delete(); } } add_action( 'delete_user', 'wc_delete_user_data' ); /** * Store user agents. Used for tracker. * * @since 3.0.0 * @param string $user_login User login. * @param int|object $user User. */ function wc_maybe_store_user_agent( $user_login, $user ) { if ( 'yes' === get_option( 'woocommerce_allow_tracking', 'no' ) && user_can( $user, 'manage_woocommerce' ) ) { $admin_user_agents = array_filter( (array) get_option( 'woocommerce_tracker_ua', array() ) ); $admin_user_agents[] = wc_get_user_agent(); update_option( 'woocommerce_tracker_ua', array_unique( $admin_user_agents ) ); } } add_action( 'wp_login', 'wc_maybe_store_user_agent', 10, 2 ); /** * Update logic triggered on login. * * @since 3.4.0 * @param string $user_login User login. * @param object $user User. */ function wc_user_logged_in( $user_login, $user ) { wc_update_user_last_active( $user->ID ); update_user_meta( $user->ID, '_woocommerce_load_saved_cart_after_login', 1 ); } add_action( 'wp_login', 'wc_user_logged_in', 10, 2 ); /** * Update when the user was last active. * * @since 3.4.0 */ function wc_current_user_is_active() { if ( ! is_user_logged_in() ) { return; } wc_update_user_last_active( get_current_user_id() ); } add_action( 'wp', 'wc_current_user_is_active', 10 ); /** * Set the user last active timestamp to now. * * @since 3.4.0 * @param int $user_id User ID to mark active. */ function wc_update_user_last_active( $user_id ) { if ( ! $user_id ) { return; } update_user_meta( $user_id, 'wc_last_active', (string) strtotime( date( 'Y-m-d', current_time( 'timestamp', true ) ) ) ); } 21 Day Cleanse Basics – iBody

21 Day Cleanse Basics

Three Basic Principles

  • Eliminate

    Eliminate Toxins and Restore Healthy Elimination

    We are continually exposed to external toxins: pesticides, chemicals, and pollutants that we ingest, breathe, and come across daily. Although our bodies are designed to naturally dispose of these toxins, our organs (especially the liver) can get overburdened. The presence of hundreds of different toxins in our bodies causes unhealthy symptoms like chronic headaches, fatigue, and weight gain.

    Toxic symptoms can cause breakdown in our bodily functions, which can ultimately lead to disease. The iBody program is designed to offer organ support and maximize the elimination functions necessary to minimize weight and expel these harmful toxins from the body.

  • Nourish

    Nourish the Body and Replenish Deficiencies

    With the prevalence of convenience foods to keep up with our busy lives, we succumb daily to packaged, processed foods high in sugars and preservatives and deprive our bodies of vital nutrients. During the program you will be eating whole foods and nourishing your body back to health, replenishing nutritional deficiencies that today’s foods lack. The process will allow the body to rebuild and restore healthy function with proper nutrition.

  • Reset

    Reset and Reduce Dependence

    The changes that the body goes through during the detoxification program reset your system. Your body will no longer depend on caffeine and sugar for energy. Your brain resets to break old bad habits and create new good ones. Upon completion of the program you will experience a state of health you may have never felt before. With a newfound sense of well-being your body will be functioning at a much higher plane of health.


Program Guidelines

  • Detox

    The Detox

    Upon completion of this program, you will experience a state of health you may never have felt, or at least experienced since your youth. The first 3–4 days are the hardest since you will likely be craving all the old foods. Don’t give in! Take this time to exercise extreme “self control.” After the fifth day, you will find your old cravings diminishing, replaced by a newfound sense of well-being. Generally by days 7–10, you are functioning at a higher plane, and your body and mind are clearing.

  • Cleanse

    The Cleanse

    You may react negatively to foods you used to eat since your body is now shifting into higher levels of functioning and elimination. Take time reintroducing foods to your diet to determine which ones do not agree with your body. It is prudent not to return to junk food. If you do, your body will slowly adapt by storing toxins again and shifting into a fat-storing state. While you may not feel the immediate effects of the junk food, it will eventually damage your long-term health.

  • Reset Button

    The Reset Button

    Use these 21 days as a time of renewal; allow your body to learn and regenerate. Take time for introspection, creative outlets, and do some special things for yourself, such as luxurious baths (with special salts) or a massage.


Program Basics

No Animal Protein for the First 10 Days

This allows your liver to rest and focus on detoxification. On Day 11, you may eat organic, hormone-free, cage-free chicken, and wild-caught fish. Favor lighter animal protein like fish and chicken. Grass-fed beef and game are allowed in moderation. Avoid pork.


Exercise is vital in removing toxins from your tissues and your body. Exercise until you sweat. Walk 20–30 minutes minimum daily if you’re new to physical activity. Daily walks, incorporating deep breathing, are recommended for everyone.


I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.


Water should comprise half of your daily intake. This flushes toxins and prevents constipation and headaches. Spring or mineral water is best. Fresh-squeezed lemon or lime may be added to your water.

Eat frequently
throughout the day.
DO NOT skip meals.

Purchase this image at https://www.stocksy.com/1269676
The Detox Shake

To stabilize your normal blood-sugar levels, avoid all juice and sugary fruits. This includes avoiding shakes made with fruit juice. Use Stevia (not sugar or artificial sweeteners) to sweeten the shake, if desired.

Over-the-Counter Medicine

They mask your symptoms while adding to your toxic load, prolonging the cleansing process. Prescribed medicines are fine, but never change medications without consulting your physician.


• Drink water plentifully throughout the detox program to more quickly flush toxins from your system. Your optimal amount of daily water consumption is calculated by dividing your weight in half and drinking that amount in ounces per day.

• If you desire more weight loss, replace meals with detox shakes.

• Make your detox enjoyable by adding a variety of fresh herbs and spices. Prepare your meals in a variety of ways (grilling, stir frying, pan-roasting, using parchment, etc.) to avoid monotony. Delight your eyes, nose, and taste buds by trying brand-new foods. Open your palate to new experiences.

• Consume half your vegetables raw. Steam or stir-fry prepared vegetables for 4 minutes over low heat. Your vegetable intake should be twice the amount of your fruit intake.

• Avoid alcohol, caffeine, tobacco, and other stimulants. If you are a heavy caffeine user, sip 1 teaspoon of coffee to avoid withdrawal headaches (but for no more than 3 days maximum).

Note: Individuals with joint pain should consider avoiding food derived from the nightshade family of plants, such as tomatoes, white potatoes, eggplants, and peppers of all kinds. This includes paprika and cayenne powder but not black pepper. Use homemade (not store-bought) salad dressings.