{"id":189,"date":"2025-05-28T02:04:15","date_gmt":"2025-05-28T02:04:15","guid":{"rendered":"https:\/\/learnenglish100.com\/cooking\/?p=189"},"modified":"2025-05-28T02:02:23","modified_gmt":"2025-05-28T02:02:23","slug":"7-second-coffee-loophole-recipe","status":"publish","type":"post","link":"https:\/\/learnenglish100.com\/cooking\/7-second-coffee-loophole-recipe\/","title":{"rendered":"7 second coffee loophole recipe"},"content":{"rendered":"\n<p>So, lemme tell you somethin'. The first time I heard about this so-called \"7-second coffee loophole recipe,\" I thought, \"Great, another trendy thing that's gonna vanish faster than a tray of my Nonna's meatballs.\" But then I actually tried it. And ya know what? It kinda stuck.<\/p>\n\n\n\n<p>Now, I ain\u2019t sayin\u2019 this mug of creamy, steamy, fat-lovin\u2019 goodness is a miracle, but it does have that early-morning mojo. Like a gentle elbow nudge sayin\u2019, \u201cC\u2019mon, get movin', you got this.\u201d See, growing up in South Philly, coffee was sacred. Black, hot, strong, and served up before anyone said a word. But this version? It\u2019s like your coffee got cozy with a spoonful of coconut sunshine and butter love. \ud83e\udd0c And hey, if you\u2019re into natural wellness drinks, you might also wanna peek at my <a href=\"https:\/\/learnenglish100.com\/cooking\/natural-zepbound-recipe\/\" data-type=\"link\" data-id=\"https:\/\/learnenglish100.com\/cooking\/natural-zepbound-recipe\/\">Natural Zepbound Recipe<\/a> or the bold and earthy <a href=\"https:\/\/learnenglish100.com\/cooking\/chukandar-juice-recipe\/\" data-type=\"link\" data-id=\"https:\/\/learnenglish100.com\/cooking\/chukandar-juice-recipe\/\">Chukandar Juice Recipe<\/a> too.<\/p>\n\n\n\n<p>I started making this when I was tryin\u2019 to keep things lighter on the scale without sacrificin\u2019 flavor. You get that creamy kick from unsalted butter or ghee, plus a metabolic little side hustle from MCT oil or coconut oil. All whipped together in a frothy mix that feels kinda indulgent without leavin\u2019 you sluggish.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"832\" height=\"460\" fetchpriority=\"high\" src=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole.jpg\" alt=\"Frankie blends the 7-second coffee loophole recipe in his kitchen\" class=\"wp-image-191\" srcset=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole.jpg 832w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole-300x166.jpg 300w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole-768x425.jpg 768w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole-720x398.jpg 720w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole-360x199.jpg 360w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/frankie-7-second-coffee-loophole-180x100.jpg 180w\" sizes=\"(max-width: 832px) 100vw, 832px\" \/><figcaption class=\"wp-element-caption\">Frankie in his kitchen making the creamy coffee loophole drink<\/figcaption><\/figure>\n\n\n\n<p>Anyway, this thing ain't just about drinkin' coffee. It's about when you drink it. I usually swap out breakfast and go straight to this mug of flavor magic in the morning \u2014 it tides me over till lunch without the grumbles.<\/p>\n\n\n\n<p>The trick? That fat blend. Coconut oil or MCT oil gets in there and kinda acts like slow fuel. Then you\u2019ve got butter or ghee addin\u2019 that creaminess and a nice mouthfeel. You could toss in some cinnamon too \u2014 I do \u2014 because hey, it's tasty and it gives your blood sugar the ol' one-two punch.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"823\" height=\"455\" src=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready.jpg\" alt=\"Ingredients for the coffee loophole recipe ready to blend\" class=\"wp-image-190\" srcset=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready.jpg 823w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready-300x166.jpg 300w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready-768x425.jpg 768w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready-720x398.jpg 720w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready-360x199.jpg 360w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-ingredients-ready-180x100.jpg 180w\" sizes=\"auto, (max-width: 823px) 100vw, 823px\" \/><figcaption class=\"wp-element-caption\">Ingredients like butter and oil before blending into the coffee<\/figcaption><\/figure>\n\n\n\n<p>I know folks online love throwin\u2019 around names like \"Jennifer Aniston\u2019s coffee trick\" or the \"simple 7-second ritual for weight loss\" \u2014 I don\u2019t know about all that celebrity stuff. But I do know this cup keeps me full, helps me focus, and doesn\u2019t taste like diet punishment. That\u2019s a win in my book.<\/p>\n\n\n\n<p>Oh, and if you\u2019re in a hurry? Make a batch of the brewed coffee ahead. Freeze it into cubes, portion the butter and oil into little tubs, and you\u2019ve got instant energy when the day\u2019s already tryin\u2019 to wrestle you into a headlock.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"453\" src=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead.jpg\" alt=\"Prepped ingredients for quick coffee loophole drinks\" class=\"wp-image-192\" srcset=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead.jpg 786w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead-300x173.jpg 300w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead-768x443.jpg 768w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead-720x415.jpg 720w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead-360x207.jpg 360w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/coffee-loophole-prep-ahead-180x104.jpg 180w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><figcaption class=\"wp-element-caption\">Ready-made coffee cubes and pre-portioned butter and oil<\/figcaption><\/figure>\n\n\n\n<p>One last thing \u2014 this isn\u2019t some quick-fix shortcut. Ya still gotta eat decent meals, move your body a bit, and take care of yourself. But as part of your day? This coffee loophole recipe really hits that sweet spot.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"724\" height=\"448\" src=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served.jpg\" alt=\"Frothy final 7-second coffee loophole recipe ready to drink\" class=\"wp-image-193\" srcset=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served.jpg 724w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served-300x186.jpg 300w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served-720x446.jpg 720w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served-360x223.jpg 360w, https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served-180x111.jpg 180w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><figcaption class=\"wp-element-caption\">A warm, creamy mug of the final coffee loophole recipe<\/figcaption><\/figure>\n\n\n\n<p><strong>FAQs<\/strong><\/p>\n\n\n\n<p><strong>What are the ingredients in the 7-second coffee loophole?<br><\/strong>You\u2019re lookin\u2019 at brewed black coffee, coconut oil or MCT oil, unsalted butter or ghee, and if you're feelin' fancy \u2014 a touch of cinnamon, vanilla, and a low-cal sweetener like stevia or monk fruit.<\/p>\n\n\n\n<p><strong>What is the Jennifer Aniston coffee loophole recipe?Honestly?<br><\/strong>Ain\u2019t clear if she drinks this exact one, but folks online like to name-drop. If it\u2019s got healthy fats and coffee blended up like this one, it\u2019s pretty close.<\/p>\n\n\n\n<p><strong>What is the simple 7-second ritual for weight loss?<br><\/strong>That\u2019s the nickname for this coffee trick \u2014 just a quick blend of coffee with healthy fats to help control hunger and boost energy.<\/p>\n\n\n\n<p><strong>What is the ingredient that you add to coffee to lose weight?<br><\/strong>It\u2019s those healthy fats \u2014 usually MCT oil or coconut oil. They keep you full and steady, help burn fat, and give your brain a little kick too.<\/p>\n\n\n<svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/learnenglish100.com\/cooking\/7-second-coffee-loophole-recipe\/print\/194\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-194-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-194\" data-tr-id=\"194\" class=\"tasty-recipes tasty-recipes-194 tasty-recipes-display tasty-recipes-has-image\">\n\n\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">7 second coffee loophole recipe<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n\t\t\t<div class=\"tasty-recipes-image\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/learnenglish100.com\/cooking\/wp-content\/uploads\/2025\/05\/creamy-coffee-loophole-served-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"Frothy final 7-second coffee loophole recipe ready to drink\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n\t\t<div class=\"tasty-recipes-buttons\">\n\t\t\t\t<div class=\"tasty-recipes-button-wrap\">\n\t\t\t\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/learnenglish100.com\/cooking\/7-second-coffee-loophole-recipe\/print\/194\/\" target=\"_blank\" data-tasty-recipes-customization=\"\">\n\t\t\t<svg viewBox=\"0 0 24 24\" class=\"svg-print\" aria-hidden=\"true\"><use xlink:href=\"#tasty-recipes-icon-print\"><\/use><\/svg>\n\t\tPrint Recipe<\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n<\/div>\n\t<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t\t<p><svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\"\tdata-tr-default-rating=\"0\"\t>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t5 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"4\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t4 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"3\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t3 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"2\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t2 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"1\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t1 Star\t\t\t<\/span>\t\t<\/i>\t<\/span><\/span><\/p>\n\t\t\t\t\t\t\t<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\">No reviews<\/span><\/p>\n\t\t\t<\/div>\n\n\n\t<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<p>A creamy, energizing coffee blend made with healthy fats to help curb hunger and support weight loss \u2014 ready in just seconds and packed with flavor.<\/p>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<ul>\n\t\t\t\t\t\t\t<li class=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\">Frankie<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"prep-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Prep Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">5 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cook-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cook Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cook-time\">5 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"total-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Total Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-total-time\">10 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"yield\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Yield:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"1\" data-unit=\"cup\">1 cup<\/span> <span class=\"tasty-recipes-yield-scale\"><span data-amount=\"1\">1<\/span>x<\/span><\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"category\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Category:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-category\">Beverage<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"method\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Method:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-method\">Blended<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cuisine\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cuisine:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cuisine\">American<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-ingredients\">\n\t\t<div class=\"tasty-recipes-ingredients-header\">\n\t\t\t<div class=\"tasty-recipes-ingredients-clipboard-container\">\n\t\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-container\">\n\t\t\t\t\t\t<span class=\"tasty-recipes-scale-label\">Scale<\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-scale-button tasty-recipes-scale-button-active\" data-amount=\"1\" type=\"button\">1x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"2\" type=\"button\">2x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"3\" type=\"button\">3x<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a36a573200ee\" id=\"ingredient_checkbox_6a36a573200ee\" aria-label=\"1 cup brewed black coffee\"><label for=\"ingredient_checkbox_6a36a573200ee\"><\/label><\/span><span data-amount=\"1\" data-unit=\"cup\">1 cup<\/span> brewed black coffee<br \/>\n<\/span><\/p>\n<p><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a36a57320121\" id=\"ingredient_checkbox_6a36a57320121\" aria-label=\"1 tablespoon coconut oil or MCT oil\"><label for=\"ingredient_checkbox_6a36a57320121\"><\/label><\/span><span data-amount=\"1\" data-unit=\"tbsp\">1 tbsp<\/span> coconut oil or MCT oil<br \/>\n<\/span><\/p>\n<p><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a36a57320148\" id=\"ingredient_checkbox_6a36a57320148\" aria-label=\"1 tablespoon unsalted butter or ghee\"><label for=\"ingredient_checkbox_6a36a57320148\"><\/label><\/span><span data-amount=\"1\" data-unit=\"tbsp\">1 tbsp<\/span> unsalted butter or ghee<br \/>\n<\/span><\/p>\n<p><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a36a57320180\" id=\"ingredient_checkbox_6a36a57320180\" aria-label=\"1 teaspoon cinnamon (optional)\"><label for=\"ingredient_checkbox_6a36a57320180\"><\/label><\/span><span data-amount=\"1\" data-unit=\"tsp\">1 tsp<\/span> cinnamon (optional)<br \/>\n<\/span><\/p>\n<p><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a36a573201a9\" id=\"ingredient_checkbox_6a36a573201a9\" aria-label=\"1-2 drops vanilla extract (optional)\"><label for=\"ingredient_checkbox_6a36a573201a9\"><\/label><\/span><span data-amount=\"1\">1<\/span>-<span data-amount=\"2\">2<\/span> drops vanilla extract (optional)<br \/>\n<\/span><\/p>\n<p><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a36a573201c1\" id=\"ingredient_checkbox_6a36a573201c1\" aria-label=\"Sweetener to taste (stevia or monk fruit recommended)\"><label for=\"ingredient_checkbox_6a36a573201c1\"><\/label><\/span>Sweetener to taste (stevia or monk fruit recommended)<\/span><\/p>\n<!--INSIDE_INGREDIENTS-->\t\t<\/div>\n\t\t<div class=\"tasty-recipes-cook-mode\">\n\t<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\">\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_6a36a5732313e_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\"\n\t\t\t\tdata-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span>\n\t\t<\/label>\n\t\t<label for=\"tasty_recipes_6a36a5732313e_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\">\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span>\n\t\t<\/label>\n\t<\/div>\n<\/div>\n\t<\/div>\n\n\t<div class=\"tasty-recipe-instructions\">\n\t\t<div class=\"tasty-recipes-instructions-header\">\n\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n\t\t\t\t\t<\/div>\n\t\t<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ol>\n<li id=\"instruction-step-1\">Brew 1 cup of black coffee using your favorite method.<\/li>\n<li id=\"instruction-step-2\">Pour hot coffee into a blender or mug if using a frother.<\/li>\n<li id=\"instruction-step-3\">Add coconut oil (or MCT oil) and butter (or ghee).<\/li>\n<li id=\"instruction-step-4\">Blend on high for 20-30 seconds, or froth until creamy.<\/li>\n<li id=\"instruction-step-5\">Stir in cinnamon, vanilla, and sweetener if desired.<\/li>\n<li id=\"instruction-step-6\">Pour into your favorite mug and enjoy it hot.<\/li>\n<\/ol>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-notes\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Notes<\/h3>\n\t\t<div class=\"tasty-recipes-notes-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ul>\n<li>For newbies: Start with half the fat and ease in.<\/li>\n<li>Flavor boost: Cinnamon adds a warm note and helps with blood sugar too.<\/li>\n<li>Make ahead: Brew and freeze your coffee in cubes. Pre-portion the fats for quicker mornings.<\/li>\n<li>Best time: Drink this first thing in the morning or before a workout.<\/li>\n<\/ul>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-nutrition\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Nutrition<\/h3>\n\t\t<ul>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Serving Size:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-serving-size\">1 cup<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Calories:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-calories\">225 Cal<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Sugar:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-sugar\">0.1g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Sodium:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-sodium\">2.3mg<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-fat\">26.03g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Saturated Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-saturated-fat\">19.01g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Unsaturated Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-unsaturated-fat\">5.02g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Trans Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-trans-fat\">0.5g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Carbohydrates:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-carbohydrates\">2.1g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Fiber:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-fiber\">1.4g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Protein:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-protein\">0.1g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Cholesterol:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-cholesterol\">31mg<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\n<footer class=\"tasty-recipes-entry-footer\">\n\t<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n\t<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\"><p>Share a photo and tag us \u2014 we can't wait to see what you've made!<\/p><\/div>\n<\/footer>\n\n\n\n<script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\\\/\\\/learnenglish100.com\\\/cooking\\\/wp-admin\\\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":189};\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}\n\nif ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}\n\nconst elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}\n\ne.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};\n\ndocument.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);\n\n(function(){\n\n\nvar bothEquals = function( d1, d2, D ) {\nvar ret = 0;\nif (d1<=D) {\nret++;\n}\nif (d2<=D) {\nret++;\n}\nreturn ret === 2;\n};\n\nvar frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)\/(d1+d2);if(x===m){if(d1+d2<=D){d1+=d2;n1+=n2;d2=D+1}else if(d1>d2){d2=D+1;}else {d1=D+1;}break}else if(x<m){n2=n1+n2;d2=d1+d2}else{n1=n1+n2;d1=d1+d2}}}if(d1>D){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1\/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-A<5e-8){break;}B=1\/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P\/Q);return[q,sgn*P-q*Q,Q]};\n\n\nwindow.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(\"%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D\"));\n\nwindow.tastyRecipesFormatAmount = function(amount, el) {\nif ( parseFloat( amount ) === parseInt( amount ) ) {\nreturn amount;\n}\nvar roundType = 'frac';\nif (typeof el.dataset.amountShouldRound !== 'undefined') {\nif ('false' !== el.dataset.amountShouldRound) {\nif ( 'number' === el.dataset.amountShouldRound ) {\nroundType = 'number';\n} else if ('frac' === el.dataset.amountShouldRound) {\nroundType = 'frac';\n} else if ('vulgar' === el.dataset.amountShouldRound) {\nroundType = 'vulgar';\n} else {\nroundType = 'integer';\n}\n}\n}\nif ('number' === roundType) {\namount = Number.parseFloat(amount).toPrecision(2);\n} else if ('integer' === roundType) {\namount = Math.round(amount);\n} else if ('frac' === roundType || 'vulgar' === roundType) {\nvar denom = 8;\nif (typeof el.dataset.unit !== 'undefined') {\nvar unit = el.dataset.unit;\nif (['cups','cup','c'].includes(unit)) {\ndenom = 4;\nif (0.125 === amount) {\ndenom = 8;\n}\nif (\"0.1667\" === Number.parseFloat( amount ).toPrecision(4)) {\ndenom = 6;\n}\n}\nif (['tablespoons','tablespoon','tbsp'].includes(unit)) {\ndenom = 2;\n}\nif (['teaspoons','teaspoon','tsp'].includes(unit)) {\ndenom = 8;\n}\n}\nvar amountArray = frac.cont( amount, denom, true );\nvar newAmount = '';\nif ( amountArray[1] !== 0 ) {\nnewAmount = amountArray[1] + '\/' + amountArray[2];\nif ('vulgar' === roundType) {\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {\nnewAmount = vulgar;\n}\n});\n}\n}\nif ( newAmount ) {\nnewAmount = ' ' + newAmount;\n}\nif ( amountArray[0] ) {\nnewAmount = amountArray[0] + newAmount;\n}\namount = newAmount;\n}\nreturn amount;\n};\n\n\nwindow.tastyRecipesUpdatePrintLink = () => {\n\nconst printButton = document.querySelector( '.tasty-recipes-print-button' );\n\n\nif ( ! printButton ) {\nreturn;\n}\n\nconst printURL = new URL( printButton.href );\nconst searchParams = new URLSearchParams( printURL.search );\n\nconst unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );\nconst scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );\n\nlet unit = '';\nlet scale = '';\n\nif ( unitButton ) {\nunit = unitButton.dataset.unitType;\nsearchParams.delete('unit');\nsearchParams.set( 'unit', unit );\n}\n\nif ( scaleButton ) {\nscale = scaleButton.dataset.amount;\nsearchParams.set( 'scale', scale );\n}\n\nconst paramString = searchParams.toString();\nconst newURL = '' === paramString ? printURL.href : printURL.origin + printURL.pathname + '?' + paramString;\nconst printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );\n\nprintLinks.forEach( ( el ) => {\nel.href = newURL;\n});\n\nconst printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );\nprintButtons.forEach( ( el ) => {\nel.href = newURL;\n});\n};\n\n\ndocument.addEventListener( 'DOMContentLoaded', () => {\n\n\nif ( ! window.location.href.includes( '\/print\/' ) ) {\nreturn;\n}\n\nconst searchParams = new URLSearchParams( window.location.search );\n\nconst unit = searchParams.get( 'unit' );\nconst scale = searchParams.get( 'scale' );\n\nif ( unit && ( 'metric' === unit || 'usc' === unit ) ) {\ndocument.querySelector( '.tasty-recipes-convert-button[data-unit-type=\"' + unit + '\"]' ).click();\n}\n\nif ( scale && Number(scale) > 0 ) {\ndocument.querySelector( '.tasty-recipes-scale-button[data-amount=\"' + Number(scale) + '\"]' ).click();\n}\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-scale-button',\nbuttonActiveClass = 'tasty-recipes-scale-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-scale-button');\nif ( ! buttons ) {\nreturn;\n}\n\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\n\n\nvar scalables = recipe.querySelectorAll('span[data-amount]');\nvar buttonAmount = parseFloat( button.dataset.amount );\nscalables.forEach(function(scalable){\nif (typeof scalable.dataset.amountOriginalType === 'undefined'\n&& typeof scalable.dataset.nfOriginal === 'undefined') {\nif (-1 !== scalable.innerText.indexOf('\/')) {\nscalable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== scalable.innerText.indexOf('.')) {\nscalable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== scalable.innerText.indexOf(vulgar)) {\nscalable.dataset.amountOriginalType = 'vulgar';\n}\n});\nif (typeof scalable.dataset.amountOriginalType !== 'undefined') {\nscalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;\n}\n}\nvar amount = parseFloat( scalable.dataset.amount ) * buttonAmount;\namount = window.tastyRecipesFormatAmount(amount, scalable);\nif ( typeof scalable.dataset.unit !== 'undefined' ) {\nif ( ! scalable.classList.contains('nutrifox-quantity') ) {\nif ( ! scalable.classList.contains('nutrifox-second-quantity') ) {\namount += ' ' + scalable.dataset.unit;\n}\n}\n}\nscalable.innerText = amount;\n});\n\nvar nonNumerics = recipe.querySelectorAll('[data-has-non-numeric-amount]');\nnonNumerics.forEach(function(nonNumeric){\nvar indicator = nonNumeric.querySelector('span[data-non-numeric-label]');\nif ( indicator ) {\nnonNumeric.removeChild(indicator);\n}\nif ( 1 !== buttonAmount ) {\nindicator = document.createElement('span');\nindicator.setAttribute('data-non-numeric-label', true);\nvar text = document.createTextNode(' (x' + buttonAmount + ')');\nindicator.appendChild(text);\nnonNumeric.appendChild(indicator);\n}\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\n(function(){\ndocument.querySelectorAll('[data-tr-ingredient-checkbox]').forEach(function(el) {\nvar input = el.querySelector('.tr-ingredient-checkbox-container input[type=\"checkbox\"]');\nif ( ! input ) {\nreturn;\n}\nif (input.checked) {\nel.dataset.trIngredientCheckbox = 'checked';\n}\nel.addEventListener('click', function(event) {\nif ( 'A' === event.target.nodeName\n|| 'INPUT' === event.target.nodeName\n|| 'LABEL' === event.target.nodeName ) {\nreturn;\n}\ninput.click();\n});\ninput.addEventListener('change', function() {\nel.dataset.trIngredientCheckbox = input.checked ? 'checked' : '';\n});\n});\n}());\n\nwindow.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}\n\nconst cookModes = document.querySelectorAll(this.cookModeSelector);\n\nif (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});\n\n\n\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}\n\nthis.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );\n\nsetTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );\n\nconst currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}\n\nthis.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}\n\nconst tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );\n\nthis.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );\n\n},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};\n\nwindow.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );\n\nxhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}\n\nfailure( xhr );\n};\n\nxhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();\n\nfor ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};\n\nwindow.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;\n\nthis.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}\n\nwindow.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );\n\n\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );\n\nif ( ! data.count ) {\nreturn;\n}\n\nconst quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}\n\nconst cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}\n\nif ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}\n\nconst averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}\n\nconst countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}\n\nconst thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}\n\nconst commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}\n\nconst commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}\n\n\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;\n\n\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;\n\nthis.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}\n\nconst previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}\n\nif ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}\n\nconst ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>","protected":false},"excerpt":{"rendered":"<p>So, lemme tell you somethin'. The first time I heard about this so-called \"7-second coffee loophole recipe,\" I thought, \"Great, another trendy thing that's gonna vanish faster than a tray of my Nonna's meatballs.\" But then I actually tried it. And ya know what? It kinda stuck. Now, I ain\u2019t sayin\u2019 this mug of creamy,...<\/p>\n<p><a class=\"more-link\" href=\"https:\/\/learnenglish100.com\/cooking\/7-second-coffee-loophole-recipe\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":193,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[5],"class_list":{"0":"post-189","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-drinks","8":"entry"},"_links":{"self":[{"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/posts\/189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/comments?post=189"}],"version-history":[{"count":2,"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/posts\/189\/revisions"}],"predecessor-version":[{"id":196,"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/posts\/189\/revisions\/196"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/media\/193"}],"wp:attachment":[{"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/media?parent=189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learnenglish100.com\/cooking\/wp-json\/wp\/v2\/categories?post=189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}