{"id":132430,"date":"2024-09-26T06:52:44","date_gmt":"2024-09-26T10:52:44","guid":{"rendered":"https:\/\/yorbestlife.com\/?p=132430"},"modified":"2024-09-28T13:13:11","modified_gmt":"2024-09-28T17:13:11","slug":"homemade-peanut-butter-protein-bars","status":"publish","type":"post","link":"https:\/\/yorbestlife.com\/index.php\/2024\/09\/26\/homemade-peanut-butter-protein-bars\/","title":{"rendered":"Homemade peanut butter protein bars"},"content":{"rendered":"<p><em>Sharing a super delicious and healthy homemade peanut butter protein bars recipe! Perfect for meal prep and grab-and-go snacks. Plus, they\u2019re gluten-free and dairy-free.<\/em><\/p>\n<p>Hey! How are you? I hope you are having a great week! With so much going on around here, this week seems to be flying by. Between work and things with the kids, my days have been especially hectic, so I\u2019ve been reaching for quick and easy meals and snacks. Which brings me to today\u2019s post.<\/p>\n<p>How about a little protein bar with your morning coffee?<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/peanut-butter-protein-bars-3\/\" rel=\"attachment wp-att-160815 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-160815\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2024\/09\/peanut-butter-protein-bars-3.jpg\" alt=\"\" width=\"1440\" height=\"1920\" \/><\/a><\/p>\n<p>I love protein bars as an on-the-go snack because they\u2019re healthy yet delicious. At the same time, I don\u2019t usually love the ingredients for many store bought protein bars. My top bars right now are these <a href=\"https:\/\/rstyle.me\/+4XHPbYoijSEvrJLeJ0PQfw\" data-wpel-link=\"external\">good! bars<\/a> (which are impossible to find; usually Sprouts has them), <a href=\"https:\/\/rstyle.me\/+_vpcH1zWsgq3zQ9cvI1V8A\" data-wpel-link=\"external\">Aloha<\/a>, and the <a href=\"https:\/\/equi.life\/products\/whole-food-bars?irad=909193&amp;irmp=357907\" data-wpel-link=\"external\">chocolate whole food bars.<\/a><\/p>\n<h2>Homemade peanut butter protein bars<\/h2>\n<p>While it is possible to find tasty ones with good ingredients, they can also be a bit on the pricey side! Making them at home instead is so easy, way less expensive, and they don\u2019t require a lot of time in or any cooking or baking skills. Peanut butter is one of the most popular ingredients used in protein bars (and one of my fave flavors!), so today, I\u2019m sharing a peanut butter protein bar* recipe that you can make at any time!<\/p>\n<p>*You can also make fun and delicious peanut butter protein balls using this recipe!<\/p>\n<h3>What Is A Protein Bar Good For<\/h3>\n<h4>A quick snack when you don\u2019t have time for a full meal<\/h4>\n<p>Sometimes it gets busy and instead of skipping a meal because you don\u2019t have time to make a full meal, I\u2019m ALL about relying on convenience. If these are in the fridge ready to go, you can enjoy one along with a hard-boiled egg or an apple \u2013 it\u2019s perfect if you don\u2019t have time to actually cook anything. Is it a substitute for a real meal? Nope! Buuuut it can give you extra fuel and nutrients when you\u2019re on a time crunch and in a hurry.<\/p>\n<h4>For travel<\/h4>\n<p>I love wrapping up a homemade protein bar and popping it in my tote bag when we\u2019re traveling, along with the usual suspects: jerky, tea, an apple, some chocolate, LMNT packs, trail mix, and a tuna pouch. I can never find any of my go-to protein bars at the airport, so it\u2019s nice to have one on hand that you know you enjoy.<\/p>\n<h4>Post-workout fuel<\/h4>\n<p>These are great if you\u2019re heading to the gym and then have to head straight to an appointment or back to work. As a pre- or post-workout snack, these homemade protein bars give you a burst of protein, carbs, and healthy fats, plus they are portable and don\u2019t make a mess. \ud83d\ude09<\/p>\n<h4>Late-night snacks<\/h4>\n<p>Despite what you may have heard, it is not harmful to eat before you go to bed if it\u2019s macro-balanced. Sometimes if you\u2019re hungry, you may need a bit of protein and carbs to prevent a glucose crash in the night, disputing sleep. Just make sure that it\u2019s balanced and not too sugary, which makes these bars an excellent choice. More of my favorite pre-bedtime snacks include hard-boiled eggs and some fruit, yogurt with some grain-free granola, and deli meat rolled up with hummus.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/homemade-peanut-butter-protein-bars-for-meal-prep\/\" rel=\"attachment wp-att-160816 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-160816\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2024\/09\/homemade-peanut-butter-protein-bars-for-meal-prep.jpg\" alt=\"\" width=\"411\" height=\"598\" \/><\/a><\/p>\n<h3>Peanut Butter Protein Bar Recipe<\/h3>\n<h4>Ingredients<\/h4>\n<ul>\n<li>Vanilla or chocolate pea, brown rice, or whey protein powder (I like NOW Foods, DNS, and Truvani)<\/li>\n<li>Peanut butter (feel free to substitute with almond butter, sunflower seed butter, or other nut butter)<\/li>\n<li>Oats<\/li>\n<li>Maple syrup<\/li>\n<li>Mini milk or dark chocolate chips<\/li>\n<li>Coconut oil<\/li>\n<li>Vanilla extract<\/li>\n<li>Sea salt<\/li>\n<li>Monk fruit (*optional, but I like that its naturally sweetening, not artificial tasting )<\/li>\n<\/ul>\n<h4>How To Make Peanut Butter Protein Bars<\/h4>\n<h5>Step One<\/h5>\n<p>Grind the oats into a flour in a high-speed blender or a food processor. You can make them into a fine flour or leave them with a bit more texture, depending on your preference.<\/p>\n<h5>Step Two<\/h5>\n<p>Add the oats to a bowl, along with the chocolate or vanilla protein powder, and sea salt, then mix well.<\/p>\n<h5>Step Three<\/h5>\n<p>In a separate bowl, stir together the maple syrup, vanilla, and peanut butter. If you want this to be less sweet, use a majority of almond milk instead of maple syrup. This also depends on the sweetness of the protein powder.<\/p>\n<p>Add the wet mixture to the dry mixture, and then stir in the mini chocolate chips.<\/p>\n<h5>Step Four<\/h5>\n<p>Spread the mixture onto a 9\u00d79 baking pan lined with parchment paper and place in the fridge to set slightly.<\/p>\n<h5>Step Five<\/h5>\n<p>Mix the coconut oil and chocolate in the microwave for about 30 seconds and stir until melted.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/peanut-butter-protein-bars\/\" rel=\"attachment wp-att-160817 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-160817\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2024\/09\/peanut-butter-protein-bars.jpg\" alt=\"\" width=\"1440\" height=\"1920\" \/><\/a><\/p>\n<h5>Step Six<\/h5>\n<p>Drizzle the chocolate over the bars and place back into the fridge to set, about 30 minutes.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/peanut-butter-protein-bars-1\/\" rel=\"attachment wp-att-160818 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-160818\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2024\/09\/peanut-butter-protein-bars-1.jpg\" alt=\"\" width=\"1440\" height=\"1920\" \/><\/a><\/p>\n<h5>Step Seven<\/h5>\n<p>Remove from the fridge and cut into bars. Keep stored in the fridge in a covered container for up to one week.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/peanut-butter-protein-bars-4\/\" rel=\"attachment wp-att-160819 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-160819\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2024\/09\/peanut-butter-protein-bars-4.jpg\" alt=\"\" width=\"1920\" height=\"2560\" \/><\/a><\/p>\n<p><a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/print\/160813\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-160813-jump-target\" style=\"padding-top:2px;margin-top:-2px\"><\/span><\/p>\n<div id=\"tasty-recipes-160813\" data-tr-id=\"160813\" class=\"tasty-recipes tasty-recipes-160813 tasty-recipes-display tasty-recipes-has-image\" data-tasty-recipes-customization=\"primary-color.background-color secondary-color.border-color\">\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Homemade peanut butter protein bars<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n<div class=\"tasty-recipes-image\">\n\t\t\t<img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2024\/09\/peanut-butter-protein-bars-2-300x300-1.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n<div class=\"tasty-recipes-buttons\">\n<div class=\"tasty-recipes-button-wrap\">\n<p><a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/print\/160813\/\" target=\"_blank\" data-tasty-recipes-customization=\"\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\"><br \/>\n\t\t\t<img decoding=\"async\" class=\"svg-print\" data-pin-nopin=\"true\" src=\"https:\/\/fitnessista.com\/wp-content\/plugins\/tasty-recipes\/templates\/buttons\/images\/icon-print.png\" \/><br \/>\n\t\tPrint Recipe<\/a>\n\t\t<\/div><\/div>\n<\/div>\n<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n<p><span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\" data-tr-default-rating=\"5\">\t\t<span class=\"tasty-recipes-rating\" data-tr-checked=\"1\">\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"100\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\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=\"100\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\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=\"100\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\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=\"100\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\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=\"100\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\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<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\"><span class=\"average\">5<\/span> from <span class=\"count\">1<\/span> review<\/span><\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n<p>A healthy and delicious snack recipe you can make in advance to enjoy throughout the week.<\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n<ul>\n<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\">Gina Harney \/\/ The Fitnessista<\/span><\/li>\n<\/ul><\/div>\n<div class=\"tasty-recipes-ingredients\">\n<div class=\"tasty-recipes-ingredients-header\">\n<div class=\"tasty-recipes-ingredients-clipboard-container\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n<\/p><\/div>\n<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n<p><span data-amount=\"1\">1<\/span> large scoops (<span data-amount=\"70\" data-unit=\"g\">70g<\/span>) vanilla or chocolate protein powder (I like NOW Foods, DNS, and Truvani)<\/p>\n<p><span data-amount=\"3\" data-unit=\"oz\">3 oz<\/span> peanut butter<\/p>\n<p><span data-amount=\"80\" data-unit=\"g\">80g<\/span> oats (about <span data-amount=\"1\" data-unit=\"cup\">1 cup<\/span>) ground into flour<\/p>\n<p><span data-amount=\"3\" data-unit=\"oz\">3 oz<\/span> maple syrup<\/p>\n<p><span data-amount=\"1\" data-unit=\"oz\">1 oz<\/span> almond milk or water<\/p>\n<p><span data-amount=\"2\" data-unit=\"oz\">2 oz<\/span> mini chocolate chips (plus an extra <span data-amount=\"2\" data-unit=\"oz\">2 oz<\/span> for drizzling)<\/p>\n<p><span data-amount=\"1\" data-unit=\"teaspoon\">1 teaspoon<\/span> coconut oil<\/p>\n<p><span data-amount=\"0.5\" data-unit=\"teaspoon\">1\/2 teaspoon<\/span> vanilla extract<\/p>\n<p>Pinch of sea salt<\/p>\n<p>Monk fruit (*optional)<\/p>\n<p><!--INSIDE_INGREDIENTS-->\t\t<\/div>\n<div class=\"tasty-recipes-cook-mode\">\n<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\"><\/p>\n<p>\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\" data-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span><br \/>\n\t\t<\/label><br \/>\n\t\t<label for=\"tasty_recipes_66f838fd3ea51_cookmode\"><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\"><br \/>\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span><br \/>\n\t\t<\/label>\n\t<\/div>\n<\/div><\/div>\n<div class=\"tasty-recipe-instructions\">\n<div class=\"tasty-recipes-instructions-header\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n<\/p><\/div>\n<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n<h5>Step One<\/h5>\n<p id=\"instruction-step-1\">Grind the oats into a flour in a high-speed blender or a food processor. You can make them into a fine flour or leave them with a bit more texture, depending on your preference.<\/p>\n<h5>Step Two<\/h5>\n<p id=\"instruction-step-2\">Add the oats to a bowl, along with the protein powder, sea salt, and mix well.<\/p>\n<h5>Step Three<\/h5>\n<p id=\"instruction-step-3\">In a separate bowl, stir together the maple syrup, vanilla, and peanut butter. Add the wet mixture to the dry mixture, and then stir in the mini chocolate chips.<\/p>\n<h5>Step Four<\/h5>\n<p id=\"instruction-step-4\">Spread the mixture onto a parchment-lined 9\u00d79 baking dish and set in the fridge to set slightly.<\/p>\n<h5>Step Five<\/h5>\n<p id=\"instruction-step-5\">Mix the coconut oil and chocolate in the microwave for about 30 seconds and stir until melted.<\/p>\n<h5>Step Six<\/h5>\n<p id=\"instruction-step-6\">Drizzle the chocolate over the bars and place back into the fridge to set, about 30 minutes.<\/p>\n<h5>Step Seven<\/h5>\n<p id=\"instruction-step-7\">Remove from the fridge and cut into bars. Keep stored in the fridge in a covered container for up to one week.<\/p>\n<\/p><\/div><\/div>\n<div class=\"tasty-recipes-notes\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Notes<\/h3>\n<div class=\"tasty-recipes-notes-body\" data-tasty-recipes-customization=\"body-color.color\">\n<p>If your protein powder is on the sweet side, use more almond milk and less maple syrup to hold them together. If your protein powder is not sweet, add the maple syrup and a little monk fruit and stevia according to your preference!<\/p>\n<\/p><\/div><\/div>\n<footer class=\"tasty-recipes-entry-footer\">\n<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\">\n<p>Tag <a href=\"https:\/\/www.instagram.com\/fitnessista\" target=\"_blank\" rel=\"noreferrer noopener\" data-wpel-link=\"external\">@fitnessista<\/a> on Instagram<\/p>\n<\/div>\n<\/footer>\n<p>window.trCommon={&#8220;minRating&#8221;:6,&#8221;ajaxurl&#8221;:&#8221;https:\/\/fitnessista.com\/wp-admin\/admin-ajax.php&#8221;,&#8221;ratingNonce&#8221;:&#8221;&#8221;,&#8221;postId&#8221;:160811};<br \/>\nwindow.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.smoothScroll = {<br \/>\ninit() {<br \/>\ndocument.addEventListener( &#8216;click&#8217;, ( e ) =&gt; {<br \/>\nlet anchor = e.target;<br \/>\nif ( anchor.tagName !== &#8216;A&#8217; ) {<br \/>\nanchor = anchor.closest( &#8216;a.tasty-recipes-scrollto&#8217; );<br \/>\n}<\/p>\n<p>if ( ! anchor || ! anchor.classList.contains( &#8216;tasty-recipes-scrollto&#8217; ) ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const elementHref = anchor.getAttribute( &#8216;href&#8217; );<br \/>\nif ( ! elementHref ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>e.preventDefault();<br \/>\nthis.goToSelector( elementHref );<br \/>\n});<br \/>\n},<br \/>\ngoToSelector( selector ) {<br \/>\nconst element = document.querySelector( selector );<br \/>\nif ( ! element ) {<br \/>\nreturn;<br \/>\n}<br \/>\nelement.scrollIntoView( { behavior: &#8216;smooth&#8217; } );<br \/>\n}<br \/>\n};<\/p>\n<p>document.addEventListener(<br \/>\n&#8216;DOMContentLoaded&#8217;,<br \/>\n() =&gt; window.TastyRecipes.smoothScroll.init()<br \/>\n);<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};<br \/>\nwindow.TastyRecipes.cookMode = {<br \/>\nwakeLockApi: false,<br \/>\nwakeLock: false,<br \/>\ncookModeSelector: &#8216;.tasty-recipes-cook-mode&#8217;,<br \/>\ninit() {<br \/>\nif (&#8220;wakeLock&#8221; in navigator &amp;&amp; &#8220;request&#8221; in navigator.wakeLock) {<br \/>\nthis.wakeLockApi = navigator.wakeLock;<br \/>\n}<\/p>\n<p>const cookModes = document.querySelectorAll(this.cookModeSelector);<\/p>\n<p>if (cookModes.length &gt; 0) {<br \/>\nfor (const cookMode of cookModes) {<br \/>\nif (this.wakeLockApi) {<br \/>\ncookMode.querySelector(&#8216;input[type=&#8221;checkbox&#8221;]&#8217;).addEventListener(&#8220;change&#8221;, event =&gt; {<br \/>\nthis.checkboxChange(event.target);<br \/>\n}, false);<br \/>\n} else {<br \/>\ncookMode.style.display = &#8220;none&#8221;;<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n},<br \/>\ncheckboxChange(checkbox) {<br \/>\nif (checkbox.checked) {<br \/>\nthis.lock();<br \/>\n} else {<br \/>\nthis.unlock();<br \/>\n}<br \/>\n},<br \/>\nsetCheckboxesState(state) {<br \/>\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + &#8216; input[type=&#8221;checkbox&#8221;]&#8217;);<br \/>\nfor (const checkbox of checkboxes) {<br \/>\ncheckbox.checked = state;<br \/>\n}<br \/>\n},<br \/>\nasync lock() {<br \/>\ntry {<br \/>\nthis.wakeLock = await this.wakeLockApi.request(&#8220;screen&#8221;);<br \/>\nthis.wakeLock.addEventListener(&#8220;release&#8221;, () =&gt; {<br \/>\nthis.wakeLock = false;<br \/>\nthis.setCheckboxesState(false);<br \/>\n});<br \/>\nthis.setCheckboxesState(true);<br \/>\n} catch (error) {<br \/>\nthis.setCheckboxesState(false);<br \/>\n}<br \/>\n},<br \/>\nunlock() {<br \/>\nif (this.wakeLock) {<br \/>\nthis.wakeLock.release();<br \/>\nthis.wakeLock = false;<br \/>\n}<br \/>\nthis.setCheckboxesState(false);<br \/>\n}<br \/>\n};<\/p>\n<p>(function(callback) {<br \/>\nif (document.readyState !== &#8220;loading&#8221;) {<br \/>\ncallback();<br \/>\n} else {<br \/>\ndocument.addEventListener(&#8220;DOMContentLoaded&#8221;, callback);<br \/>\n}<br \/>\n})(() =&gt; {<br \/>\nwindow.TastyRecipes.cookMode.init();<br \/>\n});<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.staticTooltip = {<br \/>\nelement: null,<br \/>\ntooltipElement: null,<br \/>\ndeleting: false,<br \/>\ninit( element ) {<br \/>\nif ( this.deleting ) {<br \/>\nreturn;<br \/>\n}<br \/>\nthis.element = element;<br \/>\nthis.buildElements();<br \/>\n},<br \/>\ndestroy() {<br \/>\nif ( ! this.tooltipElement || this.deleting ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>this.deleting = true;<br \/>\nthis.tooltipElement.classList.remove( &#8216;opened&#8217; );<\/p>\n<p>setTimeout( () =&gt; {<br \/>\nthis.tooltipElement.remove();<br \/>\nthis.deleting = false;<br \/>\n}, 500 );<br \/>\n},<br \/>\nbuildElements() {<br \/>\nconst tooltipElement = document.createElement( &#8216;div&#8217; );<br \/>\ntooltipElement.classList.add( &#8216;tasty-recipes-static-tooltip&#8217;);<br \/>\ntooltipElement.setAttribute( &#8216;id&#8217;, &#8216;tasty-recipes-tooltip&#8217; );<\/p>\n<p>const currentTooltipElement = document.getElementById( &#8216;tasty-recipes-tooltip&#8217; );<br \/>\nif ( currentTooltipElement ) {<br \/>\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );<br \/>\n} else {<br \/>\ndocument.body.appendChild( tooltipElement );<br \/>\n}<\/p>\n<p>this.tooltipElement = document.getElementById( &#8216;tasty-recipes-tooltip&#8217; );<br \/>\n},<br \/>\nshow() {<br \/>\nif ( ! this.tooltipElement ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const tooltipTop = this.element.getBoundingClientRect().top<br \/>\n+ window.scrollY<br \/>\n&#8211; 10 \/\/ 10px offset.<br \/>\n&#8211; this.tooltipElement.getBoundingClientRect().height;<br \/>\nconst tooltipLeft = this.element.getBoundingClientRect().left<br \/>\n&#8211; ( this.tooltipElement.getBoundingClientRect().width \/ 2 )<br \/>\n+ ( this.element.getBoundingClientRect().width \/ 2 ) &#8211; 1;<br \/>\nconst posLeft = Math.max( 10, tooltipLeft );<br \/>\nthis.maybeRemoveTail( posLeft !== tooltipLeft );<\/p>\n<p>this.tooltipElement.setAttribute( &#8216;style&#8217;, &#8216;top:&#8217; + tooltipTop + &#8216;px;left:&#8217; + posLeft + &#8216;px;&#8217; );<br \/>\nthis.tooltipElement.classList.add( &#8216;opened&#8217; );<\/p>\n<p>},<br \/>\nmaybeRemoveTail( removeTail ) {<br \/>\nif ( removeTail ) {<br \/>\nthis.tooltipElement.classList.add( &#8216;tr-hide-tail&#8217; );<br \/>\n} else {<br \/>\nthis.tooltipElement.classList.remove( &#8216;tr-hide-tail&#8217; );<br \/>\n}<br \/>\n},<br \/>\nchangeMessage( message ) {<br \/>\nif ( ! this.tooltipElement ) {<br \/>\nreturn;<br \/>\n}<br \/>\nthis.tooltipElement.innerHTML = message;<br \/>\n}<br \/>\n};<\/p>\n<p>window.TastyRecipes.ajax = {<br \/>\nsendPostRequest( url, data, success, failure ) {<br \/>\nconst xhr = new XMLHttpRequest();<br \/>\nxhr.open( &#8216;POST&#8217;, url, true );<br \/>\nxhr.send( this.preparePostData( data ) );<\/p>\n<p>xhr.onreadystatechange = () =&gt; {<br \/>\nif ( 4 !== xhr.readyState ) {<br \/>\nreturn;<br \/>\n}<br \/>\nif ( xhr.status === 200 ) {<br \/>\nsuccess( JSON.parse( xhr.responseText ) );<br \/>\nreturn;<br \/>\n}<\/p>\n<p>failure( xhr );<br \/>\n};<\/p>\n<p>xhr.onerror = () =&gt; {<br \/>\nfailure( xhr );<br \/>\n};<br \/>\n},<br \/>\npreparePostData( data ) {<br \/>\nconst formData = new FormData();<\/p>\n<p>for ( const key in data ) {<br \/>\nformData.append( key, data[key] );<br \/>\n}<br \/>\nreturn formData;<br \/>\n},<br \/>\n};<\/p>\n<p>window.TastyRecipes.ratings = {<br \/>\ndefaultRating: 0,<br \/>\ncurrentRatingPercentage: 100,<br \/>\nsavingRating: false,<br \/>\ninit( minRating ) {<br \/>\nthis.minRating = minRating;<\/p>\n<p>this.formWatchRating();<br \/>\nthis.closeTooltipWhenClickOutside();<br \/>\nthis.addBodyClassBasedOnSelectedRating();<br \/>\nthis.backwardCompFormRatingPosition();<br \/>\n},<br \/>\nformWatchRating() {<br \/>\nconst ratings = document.querySelectorAll(&#8216;.tasty-recipes-no-ratings-buttons [data-rating]&#8217;);<br \/>\nif ( ratings.length  {<br \/>\nevent.preventDefault();<br \/>\nthis.defaultRating = event.target.closest( &#8216;.checked&#8217; ).dataset.rating;<br \/>\nthis.setCheckedStar( event.target );<br \/>\nthis.maybeSendRating( this.defaultRating, event.target );<br \/>\nthis.setRatingInForm( this.defaultRating );<br \/>\n} );<br \/>\n}<br \/>\n},<br \/>\ncloseTooltipWhenClickOutside() {<br \/>\nwindow.addEventListener( &#8216;click&#8217;, e =&gt; {<br \/>\n\/\/ Bailout (don&#8217;t remove the tooltip) when the clicked element is a rating star, or it&#8217;s the tooltip itself.<br \/>\nif ( e.target.closest( &#8216;.tasty-recipes-rating&#8217; ) || e.target.classList.contains( &#8216;tasty-recipes-static-tooltip&#8217; ) ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>window.TastyRecipes.staticTooltip.destroy();<br \/>\n} );<br \/>\n},<br \/>\n setRatingInForm( rating ) {<br \/>\nconst ratingInput = document.querySelector( &#8216;#respond .tasty-recipes-rating[value=&#8221;&#8216; + rating + &#8216;&#8221;]&#8217; );<br \/>\nif ( ! ratingInput ) {<br \/>\nreturn;<br \/>\n}<br \/>\nratingInput.click();<br \/>\n},<br \/>\naddBodyClassBasedOnSelectedRating() {<br \/>\nconst ratingInputs = document.querySelectorAll( &#8216;input.tasty-recipes-rating&#8217; );<br \/>\nif ( ! ratingInputs ) {<br \/>\nreturn;<br \/>\n}<br \/>\nfor ( const ratingInput of ratingInputs ) {<br \/>\nratingInput.addEventListener( &#8216;click&#8217;, currentEvent =&gt; {<br \/>\nconst selectedRating = currentEvent.target.getAttribute( &#8216;value&#8217; );<br \/>\nthis.handleBodyClassByRating( selectedRating );<br \/>\nthis.toggleCommentTextareaRequired( selectedRating );<br \/>\n} );<br \/>\n}<br \/>\n},<br \/>\nhandleBodyClassByRating( rating ) {<br \/>\nif ( rating &lt; this.minRating ) {<br \/>\ndocument.body.classList.remove( &#039;tasty-recipes-selected-minimum-rating&#039; );<br \/>\nreturn;<br \/>\n}<br \/>\ndocument.body.classList.add( &#039;tasty-recipes-selected-minimum-rating&#039; );<br \/>\n},<br \/>\ntoggleCommentTextareaRequired( rating ) {<br \/>\nconst commentTextarea = document.getElementById( &#039;comment&#039; );<br \/>\nif ( ! commentTextarea ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>if ( rating  {<br \/>\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );<br \/>\nwindow.TastyRecipes.staticTooltip.show();<br \/>\nthis.updateAverageText( response.data, recipeCardElement );<br \/>\nthis.maybeFillCommentForm( response.data );<\/p>\n<p>\/\/ Hide the tooltip after 5 seconds.<br \/>\nsetTimeout( () =&gt; {<br \/>\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );<br \/>\n}, 5000 );<br \/>\n},<br \/>\n() =&gt; {<br \/>\nthis.resetTooltip( recipeCardElement );<br \/>\n}<br \/>\n);<br \/>\n},<br \/>\nupdateAverageText( data, recipeCardElement ) {<br \/>\nif ( ! data.average ) {<br \/>\nreturn;<br \/>\n}<br \/>\nthis.setRatingPercent( data );<\/p>\n<p>if ( ! data.count ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const quickLink = document.querySelector( &#8216;.tasty-recipes-rating-link&#8217; );<br \/>\nif ( quickLink ) {<br \/>\nthis.setTextInContainer( quickLink, data );<br \/>\nthis.setPartialStar( quickLink );<br \/>\n}<\/p>\n<p>const cardStars = recipeCardElement.querySelector( &#8216;.tasty-recipes-ratings-buttons&#8217; );<br \/>\ncardStars.dataset.trDefaultRating = data.average;<br \/>\nthis.setTextInContainer( recipeCardElement.querySelector( &#8216;.tasty-recipes-rating&#8217; ), data );<br \/>\n},<br \/>\nsetTextInContainer( container, data ) {<br \/>\nif ( ! container ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>if ( data.label ) {<br \/>\nconst ratingLabelElement = container.querySelector( &#8216;.rating-label&#8217; );<br \/>\nif ( ratingLabelElement ) {<br \/>\nratingLabelElement.innerHTML = data.label;<br \/>\n}<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const averageElement = container.querySelector( &#8216;.average&#8217; );<br \/>\nif ( averageElement ) {<br \/>\naverageElement.textContent = data.average;<br \/>\n}<\/p>\n<p>const countElement = container.querySelector( &#8216;.count&#8217; );<br \/>\nif ( countElement ) {<br \/>\ncountElement.textContent = data.count;<br \/>\n}<br \/>\n},<br \/>\nsetPartialStar( container ) {<br \/>\nconst highestStar = container.querySelector( &#8216;[data-rating=&#8221;&#8216; + Math.ceil( this.defaultRating ) + &#8216;&#8221;]&#8217; );<br \/>\nif ( highestStar ) {<br \/>\nhighestStar.dataset.trClip = this.currentRatingPercentage;<br \/>\n}<br \/>\n},<br \/>\nsetRatingPercent( data ) {<br \/>\nthis.defaultRating = data.average.toFixed( 1 );<br \/>\nconst parts = data.average.toFixed( 2 ).toString().split( &#8216;.&#8217; );<br \/>\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;<br \/>\nif ( this.currentRatingPercentage === &#8217;00&#8217; ) {<br \/>\nthis.currentRatingPercentage = 100;<br \/>\n}<br \/>\n},<br \/>\nsetCheckedStar( target ) {<br \/>\nconst cardRatingContainer = target.closest( &#8216;.tasty-recipes-ratings-buttons&#8217; );<br \/>\nconst selectedRatingElement = cardRatingContainer.querySelector( &#8216;[data-tr-checked]&#8217; );<br \/>\nif ( selectedRatingElement ) {<br \/>\ndelete selectedRatingElement.dataset.trChecked;<br \/>\n}<\/p>\n<p>const thisStar = target.closest( &#8216;.tasty-recipes-rating&#8217; );<br \/>\nthisStar.dataset.trChecked = 1;<br \/>\nthisStar.querySelector( &#8216;[data-tr-clip]&#8217; ).dataset.trClip = 100;<br \/>\n},<br \/>\nmaybeFillCommentForm( data ) {<br \/>\nif ( ! data.comment || ! data.comment.content ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const commentForm = document.querySelector( &#8216;#commentform&#8217; );<br \/>\nif ( ! commentForm ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const commentBox = commentForm.querySelector( &#8216;[name=comment]&#8217; );<br \/>\nif ( ! commentBox || commentBox.value ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>\/\/ Add comment details for editing.<br \/>\ncommentBox.innerHTML = data.comment.content;<br \/>\nif ( data.comment.name ) {<br \/>\ncommentForm.querySelector( &#8216;[name=author]&#8217; ).value = data.comment.name;<br \/>\ncommentForm.querySelector( &#8216;[name=email]&#8217; ).value = data.comment.email;<br \/>\n}<br \/>\n},<br \/>\nmaybeResetTooltip( recipeCardElement, data, rating ) {<br \/>\nif ( this.savingRating === rating ) {<br \/>\nthis.resetTooltip( recipeCardElement, data );<br \/>\n}<br \/>\n},<br \/>\nresetTooltip( recipeCardElement, data ) {<br \/>\nwindow.TastyRecipes.staticTooltip.destroy();<br \/>\nthis.savingRating = false;<\/p>\n<p>\/\/ Reset the default rating.<br \/>\nconst cardRatingContainer = recipeCardElement.querySelector( &#8216;.tasty-recipes-ratings-buttons&#8217; );<br \/>\nif ( cardRatingContainer ) {<br \/>\nthis.defaultRating = ( data &amp;&amp; data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;<br \/>\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;<\/p>\n<p>this.resetSelectedStar( cardRatingContainer, data );<br \/>\n}<br \/>\n},<br \/>\nresetSelectedStar( cardRatingContainer ) {<br \/>\nconst selectedRatingElement = cardRatingContainer.querySelector( &#8216;[data-rating=&#8221;&#8216; + Math.ceil( this.defaultRating ) + &#8216;&#8221;]&#8217; );<br \/>\nif ( selectedRatingElement ) {<br \/>\nselectedRatingElement.querySelector( &#8216;[data-tr-clip]&#8217; ).dataset.trClip = this.currentRatingPercentage;<br \/>\nselectedRatingElement.parentNode.dataset.trChecked = 1;<br \/>\n}<\/p>\n<p>const previousSelectedElement= cardRatingContainer.querySelector( &#8216;[data-tr-checked]&#8217; );<br \/>\nif ( previousSelectedElement ) {<br \/>\nconst currentSelectedRating = previousSelectedElement.querySelector(&#8216;[data-rating]&#8217;);<br \/>\nif ( currentSelectedRating !== selectedRatingElement ) {<br \/>\ndelete previousSelectedElement.dataset.trChecked;<br \/>\n}<br \/>\n}<br \/>\n},<br \/>\nbackwardCompFormRatingPosition() {<br \/>\nconst ratingsButtons = document.querySelector( &#8216;#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons&#8217; );<br \/>\nif ( ! ratingsButtons ) {<br \/>\nreturn;<br \/>\n}<br \/>\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);<br \/>\nif ( ! ratingsButtonsStyles.display.includes( &#8216;flex&#8217; ) ) {<br \/>\nratingsButtons.style.direction = &#8216;rtl&#8217;;<br \/>\n}<\/p>\n<p>if ( typeof tastyRecipesRating !== &#8216;undefined&#8217; ) {<br \/>\n\/\/ Select the rating that was previously selected in admin.<br \/>\nratingsButtons.querySelector( &#8216;.tasty-recipes-rating[value=&#8221;&#8216; + tastyRecipesRating + &#8216;&#8221;]&#8217; ).checked = true;<br \/>\n}<\/p>\n<p>const ratingSpans = ratingsButtons.querySelectorAll( &#8216;.tasty-recipes-rating&#8217; );<br \/>\nfor (const ratingSpan of ratingSpans) {<br \/>\nratingSpan.addEventListener( &#8216;click&#8217;, event =&gt; {<br \/>\nif ( ratingSpan === event.target ) {<br \/>\nreturn;<br \/>\n}<br \/>\nratingSpan.previousElementSibling.click();<br \/>\n} );<br \/>\n}<br \/>\n}<br \/>\n};<\/p>\n<p>(function(callback) {<br \/>\nif (document.readyState !== &#8220;loading&#8221;) {<br \/>\ncallback();<br \/>\n} else {<br \/>\nwindow.addEventListener( &#8216;load&#8217;, callback );<br \/>\n}<br \/>\n})(() =&gt; {<br \/>\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );<br \/>\n});\n<\/p><\/div>\n<h3>How Long Do Homemade Protein Bars Last?<\/h3>\n<p>Most homemade protein bars will last 1-2 weeks if you store them in an airtight container in the fridge. To make them last longer, you can also store them in the freezer for up to six months.<\/p>\n<p>Are you going to make these??<\/p>\n<p>Please let me know how they turn out!!<\/p>\n<p>xo<\/p>\n<p>Gina<\/p>\n<p><strong><span style=\"text-decoration: underline\">More of my favorite meal prep staples and healthy snacks:<\/span><\/strong><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/buffalo-chicken-dip-and-tuscan-white-bean-dip-both-dairy-free\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Buffalo chicken dip<\/a><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-sous-vide-egg-bites-without-sous-vide-machine\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Homemade sous vide egg bites<\/a><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/crispy-chocolate-coconut-protein-bars\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Chocolate protein bars<\/a><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/5-high-protein-meal-prep-recipes\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">5 high protein meal prep recipes<\/a><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/chickpea-curry-salad-easy-make-ahead-vegan-lunch-idea\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Chickpea curry salad<\/a><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/easy-meal-planning-for-busy-moms\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Easy meal planning for busy moms<\/a><\/p>\n<p>The post <a href=\"https:\/\/fitnessista.com\/homemade-peanut-butter-protein-bars\/\">Homemade peanut butter protein bars<\/a> appeared first on <a href=\"https:\/\/fitnessista.com\">The Fitnessista<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sharing a super delicious and healthy homemade peanut butter protein bars recipe! Perfect for meal prep and grab-and-go snacks. Plus, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":132432,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[210,211,214,260,338,358,359],"tags":[218,219,222,265,341,360,361],"_links":{"self":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts\/132430"}],"collection":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/comments?post=132430"}],"version-history":[{"count":3,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts\/132430\/revisions"}],"predecessor-version":[{"id":132439,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts\/132430\/revisions\/132439"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/media\/132432"}],"wp:attachment":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/media?parent=132430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/categories?post=132430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/tags?post=132430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}