โค้ดล้างแคช purge cache Cloudflare without Plugin WordPress

โค้ดล้างแคช purge cache Cloudflare without Plugin WordPress

วิธีล้างแคช cloudflare ง่ายๆ กดใช้งานได้จากตรง admin menubar ด้านของ WordPress เพียงแค่เพิ่มโค้ดในไฟล์ function.php ของ theme ที่ใช้งานอยู่

อย่าลืมใส่ อีเมล์ + API(อยู่ในหน้า profile) + domain ที่ใช้งานกับ cloudflare เพื่อใช้งานง่าย ๆ ได้เลย

โดยไม่ต้องลง plugin พวก purge cache Cloudflare ใด ๆ ทั้งสิ้น

edit /wp-content/themes/namexyz/functions.php

functions.php
add_action('init', 'taxze_purge_cloudflare');
function taxze_purge_cloudflare(){
	if ( isset($_GET['taxzePurgeCloudflare']) ){
        // https://stackoverflow.com/questions/56075107/purging-cloudflare-cache-through-their-api-in-php
    	// Credentials for Cloudflare
    	$cust_email = ''; //user@domain.tld
    	$cust_xauth = ''; //global api, retrieved from the backend after loggin in
    	$cust_domain = ''; //domain.tld, the domain you want to control

		if($cust_email == "" || $cust_xauth == "" || $cust_domain == "") return;

		//Get the Zone-ID from Cloudflare since they don't provide that in the Backend
		$ch_query = curl_init();
		curl_setopt($ch_query, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones?name=".$cust_domain."&status=active&page=1&per_page=5&order=status&direction=desc&match=all");
		curl_setopt($ch_query, CURLOPT_RETURNTRANSFER, 1);
		$qheaders = array(
			'X-Auth-Email: '.$cust_email.'',
        	'X-Auth-Key: '.$cust_xauth.'',
        	'Content-Type: application/json'
    	);
    	curl_setopt($ch_query, CURLOPT_HTTPHEADER, $qheaders);
    	$qresult = json_decode(curl_exec($ch_query),true);
    	curl_close($ch_query);

    	$cust_zone = $qresult['result'][0]['id']; 

    	//Purge the entire cache via API
    	$ch_purge = curl_init();
    	curl_setopt($ch_purge, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones/".$cust_zone."/purge_cache");
    	curl_setopt($ch_purge, CURLOPT_CUSTOMREQUEST, "POST");
    	curl_setopt($ch_purge, CURLOPT_RETURNTRANSFER, 1);
    	$headers = [
        	'X-Auth-Email: '.$cust_email,
        	'X-Auth-Key: '.$cust_xauth,
        	'Content-Type: application/json'
    	];
    	$data = json_encode(array("purge_everything" => true));

    	/*
    	//กำหนด prefix ที่ต้องการ purge
    	$data = json_encode([
    	    "prefixes" => [
    	        "sub.taxze.com"
    	    ]
    	]);
    	*/

    	curl_setopt($ch_purge, CURLOPT_POSTFIELDS, $data);
    	curl_setopt($ch_purge, CURLOPT_HTTPHEADER, $headers);

    	$result = json_decode(curl_exec($ch_purge),true);
    	curl_close($ch_purge);

    	//Tell the user if it worked //txz: edit your localtime strtotime(...);
    	if($result['success']==1) echo "<center>Cloudflare Cache successfully purged! Changes should be visible right away.<br>If not try clearing your Browser Cache by pressing \"Ctrl+F5\"<br>".date("Y-m-d h:i:sa", strtotime("+7 hours"))."</center>";
    	else echo "<center>Error purging Cloudflare Cache. Please log into Cloudflare and purge manually!</center>";


		/* //txz: delete server diskcache
		$files = glob('../wp-content/cache/gov-cache/objects/*'); // get all file names
		foreach($files as $file){ // iterate files
		  if(is_file($file)) {
			unlink($file); // delete file
		  }
		}

		$files = glob('../wp-content/cache/gov-cache/fragments/*'); // get all file names
		foreach($files as $file){ // iterate files
		  if(is_file($file)) {
			unlink($file); // delete file
		  }
		}*/


	}
}

add_action('admin_bar_menu', 'add_toolbar_taxze_purge_cloudflare', 99);
function add_toolbar_taxze_purge_cloudflare($admin_bar){
    $admin_bar->add_menu( array(
        'id'    => 'taxze-purge-cloudflare',
        'title' => 'purge.Cloudflare',
        'href'  => '/wp-admin/admin.php?taxzePurgeCloudflare=1&'.rand(),
        'meta'  => array(
            'title' => __('purge cloudflare'),
			'target' => '_blank',
        ),
    ));
}

with cURL commandline vim purgecf.sh

response=$(curl -I -s 'https://www.taxze.com/wp-login.php') #Replace example.com with the desired URL

status_code=$(echo "$response" | head -n 1 | awk '{print $2}')
#echo $status_code

if [ $status_code -eq 200 ]; then
#echo "hello"

#edit your zoneid,email,globalapi and urldata
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/purge_cache" \
     -H "X-Auth-Email: eeeeeeeeeeeee@email.com" \
     -H "X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
     -H "Content-Type: application/json" \
     --data '{"files":["https://www.taxze.com"
                      ,"https://www.taxze.com/sitemap_index.xml"
                      ,"https://www.taxze.com/post-sitemap.xml"
                      ]}'
fi

with cURL commandline + textfile.txt

echo "https://www.taxze.com" >> urlc.txt

#edit your zoneid,email,globalapi and urldata
cat urlc.txt | xargs -I{} -n1 -P10 sh -c 'printf "\n--- %s \n" {};curl -X POST "https://api.cloudflare.com/client/v4/zones/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/purge_cache" -H "X-Auth-Email: eeeeeeeeeeeee@email.com" -H "X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -H "Content-Type: application/json" --data "{\"files\":[\"{}\"]}"'

#for preload
cat urlc.txt | xargs -I{} -n1 -P10 sh -c 'printf "\n--- %s \n" "{}"; curl -Is "{}" | grep -E "HTTP|-Status|-status"'

 February 12, 2023 / updated: October 30, 2025

 Blog | # # # #

qrcode
Facebook Facebook X / Twitter Twitter Telegram Telegram Pinterest Pinterest Email Email