{"id":94164,"date":"2025-01-30T10:41:28","date_gmt":"2025-01-30T11:41:28","guid":{"rendered":"https:\/\/bestratefinders.com\/blog\/?p=94164"},"modified":"2025-02-04T17:00:37","modified_gmt":"2025-02-04T17:00:37","slug":"homemade-dog-treats-quick-and-healthy","status":"publish","type":"post","link":"https:\/\/bestratefinders.com\/blog\/everything-else\/homemade-dog-treats-quick-and-healthy\/","title":{"rendered":"Homemade dog treats (quick and healthy!)"},"content":{"rendered":"<p style=\"text-align: center;\"><em>Sharing a quick and easy homemade recipe for dog treats that your pup will love! All you have to do is make the dough, cut it out in a shape of your choice, and bake.<\/em><\/p>\n<p>Hi friends! How is your week going?<\/p>\n<p>For today, let\u2019s talk about dog treats. I know &#8211; kinda random for a fitness blog &#8211; but I recently did a roundup of <a href=\"https:\/\/fitnessista.com\/top-posts-and-pages-of-2024\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">my top posts from last year<\/a> and noticed several that covered topics outside of fitness, like <a href=\"https:\/\/fitnessista.com\/healthy-homemade-dog-food-recipe\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">healthy homemade dog food<\/a> and <a href=\"https:\/\/fitnessista.com\/how-to-keep-your-guinea-pig-cage-clean\/\" target=\"_blank\" rel=\"noopener noreferrer follow\" data-wpel-link=\"internal\">how to keep your guinea pig cage clean<\/a>. This post on homemade dog treats has remained one of my top posts since I first wrote it several years ago, so I wanted to give it a little update and share it again.<\/p>\n<p>Also, Maisey loves these so much and insisted that I spread the word in hopes that other furry friends out there can share in her delight.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-dog-treats-quick-and-healthy\/homemade-dog-treats\/\" rel=\"attachment wp-att-154992 follow noopener noreferrer\" data-wpel-link=\"internal\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-154992 size-large\" title=\"quick healthy Homemade dog treats\" src=\"https:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/01\/homemade-dog-treats-683x1024-1.jpg\" data-fslightbox=\"gallery1\"><\/a><\/p>\n<h2 style=\"text-align: center;\">Homemade dog treats (quick and healthy!)<\/h2>\n<p>I made these dog treats on a whim, using some ingredients we always have on hand. Most dogs will eat just about anything, but Maisey is thrilled anytime she gets bites of healthy human food, even happily chowing down on foods I expected her to turn up her nose at. She loves plain chicken, egg, bell peppers, natural peanut butter, and watermelon. She\u2019s also a huge fan of the bully sticks from <a href=\"http:\/\/thrv.me\/gbDAwX\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"external\">Thrive Market<\/a>. So, I wasn&#8217;t too surprised when she devoured these homemade dog treats. They are super easy to make and way better for your pup than store-bought, boxed dog biscuits.<\/p>\n<p>As always, check with your veterinarian before changing their diet, and let me know how much your pets love these homemade dog treats!<\/p>\n<h3>Ingredients for homemade dog treat recipe:<\/h3>\n<p><strong><span style=\"text-decoration: underline;\">Here are the ingredients to have on hand for these peanut butter dog treats:<\/span><\/strong><\/p>\n<ul>\n<li><strong>Natural peanut butter:<\/strong> This is a good source of protein and healthy fats for dogs. Make sure the only ingredients are peanuts and salt&#8211;no added oils, salt, or sugars and <em>definitely <\/em>no xylitol, an artificial sweetener that is <a href=\"https:\/\/vcahospitals.com\/know-your-pet\/xylitol-toxicity-in-dogs\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"external\">extremely toxic to dogs<\/a>. or sweeteners, which gives them a little protein and healthy fats with a yummy nutty flavor<\/li>\n<li><strong>Pumpkin puree: <\/strong>Not to be confused with pumpkin pie filling, pumpkin puree is a great source of fiber. Can be substituted for sweet potato puree.<\/li>\n<li><strong>Garbanzo bean flour:\u00a0<\/strong>Packed with nutrients for your furry friend. Whole wheat flour works too.<\/li>\n<li><strong>Eggs: <\/strong>Great source of protein, fatty acids, and vitamins. to support your dog&#8217;s nutrition.<\/li>\n<li><strong>Oatmeal:<\/strong> This heart-healthy food isn&#8217;t just for humans! Oats are a great source of soluble fiber, vitamins, and minerals for your dog. I recommend using plain instant oatmeal instead of rolled oats.<\/li>\n<li><strong>All-purpose flour:<\/strong> For rolling the dough<\/li>\n<\/ul>\n<p>I also used a <a href=\"https:\/\/www.amazon.com\/Pieces-Cutters-Homemade-Biscuit-Protection\/dp\/B08GJDGNRC\/ref=asc_df_B08GJDGNRC?mcid=9ee9187747fd35aaade148afe4f536b5&amp;tag=hyprod-20&amp;linkCode=df0&amp;hvadid=693769995515&amp;hvpos=&amp;hvnetw=g&amp;hvrand=17667890403676745057&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=9016455&amp;hvtargid=pla-963015506302&amp;psc=1\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"external\">bone shaped cookie cutter<\/a>, but this is totally optional!<\/p>\n<p><em><strong>Important:\u00a0<\/strong><a href=\"https:\/\/www.petmd.com\/dog\/conditions\/digestive\/food-allergies-dogs\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"external\">Dogs can have food allergies too<\/a>! I intentionally used ingredients that are safe for dogs in general, but not every canine is the same. It&#8217;s important to know what foods your dog might be sensitive or intolerant to. I recommend that you first offer them a small piece to see if any reactions occur, then once you are in the clear, you can spoil them with all the homemade treats you want.\u00a0<\/em><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/homemade-dog-treats-quick-and-healthy\/homemade-dog-treat-recipe\/\" rel=\"attachment wp-att-154994 follow noopener noreferrer\" data-wpel-link=\"internal\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-154994 size-large\" title=\"How to make homemade dog treats\" src=\"https:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/01\/homemade-dog-treat-recipe-1024x683-1.jpg\" data-fslightbox=\"gallery1\"><\/a><\/p>\n<p>You can always adjust the cooking time, depending on how crunchy you\u2019d like them to be. They can also be stored in the freezer for later.<\/p>\n<p>Here\u2019s the quick recipe for healthy dog treats &#8211; it&#8217;s super easy!<\/p>\n<h3>How to make homemade dog treats:<\/h3>\n<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><br \/>\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/fitnessista.com\/homemade-dog-treats-quick-and-healthy\/print\/154996\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-154996-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><\/p>\n<div id=\"tasty-recipes-154996\" data-tr-id=\"154996\" class=\"tasty-recipes tasty-recipes-154996 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 dog treats (quick and healthy!)<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n<div class=\"tasty-recipes-image\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/01\/IMG_7159-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-dog-treats-quick-and-healthy\/print\/154996\/\" 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>\n<\/p><\/div>\n<\/div>\n<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n<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><br \/>\n<span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\" data-tr-default-rating=\"0\">\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\"><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\"><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\"><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\"><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\"><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<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\">No reviews<\/span><\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n<p>This is a quick treat recipe that your furry friend will love! I used garbanzo bean flour (they love chickpeas!), but feel free to use whole wheat instead.<\/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>\n<\/p><\/div>\n<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n<p><span data-amount=\"1\" data-unit=\"cup\">1 cup<\/span> garbanzo bean flour (can use whole wheat instead)<\/p>\n<p><span data-amount=\"3\">3<\/span> eggs (reserve 1 for the egg wash)<\/p>\n<p><span data-amount=\"0.25\" data-unit=\"cup\">1\/4 cup<\/span> pumpkin puree<\/p>\n<p><span data-amount=\"0.5\" data-unit=\"cup\">1\/2 cup<\/span> peanut butter (check the ingredients for peanuts and salt only)<\/p>\n<p><span data-amount=\"0.5\" data-unit=\"cup\">1\/2 cup<\/span> quick cooking oats<\/p>\n<p>All-purpose flour for rolling<\/p>\n<p>Cookie cutters of choice<\/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\"><br \/>\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_67a247ab4cec3_cookmode\" \/><br \/>\n\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_67a247ab4cec3_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<ol>\n<li id=\"instruction-step-1\">Preheat the oven to 325 and line a baking sheet with parchment paper.<\/li>\n<li id=\"instruction-step-2\">In a large bowl, combine two eggs (set aside one for the egg wash), peanut butter, pumpkin puree, flour, and oatmeal. Stir until a dough forms, adding more garbanzo bean flour or a little all-purpose flour if needed.<\/li>\n<li id=\"instruction-step-3\">Sprinkle some all-purpose flour onto a clean surface and add the dough. It will be kind of sticky, so use the flour to coat the outside of the dough as you roll it to about 1\/2-inch thick.<\/li>\n<li id=\"instruction-step-4\">Cut into shapes, then place gently onto the prepared baking sheet.<\/li>\n<li id=\"instruction-step-5\">Combine the remaining dough, roll, and repeat.<\/li>\n<li id=\"instruction-step-6\">To make the egg wash, in a small bowl, whisk the remaining egg and 1 tablespoon of water. Use a pastry brush to paint the top of each treat with the egg wash.<\/li>\n<li id=\"instruction-step-7\">Transfer the baking sheet to the oven and bake for about 30 minutes, until hard and brown on the bottoms.<\/li>\n<li id=\"instruction-step-8\">Let cool completely before storing or serving.<\/li>\n<\/ol><\/div>\n<\/p><\/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><script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\/\/fitnessista.com\/wp-admin\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":154990};\nwindow.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}<\/p>\n<p>if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}<\/p>\n<p>const elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}<\/p>\n<p>e.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};<\/p>\n<p>document.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);<\/p>\n<p>window.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}<\/p>\n<p>const cookModes = document.querySelectorAll(this.cookModeSelector);<\/p>\n<p>if (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};<\/p>\n<p>(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.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}<\/p>\n<p>this.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );<\/p>\n<p>setTimeout( () => {\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' );<\/p>\n<p>const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}<\/p>\n<p>this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}<\/p>\n<p>const 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 );<\/p>\n<p>this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );<\/p>\n<p>},\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};<\/p>\n<p>window.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );<\/p>\n<p>xhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}<\/p>\n<p>failure( xhr );\n};<\/p>\n<p>xhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();<\/p>\n<p>for ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};<\/p>\n<p>window.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;<\/p>\n<p>this.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}<\/p>\n<p>window.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 );<\/p>\n<p>\/\/ 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 );<\/p>\n<p>if ( ! data.count ) {\nreturn;\n}<\/p>\n<p>const quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}<\/p>\n<p>const 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}<\/p>\n<p>if ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}<\/p>\n<p>const averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}<\/p>\n<p>const 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}<\/p>\n<p>const 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}<\/p>\n<p>const commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}<\/p>\n<p>const commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}<\/p>\n<p>\/\/ 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;<\/p>\n<p>\/\/ 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;<\/p>\n<p>this.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}<\/p>\n<p>const 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}<\/p>\n<p>if ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}<\/p>\n<p>const 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};<\/p>\n<p>(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>\n<h3>How To Store Homemade Dog Treats<\/h3>\n<p>To store your homemade dog treats, allow them to cool completely, then place them in an airtight container. These peanut butter dog treats can be stored at room temperature or, to prolong their shelf life, store them in the fridge or in the freezer in a freezer-safe container. Be sure to check them for any signs of spoilage before feeding them to your pup.<\/p>\n<h3>How Long Do Homemade Dog Treats Last?<\/h3>\n<p>While the length of time varies, generally speaking, homemade dog treats like the ones in this post will last for about 5-7 days on the counter, several weeks in an airtight container in the fridge, or 6-12 months in the freezer.<\/p>\n<p>Have you ever tried a homemade dog biscuit recipe? What\u2019s a food your dog always goes crazy over? I never eat chicken without thinking about <a href=\"https:\/\/fitnessista.com\/goodbye-sweet-bella-boo\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Bella<\/a>.<\/p>\n<p>xoxo<\/p>\n<p>Gina<\/p>\n<p>The post <a href=\"https:\/\/fitnessista.com\/homemade-dog-treats-quick-and-healthy\/\">Homemade dog treats (quick and healthy!)<\/a> appeared first on <a href=\"https:\/\/fitnessista.com\">The Fitnessista<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sharing a quick and easy homemade recipe for dog treats that your pup will love! All you have to do is make the dough, cut it out in a shape of your choice, and bake. Hi friends! How is your week going? For today, let\u2019s talk about dog treats. I know \u2013 kinda random for\u2026<br \/>\nThe post Homemade dog treats (quick and healthy!) appeared first on The Fitnessista.<\/p>\n","protected":false},"author":1,"featured_media":94166,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wprm-recipe-roundup-name":"","wprm-recipe-roundup-description":""},"categories":[20,1,21,22,19],"tags":[],"_links":{"self":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts\/94164"}],"collection":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/comments?post=94164"}],"version-history":[{"count":3,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts\/94164\/revisions"}],"predecessor-version":[{"id":94170,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts\/94164\/revisions\/94170"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/media\/94166"}],"wp:attachment":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/media?parent=94164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/categories?post=94164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/tags?post=94164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}