}else if(is_file($mobile_path)){ @unlink($mobile_path); } } } } } public function singleDeleteCache($comment_id = false, $post_id = false, $to_clear_parents = true){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $to_clear_feed = true; // not to clear cache of homepage/cats/tags after ajax request by other plugins if(isset($_POST) && isset($_POST["action"])){ // kk Star Rating if($_POST["action"] == "kksr_ajax"){ $to_clear_parents = false; } // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ $to_clear_parents = false; } // Yet Another Stars Rating if($_POST["action"] == "yasr_send_visitor_rating"){ $to_clear_parents = false; $post_id = sanitize_text_field($_POST["post_id"]); } // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ $to_clear_feed = false; } } if($comment_id){ $comment_id = intval($comment_id); $comment = get_comment($comment_id); if($comment && $comment->comment_post_ID){ $post_id = $comment->comment_post_ID; } } if($post_id){ $post_id = intval($post_id); $permalink = get_permalink($post_id); $permalink = urldecode(get_permalink($post_id)); //for trash contents if(preg_match("/\/\?(p|page_id)\=\d+/i", $permalink)){ $post = get_post($post_id); $clone_post = clone $post; $clone_post->post_status = 'publish'; $permalink = get_permalink($clone_post); $permalink = rtrim($permalink, "/"); $permalink = preg_replace("/__trashed$/", "", $permalink); //for /%postname%/%post_id% : sample-url__trashed/57595 $permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $permalink); } if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } $files = array(); if(is_dir($path)){ array_push($files, $path); } if(is_dir($mobile_path)){ array_push($files, $mobile_path); } if(defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){ $files_with_query_string = glob($path."\?*"); $mobile_files_with_query_string = glob($mobile_path."\?*"); if(is_array($files_with_query_string) && (count($files_with_query_string) > 0)){ $files = array_merge($files, $files_with_query_string); } if(is_array($mobile_files_with_query_string) && (count($mobile_files_with_query_string) > 0)){ $files = array_merge($files, $mobile_files_with_query_string); } } if($to_clear_feed){ // to clear cache of /feed if(preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link(), $feed_out)){ array_push($files, $this->getWpContentDir("/cache/all/").$feed_out[1]); } // to clear cache of /comments/feed/ if(preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link("comments_"), $comment_feed_out)){ array_push($files, $this->getWpContentDir("/cache/all/").$comment_feed_out[1]); } } foreach((array)$files as $file){ $this->rm_folder_recursively($file); } } if($to_clear_parents){ // to clear cache of homepage $this->deleteHomePageCache(); // to clear cache of author page $this->delete_author_page_cache($post_id); // to clear sitemap cache $this->delete_sitemap_cache(); // to clear cache of next post and cache of prev post $this->delete_next_prev_cache($post_id); // to clear cache of cats and tags which contains the post (only first page) global $wpdb; $terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".$post_id, ARRAY_A); foreach ($terms as $term_key => $term_val){ $this->delete_cache_of_term($term_val["term_taxonomy_id"]); } } $this->delete_multiple_domain_mapping_cache(); } } public function delete_next_prev_cache($post_id){ global $wpdb; $post = get_post($post_id); $next_post_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE ID = (SELECT min(ID) FROM `".$wpdb->prefix."posts` where ID > ".$post_id." AND `post_type` = '".$post->post_type."' AND `post_status` = 'publish')"; $prev_post_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE ID = (SELECT max(ID) FROM `".$wpdb->prefix."posts` where ID < ".$post_id." AND `post_type` = '".$post->post_type."' AND `post_status` = 'publish')"; $res = $wpdb->get_results($next_post_query." UNION ".$prev_post_query); if(isset($res[0])){ foreach ($res as $key => $value) { $permalink = urldecode(get_permalink($value->ID)); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; if(is_dir($path)){ $this->rm_folder_recursively($path); } if(is_dir($mobile_path)){ $this->rm_folder_recursively($mobile_path); } } } } } public function delete_sitemap_cache(){ //to clear sitemap.xml and sitemap-(.+).xml $files = array_merge(glob($this->getWpContentDir("/cache/all/")."sitemap*.xml"), glob($this->getWpContentDir("/cache/wpfc-mobile-cache/")."sitemap*.xml")); foreach((array)$files as $file){ $this->rm_folder_recursively($file); } } public function delete_multiple_domain_mapping_cache($minified = false){ //https://wordpress.org/plugins/multiple-domain-mapping-on-single-site/ if($this->isPluginActive("multiple-domain-mapping-on-single-site/multidomainmapping.php")){ $multiple_arr = get_option('falke_mdm_mappings'); if(isset($multiple_arr) && isset($multiple_arr["mappings"]) && isset($multiple_arr["mappings"][0])){ foreach($multiple_arr["mappings"] as $mapping_key => $mapping_value){ if($minified){ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all\/)/", "/cache/".$mapping_value["domain"]."/", $this->getWpContentDir("/cache/all/")); if(is_dir($mapping_domain_path)){ if(@rename($mapping_domain_path, $this->getWpContentDir("/cache/tmpWpfc/").$mapping_value["domain"]."_".time())){ } } }else{ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all)/", "/cache/".$mapping_value["domain"]."/all", $this->getWpContentDir("/cache/all/index.html")); @unlink($mapping_domain_path); } } } } } public function delete_author_page_cache($post_id){ $author_id = get_post_field ('post_author', $post_id); $permalink = get_author_posts_url($author_id); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; $this->move_folder_to_tmpWpfc($path); $this->move_folder_to_tmpWpfc($mobile_path); } } public function move_folder_to_tmpWpfc($path = false){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ @mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true); } if(!$path){ return false; } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ return false; } if(is_dir($path)){ preg_match("/\/([^\/]+)\/?$/", $path, $type); if(isset($type[1])){ if(preg_match("/\/cache\/wpfc-mobile-cache\//", $path)){ $type[1] = "m_".$type[1]; } $move_to = $this->getWpContentDir("/cache/tmpWpfc/").$type[1]."_".time(); rename($path, $move_to); } } } public function delete_cache_of_term($term_taxonomy_id){ $term = get_term_by("term_taxonomy_id", $term_taxonomy_id); if(!$term || is_wp_error($term)){ return false; } //if(preg_match("/cat|tag|store|listing/", $term->taxonomy)){} $url = get_term_link($term->term_id, $term->taxonomy); if(preg_match("/^http/", $url)){ $path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url); $path = trim($path, "/"); $path = urldecode($path); // to remove the cache of tag/cat if(file_exists($this->getWpContentDir("/cache/all/").$path."/index.html")){ @unlink($this->getWpContentDir("/cache/all/").$path."/index.html"); } if(file_exists($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/index.html")){ @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/index.html"); } // to remove the cache of the pages $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/page"); // to remove the cache of the feeds $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$path."/feed"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/feed"); } if($term->parent > 0){ $parent = get_term_by("id", $term->parent, $term->taxonomy); if(isset($parent->term_taxonomy_id)){ $this->delete_cache_of_term($parent->term_taxonomy_id); } } } public function unlink($path){ if(file_exists($path)){ unlink($path); } } public function deleteHomePageCache($log = true){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url()); $home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url()); if($site_url_path){ $site_url_path = trim($site_url_path, "/"); if($site_url_path){ $this->unlink($this->getWpContentDir("/cache/all/").$site_url_path."/index.html"); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$site_url_path."/index.html"); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$site_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$site_url_path."/page"); } } if($home_url_path){ $home_url_path = trim($home_url_path, "/"); if($home_url_path){ $this->unlink($this->getWpContentDir("/cache/all/").$home_url_path."/index.html"); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$home_url_path."/index.html"); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$home_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$home_url_path."/page"); } } if(function_exists("wc_get_page_id")){ if($shop_id = wc_get_page_id('shop')){ $store_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", get_permalink($shop_id)); if($store_url_path){ $store_url_path = trim($store_url_path, "/"); if($store_url_path){ if(file_exists($this->getWpContentDir("/cache/all/").$store_url_path."/index.html")){ @unlink($this->getWpContentDir("/cache/all/").$store_url_path."/index.html"); } if(file_exists($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/index.html")){ @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/index.html"); } //to clear pagination of store homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$store_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/page"); } } } } $this->unlink($this->getWpContentDir("/cache/all/index.html")); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/index.html")); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/page")); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/page")); // options-reading.php - static posts page if($page_for_posts_id = get_option('page_for_posts')){ $page_for_posts_permalink = urldecode(get_permalink($page_for_posts_id)); $page_for_posts_permalink = rtrim($page_for_posts_permalink, "/"); $page_for_posts_permalink = preg_replace("/__trashed$/", "", $page_for_posts_permalink); //for /%postname%/%post_id% : sample-url__trashed/57595 $page_for_posts_permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $page_for_posts_permalink); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $page_for_posts_permalink, $out)){ $page_for_posts_path = $this->getWpContentDir("/cache/all/").$out[1]; $page_for_posts_mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; $this->rm_folder_recursively($page_for_posts_path); $this->rm_folder_recursively($page_for_posts_mobile_path); } } if($log){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } } } public function deleteCache($minified = false){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $this->set_preload(); $created_tmpWpfc = false; $cache_deleted = false; $minifed_deleted = false; $cache_path = $this->getWpContentDir("/cache/all"); $minified_cache_path = $this->getWpContentDir("/cache/wpfc-minified"); if(class_exists("WpFcMobileCache")){ if(is_dir($this->getWpContentDir("/cache/wpfc-mobile-cache"))){ if(is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ rename($this->getWpContentDir("/cache/wpfc-mobile-cache"), $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); }else if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ rename($this->getWpContentDir("/cache/wpfc-mobile-cache"), $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); } } } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ $created_tmpWpfc = true; }else{ $created_tmpWpfc = false; //$this->systemMessage = array("Permission of /wp-content/cache must be 755", "error"); } }else{ $created_tmpWpfc = true; } //to clear widget cache path $this->deleteWidgetCache(); $this->delete_multiple_domain_mapping_cache($minified); if(is_dir($cache_path)){ if(@rename($cache_path, $this->getWpContentDir("/cache/tmpWpfc/").time())){ delete_option("WpFastestCacheHTML"); delete_option("WpFastestCacheHTMLSIZE"); delete_option("WpFastestCacheMOBILE"); delete_option("WpFastestCacheMOBILESIZE"); $cache_deleted = true; } }else{ $cache_deleted = true; } if($minified){ if(is_dir($minified_cache_path)){ if(@rename($minified_cache_path, $this->getWpContentDir("/cache/tmpWpfc/m").time())){ delete_option("WpFastestCacheCSS"); delete_option("WpFastestCacheCSSSIZE"); delete_option("WpFastestCacheJS"); delete_option("WpFastestCacheJSSIZE"); $minifed_deleted = true; } }else{ $minifed_deleted = true; } }else{ $minifed_deleted = true; } if($created_tmpWpfc && $cache_deleted && $minifed_deleted){ do_action('wpfc_delete_cache'); $this->notify(array("All cache files have been deleted", "updated")); if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } }else{ $this->notify(array("Permissions Problem: Read More", "error")); } // for ajax request if(isset($_GET["action"]) && in_array($_GET["action"], array("wpfc_delete_cache", "wpfc_delete_cache_and_minified"))){ die(json_encode($this->systemMessage)); } } public function checkCronTime(){ $crons = _get_cron_array(); foreach ((array)$crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ foreach ( (array) $events as $event_key => $event ) { add_action("wp_fastest_cache".$id[1], array($this, 'setSchedule')); } } } } } add_action($this->slug()."_Preload", array($this, 'create_preload_cache'), 11); } public function set_preload(){ include_once('inc/preload.php'); PreloadWPFC::set_preload($this->slug()); } public function create_preload_cache(){ $this->options = $this->getOptions(); include_once('inc/preload.php'); PreloadWPFC::create_preload_cache($this->options); } public function wpfc_remote_get($url, $user_agent, $return_content = false){ //$response = wp_remote_get($url, array('timeout' => 10, 'sslverify' => false, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"),'user-agent' => $user_agent))); $response = wp_remote_get($url, array('user-agent' => $user_agent, 'timeout' => 10, 'sslverify' => false, 'headers' => array("cache-control" => "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"))); if (!$response || is_wp_error($response)){ echo $response->get_error_message()." - "; return false; }else{ if(wp_remote_retrieve_response_code($response) != 200){ return false; } if($return_content){ if(wp_remote_retrieve_response_code($response) == 200){ $data = wp_remote_retrieve_body($response); return $data; } } } return true; } public function setSchedule($args = ""){ if($args){ $rule = json_decode($args); if($rule->prefix == "all"){ $this->deleteCache(); }else if($rule->prefix == "homepage"){ $this->deleteHomePageCache(); if(isset($this->options->wpFastestCachePreload_homepage) && $this->options->wpFastestCachePreload_homepage){ $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload Bot - After Cache Timeout"); $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload iPhone Mobile Bot - After Cache Timeout"); } }else if($rule->prefix == "startwith"){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){} } $rule->content = trim($rule->content, "/"); $files = glob($this->getWpContentDir("/cache/all/").$rule->content."*"); foreach ((array)$files as $file) { $mobile_file = str_replace("/cache/all/", "/cache/wpfc-mobile-cache/", $file); @rename($file, $this->getWpContentDir("/cache/tmpWpfc/").time()); @rename($mobile_file, $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); } }else if($rule->prefix == "exact"){ $rule->content = trim($rule->content, "/"); @unlink($this->getWpContentDir("/cache/all/").$rule->content."/index.html"); @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$rule->content."/index.html"); } if($rule->prefix != "all"){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action($rule); } } }else{ //for old cron job $this->deleteCache(); } } public function modify_htaccess_for_new_user($user_id){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } $htaccess = @file_get_contents($path.".htaccess"); if(preg_match("/\#\s?Start_WPFC_Exclude_Admin_Cookie/", $htaccess)){ $rules = $this->excludeAdminCookie(); $htaccess = preg_replace("/\#\s?Start_WPFC_Exclude_Admin_Cookie[^\#]*\#\s?End_WPFC_Exclude_Admin_Cookie\s+/", $rules, $htaccess); } @file_put_contents($path.".htaccess", $htaccess); } public function excludeAdminCookie(){ $usernames = array(); $users_groups = array_chunk(get_users(array("role" => "administrator", "fields" => array("user_login"))), 5); foreach ($users_groups as $group_key => $group) { $tmp_user = ""; $tmp_rule = ""; foreach ($group as $key => $value) { $tmp_user = sanitize_user(wp_unslash($value->user_login), true); /* to replace spaces with %20 1. Empty space character causes 500 internal server error 2. "\s" is not detected by htaccess so we added "%20" */ $tmp_user = preg_replace("/\s/", "%20", $tmp_user); array_push($usernames, $tmp_user); } } $rule = "# Start_WPFC_Exclude_Admin_Cookie\n"; $rule = $rule."RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=".implode("|", $usernames); $rule = $rule."\n# End_WPFC_Exclude_Admin_Cookie\n"; return $rule; } public function excludeRules(){ $htaccess_page_rules = ""; $htaccess_page_useragent = ""; $htaccess_page_cookie = ""; $rules_json = get_option("WpFastestCacheExclude"); if(!empty($rules_json) && $rules_json !== "null"){ $rules_std = json_decode($rules_json); // JSON hatalıysa çık if (json_last_error() !== JSON_ERROR_NONE || !is_array($rules_std)) { return ""; } foreach ($rules_std as $value) { // default type $value->type = isset($value->type) ? $value->type : "page"; // content yoksa skip if(empty($value->content)){ continue; } // HTML entity decode (örn: < >) $content = html_entity_decode($value->content, ENT_QUOTES, 'UTF-8'); // ---------- PAGE RULES ---------- if($value->type == "page"){ // REGEX (escape yok!) if(isset($value->prefix) && $value->prefix == "regex"){ // basit regex validation (çok kırılmayı önler) if(@preg_match("/".$content."/", null) === false){ continue; // hatalı regex skip } $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !".$content." [NC]\n"; } // NORMAL RULES (escape var) else{ // regex injection önleme $safe_content = preg_quote($content, "/"); if($value->prefix == "startwith"){ $safe_content = ltrim($safe_content, "/"); $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !^/".$safe_content." [NC]\n"; } if($value->prefix == "contain"){ $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !".$safe_content." [NC]\n"; } if($value->prefix == "exact"){ $safe_content = trim($safe_content, "/"); $htaccess_page_rules .= "RewriteCond %{REQUEST_URI} !^/".$safe_content."$ [NC]\n"; } } } // ---------- USER AGENT ---------- else if($value->type == "useragent"){ $safe_content = preg_quote($content, "/"); $htaccess_page_useragent .= "RewriteCond %{HTTP_USER_AGENT} !".$safe_content." [NC]\n"; } // ---------- COOKIE ---------- else if($value->type == "cookie"){ if($value->prefix == "contain"){ $safe_content = preg_quote($content, "/"); $htaccess_page_cookie .= "RewriteCond %{HTTP:Cookie} !".$safe_content." [NC]\n"; }else if($value->prefix == "regex"){ // basit regex validation (çok kırılmayı önler) if(@preg_match("/".$content."/", null) === false){ continue; // hatalı regex skip } $htaccess_page_cookie .= "RewriteCond %{HTTP:Cookie} !".$content." [NC]\n"; } } } } return "# Start WPFC Exclude\n" .$htaccess_page_rules .$htaccess_page_useragent .$htaccess_page_cookie ."# End WPFC Exclude\n"; } public function getABSPATH(){ if(function_exists("get_home_path")){ return get_home_path(); }else{ $path = ABSPATH; $siteUrl = site_url(); $homeUrl = home_url(); $diff = str_replace($homeUrl, "", $siteUrl); $diff = trim($diff,"/"); $pos = strrpos($path, $diff); if($pos !== false){ $path = substr_replace($path, "", $pos, strlen($diff)); $path = trim($path,"/"); $path = "/".$path."/"; } return $path; } } public function rm_folder_recursively($dir, &$i = 1) { if (!is_dir($dir)) { return true; } $files = @scandir($dir); if ($files === false) { return true; } foreach ($files as $file) { if ($file === '.' || $file === '..') { continue; } if ($i > 100 && !preg_match("/wp-fastest-cache-premium/i", $dir)) { return true; } $path = $dir . '/' . $file; if (is_dir($path)) { $this->rm_folder_recursively($path, $i); } else { if (file_exists($path)) { @unlink($path); $i++; } } } if (is_dir($dir)) { $files_tmp = @scandir($dir); if ($files_tmp !== false && count($files_tmp) <= 2) { @rmdir($dir); } } return true; } public function is_subdirectory_install(){ if(strlen(site_url()) > strlen(home_url())){ return true; } return false; } protected function getMobileUserAgents(){ return implode("|", $this->get_mobile_browsers())."|".implode("|", $this->get_operating_systems()); } public function get_premium_path($name){ return WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/".$name; } public function cron_add_minute( $schedules ) { $schedules['everyminute'] = array( 'interval' => 60*1, 'display' => __( 'Once Every 1 Minute' ), 'wpfc' => true ); $schedules['everyfiveminute'] = array( 'interval' => 60*5, 'display' => __( 'Once Every 5 Minutes' ), 'wpfc' => true ); $schedules['everyfifteenminute'] = array( 'interval' => 60*15, 'display' => __( 'Once Every 15 Minutes' ), 'wpfc' => true ); $schedules['twiceanhour'] = array( 'interval' => 60*30, 'display' => __( 'Twice an Hour' ), 'wpfc' => true ); $schedules['onceanhour'] = array( 'interval' => 60*60, 'display' => __( 'Once an Hour' ), 'wpfc' => true ); $schedules['everytwohours'] = array( 'interval' => 60*60*2, 'display' => __( 'Once Every 2 Hours' ), 'wpfc' => true ); $schedules['everythreehours'] = array( 'interval' => 60*60*3, 'display' => __( 'Once Every 3 Hours' ), 'wpfc' => true ); $schedules['everyfourhours'] = array( 'interval' => 60*60*4, 'display' => __( 'Once Every 4 Hours' ), 'wpfc' => true ); $schedules['everyfivehours'] = array( 'interval' => 60*60*5, 'display' => __( 'Once Every 5 Hours' ), 'wpfc' => true ); $schedules['everysixhours'] = array( 'interval' => 60*60*6, 'display' => __( 'Once Every 6 Hours' ), 'wpfc' => true ); $schedules['everysevenhours'] = array( 'interval' => 60*60*7, 'display' => __( 'Once Every 7 Hours' ), 'wpfc' => true ); $schedules['everyeighthours'] = array( 'interval' => 60*60*8, 'display' => __( 'Once Every 8 Hours' ), 'wpfc' => true ); $schedules['everyninehours'] = array( 'interval' => 60*60*9, 'display' => __( 'Once Every 9 Hours' ), 'wpfc' => true ); $schedules['everytenhours'] = array( 'interval' => 60*60*10, 'display' => __( 'Once Every 10 Hours' ), 'wpfc' => true ); $schedules['onceaday'] = array( 'interval' => 60*60*24, 'display' => __( 'Once a Day' ), 'wpfc' => true ); $schedules['everythreedays'] = array( 'interval' => 60*60*24*3, 'display' => __( 'Once Every 3 Days' ), 'wpfc' => true ); $schedules['everysevendays'] = array( 'interval' => 60*60*24*7, 'display' => __( 'Once Every 7 Days' ), 'wpfc' => true ); $schedules['everytendays'] = array( 'interval' => 60*60*24*10, 'display' => __( 'Once Every 10 Days' ), 'wpfc' => true ); $schedules['everyfifteendays'] = array( 'interval' => 60*60*24*15, 'display' => __( 'Once Every 15 Days' ), 'wpfc' => true ); $schedules['montly'] = array( 'interval' => 60*60*24*30, 'display' => __( 'Once a Month' ), 'wpfc' => true ); $schedules['yearly'] = array( 'interval' => 60*60*24*30*12, 'display' => __( 'Once a Year' ), 'wpfc' => true ); return $schedules; } public function setCustomInterval(){ add_filter( 'cron_schedules', array($this, 'cron_add_minute')); } public function isPluginActive( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || $this->isPluginActiveForNetwork( $plugin ); } public function isPluginActiveForNetwork( $plugin ) { if ( !is_multisite() ) return false; $plugins = get_site_option( 'active_sitewide_plugins'); if ( isset($plugins[$plugin]) ) return true; return false; } public function current_url(){ global $wp; $current_url = home_url($_SERVER['REQUEST_URI']); return $current_url; // if(defined('WP_CLI')){ // $_SERVER["SERVER_NAME"] = isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : ""; // $_SERVER["SERVER_PORT"] = isset($_SERVER["SERVER_PORT"]) ? $_SERVER["SERVER_PORT"] : 80; // } // $pageURL = 'http'; // if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){ // $pageURL .= 's'; // } // $pageURL .= '://'; // if($_SERVER['SERVER_PORT'] != '80'){ // $pageURL .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI']; // }else{ // $pageURL .= $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; // } // return $pageURL; } public function wpfc_load_plugin_textdomain(){ load_plugin_textdomain('wp-fastest-cache', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } public function cdn_replace_urls($matches){ if(count($this->cdn) > 0){ foreach ($this->cdn as $key => $cdn) { if($cdn->id == "cloudflare"){ continue; } if(isset($cdn->status) && $cdn->status == "pause"){ continue; } if(preg_match("/manifest\.json\.php/i", $matches[0])){ return $matches[0]; } //https://site.com?brizy_media=AttachmentName.jpg&brizy_crop=CropSizes&brizy_post=TheCurrentPost if(preg_match("/brizy_media\=/i", $matches[0])){ return $matches[0]; } //https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_736/http://wpfc.com/stories.png if(preg_match("/cdn\.shortpixel\.ai\/client/i", $matches[0])){ return $matches[0]; } if(preg_match("/^\/\/random/", $cdn->cdnurl) || preg_match("/\/\/i\d\.wp\.com/", $cdn->cdnurl)){ // Photon will no longer be supported continue; } $cdnurl = $cdn->cdnurl; $cdn->file_types = str_replace(",", "|", $cdn->file_types); if(preg_match("/\.(".$cdn->file_types.")(\"|\'|\?|\)|\s|\"\;)/i", $matches[0])){ //nothing }else{ if(preg_match("/js/", $cdn->file_types)){ if(!preg_match("/\/revslider\/public\/assets\/js/", $matches[0])){ continue; } }else{ continue; } } if($cdn->keywords){ $cdn->keywords = str_replace(",", "|", $cdn->keywords); if(!preg_match("/".preg_quote($cdn->keywords, "/")."/i", $matches[0])){ continue; } } if(isset($cdn->excludekeywords) && $cdn->excludekeywords){ $cdn->excludekeywords = str_replace(",", "|", $cdn->excludekeywords); if(preg_match("/".preg_quote($cdn->excludekeywords, "/")."/i", $matches[0])){ continue; } } if(preg_match("/(data-product_variations|data-siteorigin-parallax)\=[\"\'][^\"\']+[\"\']/i", $matches[0])){ $cdnurl = preg_replace("/(https?\:)?(\/\/)(www\.)?/", "", $cdnurl); // if(preg_match("/i\d\.wp\.com/i", $cdnurl)){ // $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", "$1$2$3".$cdnurl, $matches[0]); // }else{ // $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", "$1$2$3$4".$cdnurl, $matches[0]); // } $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", '${1}${2}${3}'.$cdnurl, $matches[0]); }else if(preg_match("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?".preg_quote("\/\/", "/")."(www\.)?/i", "", $matches[0]); $matches[0] = preg_replace("/".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); }else if(isset($matches[2]) && preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[2])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); }else if(isset($matches[2]) && preg_match("/^(\/?)(wp-includes|wp-content)/", $matches[2])){ $matches[0] = preg_replace("/(\/?)(wp-includes|wp-content)/i", $cdnurl."/"."$2", $matches[0]); }else if(preg_match("/[\"\']https?\:\\\\\/\\\\\/[^\"\']+[\"\']/i", $matches[0])){ if(preg_match("/^(logo|url|image)$/i", $matches[1])){ //If the url is called with "//", it causes an error on https://search.google.com/structured-data/testing-tool/u/0/ // // // }else{ // $matches[0] = preg_replace("/\\\\\//", "/", $matches[0]); if(preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); $matches[0] = preg_replace("/\//", "\/", $matches[0]); } } } } } return $matches[0]; } public function read_file($url){ if(!preg_match("/\.php/", $url)){ $url = preg_replace("/\?.*/", "", $url); if(preg_match("/wp-content/", $url)){ $path = preg_replace("/.+\/wp-content\/(.+)/", WPFC_WP_CONTENT_DIR."/"."$1", $url); }else if(preg_match("/wp-includes/", $url)){ $path = preg_replace("/.+\/wp-includes\/(.+)/", ABSPATH."wp-includes/"."$1", $url); } if(isset($path)){ if(@file_exists($path)){ $filesize = filesize($path); if($filesize > 0){ $myfile = fopen($path, "r") or die("Unable to open file!"); $data = fread($myfile, $filesize); fclose($myfile); return $data; }else{ return false; } } } } return false; } public function get_operating_systems(){ $operating_systems = array( 'Android', 'blackberry|\bBB10\b|rim\stablet\sos', 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', 'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;', 'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;', '\biPhone.*Mobile|\biPod|\biPad', 'Apple-iPhone7C2', 'MeeGo', 'Maemo', 'J2ME\/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 'webOS|hpwOS', '\bBada\b', 'BREW' ); return $operating_systems; } public function get_mobile_browsers(){ $mobile_browsers = array( '\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?', '\bDolfin\b', 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+', 'Skyfire', 'Mobile\sSafari\/[.0-9]*\sEdge', 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', 'bolt', 'teashark', 'Blazer', 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', 'Tizen', 'UC.*Browser|UCWEB', 'baiduboxapp', 'baidubrowser', 'DiigoBrowser', 'Puffin', '\bMercury\b', 'Obigo', 'NF-Browser', 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', 'Android.*PaleMoon|Mobile.*PaleMoon' ); return $mobile_browsers; } } // Load WP CLI command(s) on demand. if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once "inc/cli.php"; } function wpfc_clear_all_site_cache(){ if(defined('WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE') && WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE){ return array("success" => false, "message" => "Clearing Cache Hook system has been disabled"); } do_action("wpfc_clear_all_cache"); } function wpfc_clear_all_cache($minified = false){ if(defined('WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE') && WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE){ return array("success" => false, "message" => "Clearing Cache Hook system has been disabled"); } do_action("wpfc_clear_all_cache", $minified); } function wpfc_exclude_current_page(){ do_action("wpfc_exclude_current_page"); } function wpfc_clear_post_cache_by_id($post_id = false){ if($post_id){ do_action("wpfc_clear_post_cache_by_id", false, $post_id); } } function wpfc_create_post_cache_by_id($post_id = false){ if($post_id){ do_action("wpfc_create_post_cache_by_id", $post_id); } } $GLOBALS["wp_fastest_cache"] = new WpFastestCache(); ?> https://www.datisjammie.nl/ 2025-04-07T09:36:03+00:00 https://www.datisjammie.nl/recepten/aardbeiensiroop/ 2019-01-31T13:30:19+00:00 https://www.datisjammie.nl/afbeeldingen/Aardbeien-rabarber-siroop-recept-JAMMIE-groot.png https://www.datisjammie.nl/afbeeldingen/aardbeiensiroop-recept-JAMMIE.png https://www.datisjammie.nl/afbeeldingen/aardbeiensiroop-recept-JAMMIE-datisjammie.nl_.png https://www.datisjammie.nl/recepten/saliepesto/ 2019-02-13T13:33:39+00:00 https://www.datisjammie.nl/afbeeldingen/salie-saliepesto-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/salie-saliepesto-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/salie-saliepesto-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/spinazie-venkelsalade/ 2019-02-20T13:23:30+00:00 https://www.datisjammie.nl/afbeeldingen/spinazie-venkel-salade-recept-de-groene-garde-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/spinazie-venkel-salade-recept-de-groene-garde-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/spinazie-venkel-salade-recept-de-groene-garde-jammie-thumbnail.jpg https://www.datisjammie.nl/recepten/broodpudding/ 2019-02-20T14:27:09+00:00 https://www.datisjammie.nl/afbeeldingen/broodpudding-rozijnen-noten-recept-groot-JAMMIE.jpg https://www.datisjammie.nl/afbeeldingen/broodpudding-rozijnen-noten-recept-medium-JAMMIE.jpg https://www.datisjammie.nl/afbeeldingen/broodpudding-rozijnen-noten-recept-thumbnail-JAMMIE.jpg https://www.datisjammie.nl/recepten/aardbeien-sinaasappel-rode-bessen-smoothie/ 2019-02-22T13:35:13+00:00 https://www.datisjammie.nl/afbeeldingen/aardbei-sinaasappel-bes-smoothie-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/aardbei-sinaasappel-bes-smoothie-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/aardbei-sinaasappel-bes-smoothie-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/recepten/broccolisoep-met-verse-marjolein/ 2019-02-22T13:51:27+00:00 https://www.datisjammie.nl/afbeeldingen/broccolisoep-marjolein-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/broccolisoep-marjolein-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/broccolisoep-marjolein-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/recepten/pasta-met-lavendel-camembert/ 2019-03-21T09:23:23+00:00 https://www.datisjammie.nl/afbeeldingen/zomerse-pasta-lavendel-camembert-Groene-Garde-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/zomerse-pasta-lavendel-camembert-Groene-Garde-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/zomerse-pasta-lavendel-camembert-Groene-Garde-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/sandwich-met-banaan-chocolade-en-hazelnootpasta/ 2019-03-26T13:46:28+00:00 https://www.datisjammie.nl/afbeeldingen/sandwich-hazelnootpasta-banaan-chocolade-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/sandwich-hazelnootpasta-banaan-chocolade-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/sandwich-hazelnootpasta-banaan-chocolade-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/appelcompote-met-kaneel/ 2019-03-27T12:34:54+00:00 https://www.datisjammie.nl/afbeeldingen/appel-compote-kaneel-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/appel-compote-kaneel-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/appel-compote-kaneel-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/recepten/tropische-rabarbercompote-met-kokosschuim/ 2019-03-27T12:50:54+00:00 https://www.datisjammie.nl/afbeeldingen/tropische-rabarbercompote-kokosschuim-groene-garde-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/tropische-rabarbercompote-kokosschuim-groene-garde-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/tropische-rabarbercompote-kokosschuim-groene-garde-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/nieuws/jamboek-hoe-fotografeer-je-heel-veel-potjes/ 2019-04-02T12:57:59+00:00 https://www.datisjammie.nl/afbeeldingen/Fotoshoot-jamkookboek-najaar-winter-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Fotoshoot-jamkookboek-styling-Textiel-Dille-Kamille.jpg https://www.datisjammie.nl/afbeeldingen/Fotoshoot-jamkookboek-najaar-winter-JAMMIE-medium-liggend.jpg https://www.datisjammie.nl/nieuws/ik-ga-een-jamboek-schrijven/ 2019-04-02T13:19:32+00:00 https://www.datisjammie.nl/afbeeldingen/Janine-schrijft-jamkookboek-Nieuws-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Jamvragen-JAMMIE.png https://www.datisjammie.nl/afbeeldingen/jamkookboek-recepten-testen-JAMMIE-medium.jpg https://www.datisjammie.nl/nieuws/proef-eetbaar-utrecht-evenement/ 2019-04-17T11:06:40+00:00 https://www.datisjammie.nl/afbeeldingen/foodevenement-proef-eetbaar-utrecht-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevenement-proef-eetbaar-utrecht-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/nieuws/win-streekkrat-streekmolen/ 2019-04-23T19:50:14+00:00 https://www.datisjammie.nl/afbeeldingen/winactie-test-streekkrat-streekmolen-streekproducten-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/winactie-test-streekkrat-streekmolen-streekproducten-JAMMIE-medium.jpg https://www.datisjammie.nl/nieuws/de-springerdagen/ 2019-05-07T12:02:16+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-jammie-op-springerdagen-jammie-groot.jpg https://www.datisjammie.nl/nieuws/jammie-pruimenjam-is-al-op/ 2019-05-07T12:34:55+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-jam-pruimenjam-op-2011-nieuws-jammie-groot.jpg https://www.datisjammie.nl/nieuws/een-jammie-kerst-voor-jou/ 2019-05-07T12:48:10+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-jam-kerstspecial-2011-nieuws-jammie-groot.jpg https://www.datisjammie.nl/nieuws/2012-wordt-ontzettend-jammie/ 2019-05-07T13:00:11+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-nieuwjaarskaart-2012-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/jammie-nieuwjaarskaart-2012-nieuws-jammie-groot.jpg https://www.datisjammie.nl/nieuws/rotterdamse-oogstmarkt/ 2019-05-07T13:22:26+00:00 https://www.datisjammie.nl/afbeeldingen/rotterdam-oogstmarkt-2012-jammie-nieuws-groot.jpg https://www.datisjammie.nl/afbeeldingen/rotterdam-oogstmarkt-2012-jammie-nieuws-medium.jpg https://www.datisjammie.nl/nieuws/workshop-wecken-foodfilmfestival/ 2019-05-09T09:23:14+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-Food-Film-Festival-2012-Nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevent-Food-Film-Festival-2012-Nieuws-Jammie-medium.jpg https://www.datisjammie.nl/nieuws/workshop-wecken-foodfilmfestival-verslag/ 2019-05-09T09:42:56+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-Food-Film-Festival-2012-Nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/JAMMIE-workshop-wecken-FFF.png https://www.datisjammie.nl/nieuws/kookboek-de-groene-garde-puha/ 2019-05-09T10:44:01+00:00 https://www.datisjammie.nl/afbeeldingen/puha-utrecht-de-groene-garde-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/nieuws/foodfilmfestival-recepten/ 2019-05-09T10:51:32+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-Food-Film-Festival-2012-Nieuws-Jammie-groot.jpg https://www.datisjammie.nl/nieuws/pinterest/ 2019-05-09T13:02:49+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-pinterest-inspiratie-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/jammie-pinterest-inspiratie-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/nieuws/jammie-flair/ 2019-05-09T13:27:37+00:00 https://www.datisjammie.nl/afbeeldingen/rabarbertoetje-recept-groene-garde-flair-Jammie-Nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/rabarbertoetje-recept-groene-garde-flair-Jammie-Nieuws-Jammie-medium.jpg https://www.datisjammie.nl/recepten/walnotenpesto/ 2019-06-12T18:05:04+00:00 https://www.datisjammie.nl/afbeeldingen/walnoten-pesto-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/walnoten-pesto-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/walnoten-pesto-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/nieuws/peperzaden-planten/ 2019-06-26T09:06:35+00:00 https://www.datisjammie.nl/afbeeldingen/rode-peper-kweektips-Nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/rode-peper-kweektips-Nieuws-Jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/rode-peperkweekbak.png https://www.datisjammie.nl/afbeeldingen/rode-peperplant.png https://www.datisjammie.nl/afbeeldingen/hottie-sambal-tomaat.png https://www.datisjammie.nl/nieuws/jammie-joiedevivre/ 2019-06-26T09:08:35+00:00 https://www.datisjammie.nl/afbeeldingen/zomerse-pasta-lavendel-camembert-Groene-Garde-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/nieuws/groene-garde-korting/ 2019-06-26T09:09:18+00:00 https://www.datisjammie.nl/nieuws/jammiejam-bij-mary-k-hotel/ 2019-06-26T09:12:40+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-jam-verkoop-mary-k-hotel-utrecht-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/mary-k-hotel-winkel-jammie-jam.png https://www.datisjammie.nl/recepten/hummus/ 2019-06-26T09:38:17+00:00 https://www.datisjammie.nl/afbeeldingen/hummus-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/hummus-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/hummus-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/rijstsalade-met-winterpostelein/ 2019-06-26T10:30:11+00:00 https://www.datisjammie.nl/afbeeldingen/Rijstsalade-winterpostelein-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Rijstsalade-winterpostelein-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/Rijstsalade-winterpostelein-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Leestip-datisjammie.png https://www.datisjammie.nl/recepten/winterposteleinpesto/ 2019-06-26T10:32:34+00:00 https://www.datisjammie.nl/afbeeldingen/winterpostelein-winterposteleinpesto-pijnboompitten-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/winterpostelein-winterposteleinpesto-pijnboompitten-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/winterpostelein-winterposteleinpesto-pijnboompitten-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/rabarber-peerjam/ 2019-06-26T10:34:23+00:00 https://www.datisjammie.nl/afbeeldingen/rabarber-peer-jam-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/rabarber-peerjam-ingredienten-recept-jammie.png https://www.datisjammie.nl/afbeeldingen/rabarber-peerjam-fruit-recept-jammie.png https://www.datisjammie.nl/afbeeldingen/rabarber-peerjam-recept-jammie.png https://www.datisjammie.nl/recepten/hangop/ 2019-06-26T10:49:27+00:00 https://www.datisjammie.nl/afbeeldingen/hangop-fruit-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/hangop-fruit-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/hangop-karnemelk-rabarbercompote-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/hangop-fruit-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/nieuws/big-bang-broccoli/ 2019-06-26T11:03:30+00:00 https://www.datisjammie.nl/afbeeldingen/foodevenement-big-bang-broccoli-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevenement-big-bang-broccoli-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/big-bang-broccoli-logo.png https://www.datisjammie.nl/recepten/appelpunch-sinaasappel-en-specerijen/ 2019-06-26T12:11:06+00:00 https://www.datisjammie.nl/afbeeldingen/appelpunch-sinaasappel-specerijen-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/appelpunch-sinaasappel-specerijen-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/appelpunch-sinaasappel-specerijen-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/rabarber-aardbeienjam/ 2019-06-26T12:13:34+00:00 https://www.datisjammie.nl/afbeeldingen/Aardbei-rabarberjam-jammie-recept.png https://www.datisjammie.nl/afbeeldingen/rabarberjam-aardbeien-jammie-recept-jamboek.png https://www.datisjammie.nl/afbeeldingen/rabarber-aardbeienjam-jammie-jamrecept-e1526984227805.png https://www.datisjammie.nl/nieuws/jammie-is-online/ 2019-06-27T13:34:23+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-is-online-nieuws-datisjammie-groot.jpg https://www.datisjammie.nl/recepten/rabarberjam/ 2019-06-30T18:02:39+00:00 https://www.datisjammie.nl/afbeeldingen/rabarber-sinaasappel-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Rabarber-sinaasappel-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/Rabarber-sinaasappel-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/perenjam-met-speculaaskruiden/ 2019-08-06T12:47:45+00:00 https://www.datisjammie.nl/afbeeldingen/Perenjam-speculaaskruiden-JAMMIE.png https://www.datisjammie.nl/afbeeldingen/Perenjam-speculaaskruiden-recept-JAMMIE.png https://www.datisjammie.nl/afbeeldingen/Perenjam-speculaaskruiden-recept-JAMMIE-thumbnail.png https://www.datisjammie.nl/recepten/kersen-rodebessenjam/ 2019-08-07T12:25:30+00:00 https://www.datisjammie.nl/afbeeldingen/Kersen-rode-bessen-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Kersen-rode-bessen-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/Kersen-rode-bessen-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/abrikozen-aardbeienjam/ 2019-08-07T12:27:10+00:00 https://www.datisjammie.nl/afbeeldingen/abrikozen-aardbeien-jam-JAMMIE-recept-datisjammie.nl_.png https://www.datisjammie.nl/afbeeldingen/abrikozen-aardbeienjam-JAMMIE-recept-datisjammie.nl_.png https://www.datisjammie.nl/afbeeldingen/abrikozen-aardbeien-jam-JAMMIE-recept-e1532544255355.png https://www.datisjammie.nl/recepten/bramen-kersenjam/ 2019-09-04T13:19:36+00:00 https://www.datisjammie.nl/afbeeldingen/bramen-kersen-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/bramen-kersen-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/bramen-kersen-jam-recept-JAMMIE-medium-close-up.jpg https://www.datisjammie.nl/afbeeldingen/bramen-kersen-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/nieuws/4de-druk-kookboek-groene-garde/ 2019-10-29T13:42:46+00:00 https://www.datisjammie.nl/afbeeldingen/4de-druk-De-Groene-Garde-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/4de-druk-De-Groene-Garde-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/recepten/perziken-citroen-citroenmelissejam/ 2019-11-14T11:24:58+00:00 https://www.datisjammie.nl/afbeeldingen/perziken-citroen-citroenmelisse-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/perziken-citroen-citroenmelisse-jam-recept-JAMMIE-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/perziken-citroen-citroenmelisse-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/perzikenjam/ 2019-11-14T11:25:05+00:00 https://www.datisjammie.nl/afbeeldingen/perziken-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/perziken-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/perziken-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/blauwebessen-bramenjam/ 2019-11-14T11:25:48+00:00 https://www.datisjammie.nl/afbeeldingen/blauwe-bessen-bramen-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/blauwe-bessen-bramen-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/blauwe-bessen-bramen-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/bloedsinaasappeljam/ 2019-11-14T16:25:56+00:00 https://www.datisjammie.nl/afbeeldingen/bloedsinaasappel-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/bloedsinaasappel-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/bloedsinaasappel-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/kaki-sharonfruit-sinaasappel-jam/ 2019-11-14T16:26:54+00:00 https://www.datisjammie.nl/afbeeldingen/kaki-sharonfruit-sinaasappel-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/kaki-sharonfruit-sinaasappel-jam-recept-JAMMIE-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/kaki-sharonfruit-sinaasappel-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/pruimen-specerijenjam/ 2019-11-15T10:49:12+00:00 https://www.datisjammie.nl/afbeeldingen/pruimen-specerijen-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/pruimen-specerijen-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/pruimen-specerijen-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/tomaten-tarte-tatin-mozzarella-geitenkaas/ 2019-11-20T13:49:29+00:00 https://www.datisjammie.nl/afbeeldingen/tomaten-tarte-tatin-mozzarella-groot-JAMMIE.jpg https://www.datisjammie.nl/afbeeldingen/tomaten-tarte-tatin-mozzarella-medium-JAMMIE.jpg https://www.datisjammie.nl/afbeeldingen/tomaten-tarte-tatin-mozzarella-thumbnail-JAMMIE.jpg https://www.datisjammie.nl/nieuws/het-love-lemons-kookboek/ 2019-11-21T08:37:23+00:00 https://www.datisjammie.nl/afbeeldingen/Love-and-Lemons-Kookboek-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Love-and-Lemons-Kookboek-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/nieuws/i-love-groente/ 2019-11-21T08:38:06+00:00 https://www.datisjammie.nl/afbeeldingen/I-love-groente-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/I-love-groente-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/nieuws/dedikkevandam/ 2019-11-21T08:40:29+00:00 https://www.datisjammie.nl/afbeeldingen/Dedikkevandam-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Dedikkevandam-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/nieuws/fermenteren/ 2019-11-21T08:46:24+00:00 https://www.datisjammie.nl/afbeeldingen/Fermenteren-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Fermenteren-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/recepten/cheesecake-met-perenjam-en-hazelnootpasta/ 2019-11-21T20:10:38+00:00 https://www.datisjammie.nl/afbeeldingen/cheesecake-perenjam-hazelnootpasta-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/cheesecake-perenjam-hazelnootpasta-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/cheesecake-perenjam-hazelnootpasta-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/recepten/cranberry-sinaasappel-kaneel-jam/ 2019-12-07T15:27:03+00:00 https://www.datisjammie.nl/afbeeldingen/cranberry-sinaasappel-kaneel-jam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/cranberry-sinaasappel-kaneel-jam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/cranberry-sinaasappel-kaneel-jam-recept-JAMMIE-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/cranberry-sinaasappel-kaneel-jam-recept-JAMMIE-thumbnail-312x461.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/nieuws/minibijbel-inmaken/ 2020-01-08T13:36:05+00:00 https://www.datisjammie.nl/afbeeldingen/Minibijbel-inmaken-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Minibijbel-inmaken-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/nieuws/kookboek-de-groene-garde-rio-de-bio/ 2020-02-20T10:57:01+00:00 https://www.datisjammie.nl/afbeeldingen/rio-de-bio-utrecht-de-groene-garde-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/streekproducten/fermentatieworkshops-van-keukenboeren/ 2020-03-30T13:30:59+00:00 https://www.datisjammie.nl/afbeeldingen/Fermentatieworkshops-Keukenboeren-RotPot-interview-Sanne-Zwart-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Fermentatieworkshops-Keukenboeren-Sanne-Zwart-Jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/Fermentatieworkshops-Keukenboeren-RotPot-interview-Sanne-Zwart-Jammie-medium.jpg https://www.datisjammie.nl/recepten/pompoen-bloedsinaasappel-gember-jam/ 2020-04-19T15:07:23+00:00 https://www.datisjammie.nl/afbeeldingen/pompoen-sinaasappel-gemberjam-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/pompoen-sinaasappel-gemberjam-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/pompoen-sinaasappel-gemberjam-recept-JAMMIE-thumbnail-312x461.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/rabarbercompote/ 2020-06-04T18:52:40+00:00 https://www.datisjammie.nl/afbeeldingen/rabarber-compote-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/rabarber-compote-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/rabarber-compote-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/nieuws/wekelijkse-streekmarkt-hilversum/ 2020-06-22T19:34:43+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-streekmarkt-gijs-ns-hilversum-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/streekmarkt-gijs-ns-hilversum-nieuws-jammie-medium.jpg https://www.datisjammie.nl/nieuws/jammie-drie-jaar-en-nog-wat-feestje/ 2020-10-25T18:53:11+00:00 https://www.datisjammie.nl/afbeeldingen/Jammie-3-jaar-en-nog-wat-feestje-Nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Flyer-streekweken-2010.png https://www.datisjammie.nl/afbeeldingen/JAMMIE-JAM-streekweken-2010.png https://www.datisjammie.nl/afbeeldingen/JAMMIE-Streekweken-2010.png https://www.datisjammie.nl/afbeeldingen/Puha-1-jaar.png https://www.datisjammie.nl/afbeeldingen/JAMMIE-De-Springerdagen-2011.png https://www.datisjammie.nl/afbeeldingen/4de-druk-De-Groene-Garde-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/JAMMIEJAM-Mary-K-Hotel.png https://www.datisjammie.nl/afbeeldingen/paasontbijttafel-stylingtips-nieuws-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/JAMMIE-krijgt-een-nieuwe-website.png https://www.datisjammie.nl/afbeeldingen/Verhuiskaart-Janine-Tijmen.png https://www.datisjammie.nl/streekproducten/hoeksche-wodka/ 2020-11-15T14:59:20+00:00 https://www.datisjammie.nl/afbeeldingen/rabarber-wodka-recept-jammie-medium.jpg https://www.datisjammie.nl/nieuws/kookboek-degroenegarde/ 2020-11-15T15:01:15+00:00 https://www.datisjammie.nl/afbeeldingen/4de-druk-De-Groene-Garde-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/4de-druk-De-Groene-Garde-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/nieuws/low-budget-stylingtips-pasen2/ 2021-01-01T16:24:49+00:00 https://www.datisjammie.nl/afbeeldingen/paasontbijttafel-stylingtips-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/paasontbijttafel-stylingtips-nieuws-jammie-medium.jpg https://www.datisjammie.nl/nieuws/lekkerepost-deel1/ 2021-06-22T10:49:36+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-receptenkaarten-rabarber-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/jammie-receptenkaarten-asperges-nieuws-jammie-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/jammie-receptenkaarten-rabarber-nieuws-jammie-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/jammie-receptenkaarten-rabarber.png https://www.datisjammie.nl/streekproducten/potverdorie-jam-chutney/ 2021-10-11T10:09:04+00:00 https://www.datisjammie.nl/afbeeldingen/Potverdorie-frambozenjam-streekproducten-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Potverdorie-charlotte-heine-portret-streekproducten-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/Potverdorie-frambozen-streekproducten-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/Potverdorie-frambozenjam-streekproducten-jammie-medium.jpg https://www.datisjammie.nl/nieuws/dutch-rhubarb-week/ 2021-10-11T10:15:58+00:00 https://www.datisjammie.nl/afbeeldingen/foodevenement-amsterdam-rhubarb-week-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevenement-amsterdam-rhubarb-week-nieuws-Jammie-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/rabarberjam-aardbeien-jammie-recept-jamboek.png https://www.datisjammie.nl/recepten/rabarberwodka/ 2021-12-06T10:21:20+00:00 https://www.datisjammie.nl/afbeeldingen/rabarber-wodka-recept-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/rabarber-wodka-recept-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/rabarber-wodka-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/streekproducten/jammie-test-streekkrat-van-de-streekmolen/ 2021-12-06T10:22:36+00:00 https://www.datisjammie.nl/afbeeldingen/winactie-test-streekkrat-streekmolen-streekproducten-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/winactie-test-streekkrat-streekmolen-streekproducten-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/bieten-feta-soep-recept-jammie-medium.jpg https://www.datisjammie.nl/recepten/granola-met-abrikozen-en-vijgen/ 2021-12-06T10:27:12+00:00 https://www.datisjammie.nl/afbeeldingen/granola-abrikozen-vijgen-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/granola-abrikozen-vijgen-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/granola-abrikozen-vijgen-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/streekproducten/tomaat/ 2021-12-06T10:38:37+00:00 https://www.datisjammie.nl/afbeeldingen/tomaten-rood-tips-streekproducten-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/tomaten-mix-tips-streekproducten-jammie-medium.jpg https://www.datisjammie.nl/nieuws/even-je-vis-checken/ 2021-12-06T10:39:54+00:00 https://www.datisjammie.nl/afbeeldingen/thisfish-website-trace-vis-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/this-fish-how-it-works.png https://www.datisjammie.nl/nieuws/zin-in-jammie/ 2022-02-18T10:26:20+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-jam-springerdagen-2011-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/appel-kaneeljam-2011-jammie.png https://www.datisjammie.nl/afbeeldingen/appel-cider-steranijsgelei-2011-jammie.png https://www.datisjammie.nl/afbeeldingen/peren-vanillejam-2011-jammie.png https://www.datisjammie.nl/afbeeldingen/peren-rozemarijngelei-2011-jammie.png https://www.datisjammie.nl/afbeeldingen/pruimen-kardemomjam-2011-jammie.png https://www.datisjammie.nl/nieuws/good-family-food-event/ 2022-02-18T10:27:27+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-the-good-family-food-event-2014-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevent-the-good-family-food-event-2014-nieuws-Jammie-medium-liggend.jpg https://www.datisjammie.nl/nieuws/omslag-jamboek-klaar-boek-reserveren/ 2022-02-18T10:31:10+00:00 https://www.datisjammie.nl/afbeeldingen/Jam-gelei-confituur-kookboek-Janine-Bruinooge-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Jam-gelei-confituur-kookboek-Janine-Bruinooge-jammie-medium.jpg https://www.datisjammie.nl/nieuws/kookboek-de-groene-garde-hooi/ 2022-04-04T09:43:34+00:00 https://www.datisjammie.nl/afbeeldingen/hooi-utrecht-de-groene-garde-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/nieuws/geef-huisgemaakte-jam-voor-sinterklaas-of-kerst/ 2022-04-04T09:50:22+00:00 https://www.datisjammie.nl/afbeeldingen/Home-made-jam-cadeau-tips-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Home-made-jam-cadeau-tips-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/aardbeiensiroop-recept-JAMMIE-datisjammie.nl_.png https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/afbeeldingen/Labels-conserven-jam-inspiratie-DIY.jpg https://www.datisjammie.nl/streekproducten/prelude/ 2022-04-04T10:47:20+00:00 https://www.datisjammie.nl/afbeeldingen/prelude-voorkant-Brussel-recensie-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/Prelude-voorkant-Sint-Gilles-Brussel-recensie-JAMMIE.jpg https://www.datisjammie.nl/afbeeldingen/prelude-logo-raam-Sint-Gilles-Brussel-recensie-JAMMIE-gallery.jpg https://www.datisjammie.nl/afbeeldingen/prelude-menukaart-Sint-Gilles-Brussel-recensie-JAMMIE-gallery.jpg https://www.datisjammie.nl/afbeeldingen/prelude-soepmenu-Sint-Gilles-Brussel-recensie-JAMMIE-gallery.jpg https://www.datisjammie.nl/streekproducten/botanische-dranken-van-bloesembar/ 2022-06-06T15:31:00+00:00 https://www.datisjammie.nl/afbeeldingen/Bloesembar-Guldenroede-oogsten-Tiengemeten-Maidie-van-den-Bos-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Bloesembar-Guldenroede-oogsten-Tiengemeten-Maidie-van-den-Bos-Jammie-groot.jpg https://www.datisjammie.nl/recepten/hoe-ontpit-je-kersen/ 2022-06-29T14:29:07+00:00 https://www.datisjammie.nl/afbeeldingen/kersen-kersen-ontpitten-tips-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/kersen-kersen-ontpitten-tips-jammie-groot.jpg https://www.datisjammie.nl/nieuws/tomaten/ 2022-07-04T19:19:49+00:00 https://www.datisjammie.nl/afbeeldingen/Tomaten-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Tomaten-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/recepten/abrikozen-rozenjam/ 2022-09-16T08:19:29+00:00 https://www.datisjammie.nl/afbeeldingen/abrikozen-rozen-jam-recept-jammie.png https://www.datisjammie.nl/afbeeldingen/abrikozen-rozen-jam-recept-jammie-datisjammie.nl_.png https://www.datisjammie.nl/afbeeldingen/abrikozen-rozen-jam-jammie-e1531227390680.png https://www.datisjammie.nl/recepten/gele-tomatenketchup/ 2023-09-18T11:10:17+00:00 https://www.datisjammie.nl/afbeeldingen/gele-tomatenketchup-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/gele-tomatenketchup-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/gele-tomatenketchup-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/nieuws/elke-zondag-heerlijk-taart/ 2023-09-18T11:14:11+00:00 https://www.datisjammie.nl/afbeeldingen/Elke-zondag-heerlijk-taart-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Elke-zondag-heerlijk-taart-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/kweepeer-mandarijnenconfituur-taart-recept-jammie-medium-liggend.jpg https://www.datisjammie.nl/recepten/brownie-met-limburgse-hazelnootpasta/ 2023-10-31T12:41:58+00:00 https://www.datisjammie.nl/afbeeldingen/brownie-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/brownie-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/brownie-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/nieuws/vanhavertotgort/ 2023-11-01T09:22:15+00:00 https://www.datisjammie.nl/afbeeldingen/Van-haver-tot-gort-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Van-haver-tot-gort-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/Van-haver-tot-gort-boekrecensie-jammie-medium-liggend.jpg https://www.datisjammie.nl/recepten/wortelpeterseliesoep/ 2024-02-08T13:48:58+00:00 https://www.datisjammie.nl/afbeeldingen/wortelpeterseliesoep-winterposteleinpesto-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/wortelpeterseliesoep-winterposteleinpesto-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/wortelpeterseliesoep-winterposteleinpesto-recept-JAMMIE-thumbnail-312x461.jpg https://www.datisjammie.nl/recepten/bloedsinaasappelcurd/ 2024-02-08T13:50:26+00:00 https://www.datisjammie.nl/afbeeldingen/bloedsinaasappel-curd-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/bloedsinaasappel-curd-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/bloedsinaasappel-curd-recept-JAMMIE-thumbnail-312x461.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/zoetzure-venkel/ 2024-02-08T13:51:08+00:00 https://www.datisjammie.nl/afbeeldingen/zoet-zure-venkel-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/zoet-zure-venkel-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/zoet-zure-venkel-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/nieuws/tips-sinterklaascadeaus-kerstcadeaus-2019/ 2024-02-08T14:00:30+00:00 https://www.datisjammie.nl/afbeeldingen/jammie-cadeautips-boekfavorieten-sinterklaas-kerst-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/jammie-cadeautips-boekfavorieten-sinterklaas-kerst-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/jam-gelei-confituur-cadeautip-jammie.png https://www.datisjammie.nl/streekproducten/limburgse-hazelnootpasta/ 2024-02-08T14:13:08+00:00 https://www.datisjammie.nl/afbeeldingen/jan-frenken-hazelnoten-limburg-streekproducten-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/jan-frenken-hazelnootpasta-limburg-streekproducten-jammie-groot.jpg https://www.datisjammie.nl/nieuws/be-slow-food-evenement-brussel/ 2024-02-22T13:28:59+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-be-Slow-Food-Brussel-2014-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevent-be-Slow-Food-Brussel-2014-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/recepten/wentelteefjes/ 2024-03-11T10:58:24+00:00 https://www.datisjammie.nl/afbeeldingen/wentelteefjes-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/wentelteefjes-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/wentelteefjes-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/peren-vanilleconfituur/ 2024-03-25T11:13:40+00:00 https://www.datisjammie.nl/afbeeldingen/peren-vanille-confituur-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/peren-vanille-confituur-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/peren-vanille-confituur-recept-JAMMIE-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/peren-vanille-confituur-recept-JAMMIE-thumbnail-312x461.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/mandarijnen-vanille-confituur/ 2024-03-25T11:15:55+00:00 https://www.datisjammie.nl/afbeeldingen/mandarijnen-vanille-confituur-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/mandarijnen-vanille-confituur-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/mandarijnen-vanille-confituur-recept-JAMMIE-medium-close-up.jpg https://www.datisjammie.nl/afbeeldingen/mandarijnen-vanille-confituur-recept-JAMMIE-thumbnail-312x461.jpg https://www.datisjammie.nl/afbeeldingen/Koop-mijn-kookboek-Jam-Gelei-Confituur-janine-bruinooge-datisjammie-e1561550793402.png https://www.datisjammie.nl/recepten/10-originele-zoetrecepten-sinterklaas/ 2024-03-25T11:18:07+00:00 https://www.datisjammie.nl/afbeeldingen/appel-peer-caramel-lolly-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/appel-compote-kaneel-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/appel-peer-caramel-lolly-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/appelpunch-sinaasappel-specerijen-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/broodpudding-rozijnen-noten-recept-thumbnail-JAMMIE.jpg https://www.datisjammie.nl/afbeeldingen/brownie-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/cheesecake-perenjam-hazelnootpasta-recept-jammie-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/flensjes-boerenjongens-appelcompote-recept-Groene-Garde-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/kaki-sharonfruit-sinaasappel-jam-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/peren-vanille-confituur-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Perenjam-speculaaskruiden-recept-JAMMIE.png https://www.datisjammie.nl/afbeeldingen/Perenjam-speculaaskruiden-recept-JAMMIE-thumbnail.png https://www.datisjammie.nl/afbeeldingen/jam-gelei-confituur-cadeautip-jammie.png https://www.datisjammie.nl/nieuws/de-groene-garde/ 2024-09-09T08:11:32+00:00 https://www.datisjammie.nl/afbeeldingen/De-groene-garde-boekrecensie-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/De-groene-garde-boekrecensie-jammie-medium.jpg https://www.datisjammie.nl/nieuws/kaasdocumentaire-zoekt-vertoningsruimte/ 2024-09-24T11:19:50+00:00 https://www.datisjammie.nl/afbeeldingen/foodevent-vertoning-dansen-met-gehoornde-dames-nieuws-Jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/foodevent-vertoning-dansen-met-gehoornde-dames-nieuws-Jammie-medium.jpg https://www.datisjammie.nl/streekproducten/keurmerken/ 2024-09-24T11:32:25+00:00 https://www.datisjammie.nl/afbeeldingen/streekproducten-keurmerken-overzicht-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/streekproducten-keurmerken-overzicht-jammie-groot.jpg https://www.datisjammie.nl/recepten/appel-peer-kaneel-jam/ 2024-12-18T09:36:15+00:00 https://www.datisjammie.nl/afbeeldingen/appel-peer-kaneel-jam-recept-JAMMIE-groot-valeria_aksakova.jpg https://www.datisjammie.nl/afbeeldingen/appel-peer-kaneel-jam-recept-JAMMIE-medium-valeria_aksakova.jpg https://www.datisjammie.nl/afbeeldingen/kaneelstokjes-imaga-by-weinstock-pixabay.jpg https://www.datisjammie.nl/afbeeldingen/appel-peer-kaneel-jam-recept-JAMMIE-thumbnail-valeria_aksakova.jpg https://www.datisjammie.nl/nieuws/leafs/ 2024-12-18T09:40:28+00:00 https://www.datisjammie.nl/afbeeldingen/Leafs-boekrecensie-nieuws-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/Leafs-boekrecensie-nieuws-jammie-medium.jpg https://www.datisjammie.nl/streekproducten/walnoot/ 2024-12-18T09:42:37+00:00 https://www.datisjammie.nl/afbeeldingen/walnoten-kopen-plukken-eten-tips-streekproducten-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/walnoten-kopen-plukken-eten-tips-streekproducten-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/walnoten-pesto-recept-jammie-medium.jpg https://www.datisjammie.nl/recepten/hollandse-crepes-met-boerenjongens-en-appelcompote/ 2024-12-18T09:43:14+00:00 https://www.datisjammie.nl/afbeeldingen/flensjes-boerenjongens-appelcompote-recept-Groene-Garde-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/flensjes-boerenjongens-appelcompote-recept-Groene-Garde-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/flensjes-boerenjongens-appelcompote-recept-Groene-Garde-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/recepten/pesto-genovese/ 2024-12-18T09:43:37+00:00 https://www.datisjammie.nl/afbeeldingen/pesto-genovese-basilicumpesto-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/pesto-genovese-basilicumpesto-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/pesto-genovese-basilicumpesto-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/afbeeldingen/Leestip-datisjammie.png https://www.datisjammie.nl/recepten/appel-peren-toffeelollys/ 2024-12-18T09:45:25+00:00 https://www.datisjammie.nl/afbeeldingen/appel-peer-caramel-lolly-recept-JAMMIE-groot.jpg https://www.datisjammie.nl/afbeeldingen/appel-peer-caramel-lolly-recept-JAMMIE-medium-liggend.jpg https://www.datisjammie.nl/afbeeldingen/appel-peer-caramel-lolly-recept-JAMMIE-medium.jpg https://www.datisjammie.nl/afbeeldingen/appel-peer-caramel-lolly-recept-JAMMIE-thumbnail.jpg https://www.datisjammie.nl/streekproducten/asperges-kopen-koken-eten-telen/ 2024-12-18T09:46:25+00:00 https://www.datisjammie.nl/afbeeldingen/witte-asperges-tips-streekproducten-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/witte-asperges-tips-streekproducten-jammie-medium.jpg https://www.datisjammie.nl/afbeeldingen/jammie-receptenkaarten-asperges-nieuws-jammie-medium-liggend.jpg https://www.datisjammie.nl/streekproducten/kooptips/ 2025-04-07T09:36:03+00:00 https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-jammie-groot.jpg https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-jammie-update2014.png https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-supermarkt-jammie.png https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-markt-jammie.png https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-boer-jammie.png https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-supermarkt-jammie.png https://www.datisjammie.nl/afbeeldingen/streekproducten-kooptips-webshop-jammie.png