cloudflare / cloudflare-wordpress Goto Github PK
View Code? Open in Web Editor NEWA Cloudflare plugin for WordPress
Home Page: https://www.cloudflare.com/wordpress/
License: BSD 3-Clause "New" or "Revised" License
A Cloudflare plugin for WordPress
Home Page: https://www.cloudflare.com/wordpress/
License: BSD 3-Clause "New" or "Revised" License
I read on your other post about the IWP but I don't have that installed, yet I'm still dealing with this issues I understand it could be a number of under plugins but I'm not really sure which is could be.
Help
we would like a way to purge custom urls based on the postID provided to Wordpress\Hooks->purgeCacheByRevelantURLSs
.
I wonder if you would accept a PR that basically filters the result of Hooks->getPostRelatedLinks($postId)
and give us a chance to add some more URLs to the list of URLs the plugin should purge.
Example:
return apply_filters('cf_get_post_related_links', $listofurls, $postId);
If i activate server push via wp-config.php:
define('CLOUDFLARE_HTTP2_SERVER_PUSH_ACTIVE', true);
This file will be pushed and downloaded when it shouldnt:
<!--[if lt IE 9]><script type='text/javascript' src='https://www.site.com/wp-content/themes/genesis/lib/js/html5shiv.min.js?ver=3.7.3'></script><![endif]-->
I guess that if I were a PHP programmer I would have realized how-to. Looking at your code I see you put some logging, are they saved into a file? Tried setting WP_DEBUG
on but couldn't see any log in debug.log
. Is it because WP_DEBUG doesn't care about Psr logging? Is it because wordpress level is not debug
but error
?
Hi!
As the support page for this plugin on Wordpress doesn't seem maintained, I turned here instead.
I'm seeing this in my error logs:
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/html/shop/wp-content/plugins/cloudflare/src/WordPress/Hooks.php on line 133"
Which isn't that pleasant as it seems to happen during checkout in my shop.
It's been 10 months since this plugin was updated, and I've seen many reports on the Wordpress support page which haven't been answered. Do you plan to solve this in the near future?
Thanks!
There's some Cloudflare documentation, and mentioned in API docs, regarding a 30 limit on URLs purged per request (for free accounts only?). How do you handle this in the plugin?
I've disabled all my plugins and still can't get this error, CSRF Token not found. It's possible another plugin is altering requests sent by the Cloudflare plugin, to resolve.
On version 4.9.4.
Here are what I have installed. Disabling each of these hasn't helped and the error persists:
Advanced Custom Fields
Tracking Code Manager
Bookify
Cloudflare
Faq Responsive
Intergeo - Google Maps Plugin - Lite
MailChimp for WordPress
Max Mega Menu
Ninja Forms
Tracking Code Manager
Not sure how the file is generated, I couldn't find any info, but I tested it with uglifyjs --compress --mangle
and it went from 2.89 MB to 1.06 MB which is a huge improvement.
The numbers are without gzip/br compression.
Hello,
Server push is working only for the primary domain. When I activate cdn.example.com for serving static resources, below code doesn't push. Instead, it still relies on the main domain.
define('CLOUDFLARE_HTTP2_SERVER_PUSH_ACTIVE', true);
Is there any way update host name at HTTP header?
Thanks & Regards,
Gulshan
It seems at this line, the value of $wpDomain is not an array, but a string.
Cloudflare-WordPress/src/WordPress/Hooks.php
Line 133 in 7285d0e
I keep on getting this error:
PHP Warning: count(): Parameter must be an array or an object that implements Countable
I began making my own plugin, but it looks like the official CF plugin is starting to pave ways for this...
https://github.com/mike503/cloudflare-full-page-caching/
Essentially setting up approriate triggers (WP action hooks) for the various types of activities. As can be used when page rules are enabled to cache the entire site (using CF like a distributed Varnish)
This is functional currently in my plugin for a couple things. But reusing your existing library and zone awareness would be much more beneficial. :) This is just a couple snippets to show how to compile a list of possible URLs to purge, and a list of the actions that should trigger one.
However, there is no "queue" mechanism so if two posts got published and triggered purges while the API is still not accepting another purge will fail silently, probably, instead of being a little more intelligent.
These are some of the actions I was able to find
// PER-PAGE EVENT PURGING
add_action('wp_scheduled_delete', '_cloudflare_full_page_caching_purge_urls');
add_action('transition_post_status', '_cloudflare_full_page_caching_purge_urls', 10, 3);
/* look at leveraging these - first param is the post ID on some of these
add_action('save_post', '_cloudflare_full_page_caching_purge_urls');
add_action('deleted_post', '_cloudflare_full_page_caching_purge_urls');
add_action('trashed_post', '_cloudflare_full_page_caching_purge_urls');
add_action('edit_post', '_cloudflare_full_page_caching_purge_urls');
add_action('delete_attachment', '_cloudflare_full_page_caching_purge_urls');
*/
This is the beginning of the function I was using, it seems to work properly.
function _cloudflare_full_page_caching_purge_urls($a, $b, $post) {
if (!$zone_id = _cloudflare_full_page_caching_zone_id()) {
// could add message
return FALSE;
}
// borrowed heavily from varnish-http-purge
$urls = array();
if ($categories = get_the_category($post->ID)) {
foreach ($categories as $cat) {
array_push($urls, get_category_link($cat->term_id));
}
}
if ($tags = get_the_tags($post->ID)) {
foreach ($tags as $tag) {
array_push($urls, get_tag_link( $tag->term_id));
}
}
array_push($urls,
get_author_posts_url(get_post_field('post_author', $post->ID)),
get_author_feed_link(get_post_field('post_author', $post->ID))
);
if (get_post_type_archive_link(get_post_type($post->ID)) == true) {
array_push($urls,
get_post_type_archive_link(get_post_type($post->ID)),
get_post_type_archive_feed_link(get_post_type($post->ID))
);
}
array_push($urls, get_permalink($post->ID));
array_push($urls,
get_bloginfo_rss('rdf_url') ,
get_bloginfo_rss('rss_url') ,
get_bloginfo_rss('rss2_url'),
get_bloginfo_rss('atom_url'),
get_bloginfo_rss('comments_rss2_url'),
get_post_comments_feed_link($post->ID)
);
array_push($urls, home_url('/'));
if (get_option('show_on_front') == 'page') {
array_push($urls, get_permalink(get_option('page_for_posts')));
}
$result = _cloudflare_full_page_caching_request('DELETE', 'zones/' . $zone_id . '/purge_cache', array('files' => $urls));
if (isset($result['success']) || intval($result['success']) == 1) {
return TRUE;
}
return FALSE;
}
Now, there is no automated way as far as I can tell, so adding Travis CI will make sure things work all the time.
So, I'm getting this on my dev VM
C:\Users\xmr\Desktop\Cloudflare-WordPress>composer --version
Composer version 1.2.2 2016-11-03 17:43:15
C:\Users\xmr\Desktop\Cloudflare-WordPress>php --version
PHP 7.0.13 (cli) (built: Nov 8 2016 13:45:28) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
C:\Users\xmr\Desktop\Cloudflare-WordPress>composer test
> php vendor/phpunit/phpunit/phpunit
PHPUnit 4.8.27 by Sebastian Bergmann and contributors.
..................E........................
Time: 578 ms, Memory: 6.00MB
There was 1 error:
1) CF\Test\WordPress\HooksTest::testActivateChecksWPVersionAndCurl
Use of undefined constant CLOUDFLARE_MIN_WP_VERSION - assumed 'CLOUDFLARE_MIN_WP_VERSION'
C:\Users\xmr\Desktop\Cloudflare-WordPress\src\WordPress\Hooks.php:106
C:\Users\xmr\Desktop\Cloudflare-WordPress\src\Test\WordPress\HooksTest.php:87
FAILURES!
Tests: 43, Assertions: 115, Errors: 1.
Script php vendor/phpunit/phpunit/phpunit handling the test event returned with error code 2
We would like a way to run purge actions e.g. purgeCacheEverything
and purgeCacheByRevelantURLs
when every a specific third party action is executed.
Our use case is that we have third party plugins that modify the post state and therefore make it nessesary to clear certain URLs in cloudflare.
Hi, guys.
So, it seems v3.0.0 is severely broken for all my sites.
TypeError
12:20:07.350 "Download the React DevTools for a better development experience: https://fb.me/react-devtools"compiled.js:61853:9
12:20:07.388 %c action @ 12:20:07.388 CONFIG_FETCH color: #000000;compiled.js:75323
12:20:07.389 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:07.394 action Object { type: "CONFIG_FETCH" }compiled.js:75341:28
12:20:07.396 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:08.116 %c action @ 12:20:08.115 CONFIG_FETCH_SUCCESS color: #000000;compiled.js:75323
12:20:08.117 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:08.118 action Object { type: "CONFIG_FETCH_SUCCESS", config: Object }compiled.js:75341:28
12:20:08.119 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:08.122 %c action @ 12:20:08.121 CONFIG_UPDATE_BY_KEY color: #000000;compiled.js:75323
12:20:08.123 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:08.125 action Object { type: "CONFIG_UPDATE_BY_KEY", key: "absoluteUrlBase", value: "https://domain.tld/wp-content/plugins/c…" }compiled.js:75341:28
12:20:08.125 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:08.128 %c action @ 12:20:08.127 INTL_FETCH_TRANSLATIONS color: #000000;compiled.js:75323
12:20:08.129 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:08.131 action Object { type: "INTL_FETCH_TRANSLATIONS" }compiled.js:75341:28
12:20:08.131 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:08.970 %c action @ 12:20:08.969 INTL_FETCH_TRANSLATIONS_SUCCESS color: #000000;compiled.js:75323
12:20:08.971 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:08.975 action Object { type: "INTL_FETCH_TRANSLATIONS_SUCCESS", locale: "en", translations: Object }compiled.js:75341:28
12:20:08.977 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:09.046 %c action @ 12:20:08.980 APPLICATION_INIT color: #000000;compiled.js:75323
12:20:09.048 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:09.050 action Object { type: "APPLICATION_INIT" }compiled.js:75341:28
12:20:09.051 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:42.273 %c action @ 12:20:42.272 USER_LOGIN color: #000000;compiled.js:75323
12:20:42.274 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:42.278 action Object { type: "USER_LOGIN" }compiled.js:75341:28
12:20:42.280 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:44.204 %c action @ 12:20:44.172 USER_LOGIN_SUCCESS color: #000000;compiled.js:75323
12:20:44.207 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:44.208 action Object { type: "USER_LOGIN_SUCCESS", email: "[email protected]" }compiled.js:75341:28
12:20:44.209 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:44.226 %c action @ 12:20:44.211 ZONES_FETCH color: #000000;compiled.js:75323
12:20:44.227 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:44.229 action Object { type: "ZONES_FETCH" }compiled.js:75341:28
12:20:44.230 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:44.255 %c action @ 12:20:44.235 @@router/TRANSITION color: #000000;compiled.js:75323
12:20:44.255 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:44.258 action Object { type: "@@router/TRANSITION", payload: Object }compiled.js:75341:28
12:20:44.259 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:44.261 %c action @ 12:20:44.238 @@router/UPDATE_LOCATION color: #000000;compiled.js:75323
12:20:44.261 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
12:20:44.263 action Object { type: "@@router/UPDATE_LOCATION", payload: Object }compiled.js:75341:28
12:20:44.264 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
12:20:44.876 Blocked loading mixed active content “http://domain.tld/”[Learn More]options-general.php
12:20:44.888 TypeError: response is undefined
[Learn More]compiled.js:84318:5
I'm using Firefox 49 64-bit on Windows 10. WordPress 4.6.1 with PHP 7.0.10. I haven't tried another browser but it happens for all my sites.
Note that in version 1.3.x of the plugin I had development mode and HTTPS protocol rewriting set to off.
Since those files aren't really JavaScript files, but JSON files, it would be much clearer if they used the right file extension.
see my stackoverflow question
Console log
18:36:42.365 JQMIGRATE: Migrate is installed, version 1.4.1load-scripts.php:9:542
18:36:42.690 "Download the React DevTools for a better development experience: https://fb.me/react-devtools"compiled.js:61853:9
18:36:42.737 %c action @ 18:36:42.737 CONFIG_FETCH color: #000000;compiled.js:75323
18:36:42.738 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.741 action Object { type: "CONFIG_FETCH" }compiled.js:75341:28
18:36:42.743 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.909 %c action @ 18:36:42.908 CONFIG_FETCH_SUCCESS color: #000000;compiled.js:75323
18:36:42.909 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.911 action Object { type: "CONFIG_FETCH_SUCCESS", config: Object }compiled.js:75341:28
18:36:42.912 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.916 %c action @ 18:36:42.915 CONFIG_UPDATE_BY_KEY color: #000000;compiled.js:75323
18:36:42.916 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.918 action Object { type: "CONFIG_UPDATE_BY_KEY", key: "absoluteUrlBase", value: "https://foo.bar/wp-content/plugins/c…" }compiled.js:75341:28
18:36:42.918 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.921 %c action @ 18:36:42.920 INTL_FETCH_TRANSLATIONS color: #000000;compiled.js:75323
18:36:42.921 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.923 action Object { type: "INTL_FETCH_TRANSLATIONS" }compiled.js:75341:28
18:36:42.923 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.930 %c action @ 18:36:42.929 USER_LOGIN_SUCCESS color: #000000;compiled.js:75323
18:36:42.930 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.932 action Object { type: "USER_LOGIN_SUCCESS", email: "[email protected]" }compiled.js:75341:28
18:36:42.932 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.935 %c action @ 18:36:42.934 ZONES_FETCH color: #000000;compiled.js:75323
18:36:42.935 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.936 action Object { type: "ZONES_FETCH" }compiled.js:75341:28
18:36:42.937 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.946 %c action @ 18:36:42.941 @@router/TRANSITION color: #000000;compiled.js:75323
18:36:42.946 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.947 action Object { type: "@@router/TRANSITION", payload: Object }compiled.js:75341:28
18:36:42.948 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.949 %c action @ 18:36:42.944 @@router/UPDATE_LOCATION color: #000000;compiled.js:75323
18:36:42.950 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:42.951 action Object { type: "@@router/UPDATE_LOCATION", payload: Object }compiled.js:75341:28
18:36:42.952 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:42.998 %c action @ 18:36:42.997 INTL_FETCH_TRANSLATIONS_SUCCESS color: #000000;compiled.js:75323
18:36:42.998 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:43.000 action Object { type: "INTL_FETCH_TRANSLATIONS_SUCCESS", locale: "en", translations: Object }compiled.js:75341:28
18:36:43.001 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:43.050 %c action @ 18:36:43.003 APPLICATION_INIT color: #000000;compiled.js:75323
18:36:43.051 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:43.052 action Object { type: "APPLICATION_INIT" }compiled.js:75341:28
18:36:43.053 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:45.990 %c action @ 18:36:45.951 ZONES_FETCH_SUCCESS color: #000000;compiled.js:75323
18:36:45.991 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:45.995 action Object { type: "ZONES_FETCH_SUCCESS", zoneList: Array[1] }compiled.js:75341:28
18:36:45.997 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:46.020 %c action @ 18:36:45.999 ZONE_SET_ACTIVE_ZONE color: #000000;compiled.js:75323
18:36:46.021 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:46.023 action Object { type: "ZONE_SET_ACTIVE_ZONE", zone: Object }compiled.js:75341:28
18:36:46.024 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:46.042 %c action @ 18:36:46.026 DNS_RECORD_FETCH_LIST color: #000000;compiled.js:75323
18:36:46.043 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:46.045 action Object { type: "DNS_RECORD_FETCH_LIST" }compiled.js:75341:28
18:36:46.045 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:46.064 %c action @ 18:36:46.052 ZONES_RAILGUNS_FETCH_ALL color: #000000;compiled.js:75323
18:36:46.065 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:46.067 action Object { type: "ZONES_RAILGUNS_FETCH_ALL" }compiled.js:75341:28
18:36:46.068 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:46.082 %c action @ 18:36:46.072 PLUGIN_SETTINGS_FETCH color: #000000;compiled.js:75323
18:36:46.082 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:46.084 action Object { type: "PLUGIN_SETTINGS_FETCH" }compiled.js:75341:28
18:36:46.085 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:46.098 %c action @ 18:36:46.089 ZONE_FETCH_SETTINGS color: #000000;compiled.js:75323
18:36:46.099 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:46.100 action Object { type: "ZONE_FETCH_SETTINGS" }compiled.js:75341:28
18:36:46.101 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:46.113 %c action @ 18:36:46.105 ZONE_FETCH_ANALYTICS color: #000000;compiled.js:75323
18:36:46.113 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:46.115 action Object { type: "ZONE_FETCH_ANALYTICS" }compiled.js:75341:28
18:36:46.115 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:49.143 %c action @ 18:36:49.121 PLUGIN_SETTINGS_FETCH_SUCCESS color: #000000;compiled.js:75323
18:36:49.144 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:49.148 action Object { type: "PLUGIN_SETTINGS_FETCH_SUCCESS", zoneId: "315589789f01e4c906340ae9855e57eb", setting: Array[5] }compiled.js:75341:28
18:36:49.149 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:49.993 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "id" values. Using the earlier value. 257b0b40a9f27cb20248a7bc4c7b64d7 f6095033ebef851c74a97263d71cc100compiled.js:27324:5
18:36:49.994 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "type" values. Using the earlier value. A MXcompiled.js:27324:5
18:36:49.994 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "content" values. Using the earlier value. 158.106.130.219 foo.barcompiled.js:27324:5
18:36:49.995 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "proxiable" values. Using the earlier value. true falsecompiled.js:27324:5
18:36:49.995 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "proxied" values. Using the earlier value. true falsecompiled.js:27324:5
18:36:49.996 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "modified_on" values. Using the earlier value. 2016-04-18T12:19:18.136683Z 2015-07-29T11:33:10.290034Zcompiled.js:27324:5
18:36:49.996 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "created_on" values. Using the earlier value. 2016-04-18T12:19:18.136683Z 2015-07-29T11:33:10.290034Zcompiled.js:27324:5
18:36:49.997 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "meta" values. Using the earlier value. Object { auto_added: false } Object { auto_added: true }compiled.js:27324:5
18:36:49.998 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "id" values. Using the earlier value. 257b0b40a9f27cb20248a7bc4c7b64d7 1a6fde7f4a61b42a8d4f126fa4435d07compiled.js:27324:5
18:36:49.998 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "type" values. Using the earlier value. A TXTcompiled.js:27324:5
18:36:49.999 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "content" values. Using the earlier value. 158.106.130.219 v=spf1 a mx include:foo.bar ~allcompiled.js:27324:5
18:36:49.999 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "proxiable" values. Using the earlier value. true falsecompiled.js:27324:5
18:36:49.999 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "proxied" values. Using the earlier value. true falsecompiled.js:27324:5
18:36:50.000 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "modified_on" values. Using the earlier value. 2016-04-18T12:19:18.136683Z 2016-04-18T18:06:35.165818Zcompiled.js:27324:5
18:36:50.000 When merging two 315589789f01e4c906340ae9855e57eb, found unequal data in their "created_on" values. Using the earlier value. 2016-04-18T12:19:18.136683Z 2016-04-18T18:06:35.165818Zcompiled.js:27324:5
18:36:50.021 %c action @ 18:36:49.991 DNS_RECORD_FETCH_LIST_SUCCESS color: #000000;compiled.js:75323
18:36:50.021 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:50.023 action Object { type: "DNS_RECORD_FETCH_LIST_SUCCESS", zoneId: "315589789f01e4c906340ae9855e57eb", dnsRecords: Array[17] }compiled.js:75341:28
18:36:50.024 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:50.154 %c action @ 18:36:50.141 ZONES_RAILGUNS_FETCH_ALL_SUCCESS color: #000000;compiled.js:75323
18:36:50.154 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:50.156 action Object { type: "ZONES_RAILGUNS_FETCH_ALL_SUCCESS", zoneId: "315589789f01e4c906340ae9855e57eb", zoneRailguns: Array[0] }compiled.js:75341:28
18:36:50.156 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:50.247 Only a single Gateway can be rendered at a time into a GatewayDest.You rendered multiple into "modal"compiled.js:47197:7
18:36:50.254 %c action @ 18:36:50.215 ZONE_FETCH_SETTINGS_SUCCESS color: #000000;compiled.js:75323
18:36:50.255 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:50.257 action Object { type: "ZONE_FETCH_SETTINGS_SUCCESS", zoneId: "315589789f01e4c906340ae9855e57eb", zoneSettings: Array[38] }compiled.js:75341:28
18:36:50.258 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
18:36:50.297 %c action @ 18:36:50.274 ZONE_FETCH_ANALYTICS_SUCCESS color: #000000;compiled.js:75323
18:36:50.298 prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75337:31
18:36:50.300 action Object { type: "ZONE_FETCH_ANALYTICS_SUCCESS", zoneId: "315589789f01e4c906340ae9855e57eb", zoneAnalytics: Object }compiled.js:75341:28
18:36:50.300 next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… }compiled.js:75349:31
So as you can see, it takes 8 seconds to actually see the options for me.
If this cannot be sped up, maybe a loader should be used until everything is loaded. But I wonder, can't you load the tabs async and on demand? Say, load the main tab items then preload the next tab or load it when the user clicks on it.
I ran a PHP Compatibility test and got the following results
16 | WARNING | Extension 'mcrypt' is deprecated since PHP 7.1 - use openssl (preferred) or pecl/mcrypt once available instead.
16 | WARNING | Function mcrypt_create_iv() is deprecated since PHP 7.1; use OpenSSL instead
--------------------------------------------------------------------------------------------------------------------------------------------`
I found this to be a long standing issue that hasn't gotten a lot of attention:
https://wordpress.org/support/topic/extension-mcrypt-is-deprecated-since-php-7-1/
Is this in the roadmap to be resolved? I noticed it's been 11 months since an update was pushed through.. What is the status of this plugin?
Thanks for your time,
Derek
Currently if the domain name doesn't contain ASCII character sets, the plugin will not work.
We've made a fix for this in CPanel Plugin. A similar fix should be satisfactory.
Issue escalated by this post:
https://wordpress.org/support/topic/cyrillic-domain-names-are-not-supported/#post-9325656
I have to say that you guys are lately ranking near the top of my list of poor communicators.
I know that the majority of WordPress installs out there on the interwebs are on cheap, shared hosting and managed by bloggers who don't know what PHP is, much less which version they are running. And a hide-the-details, "don't worry - it just works" attitude might be best for them.
But there are more than a few of us out here who are running WordPress behind CloudFlare that have carefully tuned, non-standard WP stacks to maximize performance and reliability for whom pressing a button in a plugin whose only documentation is "The easiest way to setup CloudFlare for your WordPress site" is an absolute non-starter.
Is it really too much to ask that you guys document what actually happens when someone presses that button? Do I really have to read through the source code of the plugin in order to have any idea at all what it does?
I know that CloudFlare has someone on staff that is capable of producing good documentation. Can you borrow them from the API team for a couple days to let us know what the plugin is doing?
Can the plugin set a Cache-Control: no-cache
(or similar) header on all frontend pages for logged in users? Does the "Cache Everything" option in Cloudflare Page Rules ignores it?
There are some elements in WP that are shown only to logged in users or contain user info (Edit buttons, Comment forms, etc). Some popular Analytics plugins disable the tracking code for logged in users.
If this works, the plugin can also keep the admin bar visible, as requested in #112
The "return true" in here stops the plugin from actually working properly - it won't display the CloudFlare settings menu or anything. The minute I uncomment the "return" line out, things function properly. Not sure why it's even in there.
$is_cf = $ipRewrite->isCloudFlare();
if ($is_cf) {
// Fixes Flexible SSL
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
return true;
}
}
I'm already logged in in backend yet after v3.1.0 installation, when I go to the frontend, the admin bar is not shown.
I went back to 3.0.6 et voila, it's back again.
Hi,
The context: Nginx + php7fpm + Cloudflare free plan
I enabled the Http2 Push Server feature:
For logged or not logged user, the front works correctly, the javascript and css files are well pushed.
When I access the administration pages error 502, I get a 502 error. In the nginx logs, I have "Can not Push Server (header size over 3072 Bytes)"
I tried to change the "fastcgi_buffer_size" and "fastcgi_buffer", and I modified the code of the cloudflare plugin to increase the limit "headersize":
if ($headerSize > 3072) { error_log('Cannot Server Push (header size over 3072 Bytes).'); return $src; }
to
if ($headerSize > 7168) { { error_log('Cannot Server Push (header size over 7168 Bytes).'); return $src; }
=> without success, header size were always too big (I do not understand why the headers are so big).
I looked for different solution by playing on the buffer, without success..
If I go back to my problem, the only pages that pose a problem are the administration pages, administration pages with push server enabled. I do not need to push server on these administration pages (and in general, I do not see any need).
If I disabled push server for administration pages:
public static function initHooks()
{
// Change: disable the push server if it is an admin page
if (is_admin()) {
return;
};
self::$initiated = true;
add_action('wp_head', array('\CF\WordPress\HTTP2ServerPush', 'http2ResourceHints'), 99, 1);
add_filter('script_loader_src', array('\CF\WordPress\HTTP2ServerPush', 'http2LinkPreloadHeader'), 99, 1);
add_filter('style_loader_src', array('\CF\WordPress\HTTP2ServerPush', 'http2LinkPreloadHeader'), 99, 1);
}
=> Everything is working fine, frontend is pushed, admin page without error and not pushed
Maybe there is a better solution? or can this solution be integrated without risk?
I've now seen this on several sites (across multiple CF accounts). After updating from V1 to V3 I go to the settings screen and it displays the Active Zone, the 3 blue nav buttons, but none of the control modules.
https://cloudup.com/ceTUmHLvOFT
This is from my personal blog. WP Engine hosted, PHP 5.6.32, Mac Chrome Version 50.0.2661.75.
It's worth noting I have seen the control on some sites, although when I do see the control them they don't work (CSRF Error per issue #82). Hence, I don't think it's a browser issue. Further I've cleared site cache / tried in incognito and with FireFox on the sites they don't show, they don't show in all those test cases.
I have added a site icon through the customizer and it's still http
Everything else is working fine as https but the site icons are http so I am getting mixed content warnings.
For example is PHP 5.4 supported? If not, that's OK but it should be documented.
Otherwise, personally, I'd like to remove short tags and <?=
. I can make a PR if needed.
This plugin is usually awesome and works well for purging the CF cache when a post is updated. However it doesn't do it if you change the visibility of an existing page from public to private-- the cached public version stays around.
(I imagine this bug is because it thinks "oh, I don't need to purge the cache for this private post" without taking into consideration that it used to be public a moment ago)
It's confusing to call have a section called "Image Optimization" under Speed. This is different nomenclature than used in the CloudFlare Dashboard which used Polish and Mirage. Is this feature on of those, or both at the same time?
v3.0.3 (and prior versions)
There are two kinds of WordPress multisite installs, domain mapped installs and sub-directory mapped installs.
While I understand that supporting domain mapped installs (either sub-domains or primary domains) is challenging, effort should be made to do that IMHO.
Until then. Supporting sub-directory mapped installs should be fairly easy and ought to both be properly supported by the plugin (ie. network aware activation) and outlined in the install instructions somewhere.
When I install this plugin, in config appears a blank screen for me.
Any tips ?
when i press "Apply Default Settings" on the plugin
it's stuck..
i try to enable "Automatic Cache Management"
when i do refresh it's return back to off
also i see on the console
"http://www.sites.com/wp-admin/admin-ajax.php?action=cloudflare_proxy Failed to load resource: the server responded with a status of 404 (Not Found)"
Hi we've noticed that this:
Is not released yet.
When do you think this will land in the the wordpress plugin repository?
Thanks,
Alex
The WP plugin reports Email address or API key invalid, for multiple sites and accounts and servers (to rule out all variables) - did something change with the API now that dash.cloudflare.com is in place?
I enabled debugging and see this.
[12-Jun-2018 17:38:18 UTC] [Cloudflare] ERROR: [CLIENT API] Array
(
[type] => request
[path] => https://api.cloudflare.com/client/v4/user/
[timeout] => 30
[method] => GET
[headers] => Array
(
[X-Auth-Key] => GLOBAL API KEY
[X-Auth-Email] => VALID EMAIL
[Content-Type] => application/json
)
)
[12-Jun-2018 17:38:18 UTC] [Cloudflare] ERROR: [CLIENT API] Array
(
[type] => response
[reason] => Forbidden
[code] => 403
)
[12-Jun-2018 17:38:18 UTC] [Cloudflare] ERROR: Forbidden
[12-Jun-2018 17:38:18 UTC] [Cloudflare] ERROR: Email address or API key invalid.
Plugin does not work when using Flexible SSL and Restoring Original Visitor IPs with Nginx (https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx-).
It cannot detect Cloudflare Requests properly anymore, since Nginx already restored the original IP and isCloudFlare()
in IpRewrite.php
returns false then.
Any ideas how to fix this?
FILE: cloudflare/vendor/webmozart/assert/src/Assert.php
-------------------------------------------------------------------------------------------------------------------------------------
FOUND 10 ERRORS AFFECTING 10 LINES
-------------------------------------------------------------------------------------------------------------------------------------
146 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'string' (since version 7.0)
158 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
182 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'float' (since version 7.0)
192 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'numeric' (since version 7.0)
222 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'object' (since version 7.0)
232 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'resource' (since version 7.0)
322 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'null' (since version 7.0)
341 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'true' (since version 7.0)
351 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'false' (since version 7.0)
656 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/sebastian/global-state/src/Snapshot.php
-------------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------
383 | WARNING | INI directive 'register_long_arrays' is deprecated from PHP 5.3 and forbidden from PHP 5.4.
-------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php
-------------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------------------------------------
91 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-------------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php
---------------------------------------------------------------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
---------------------------------------------------------------------------------------------------------------------------
60 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
172 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
197 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
---------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php
------------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------------
43 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
------------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php
-------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------------------------------
48 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php
----------------------------------------------------------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
----------------------------------------------------------------------------------------------------------------------------------
38 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
49 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
----------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php
-------------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------------------------------------
43 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-------------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php
------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------
47 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php
----------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------------------------------------------------------------------
53 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
----------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php
-----------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-----------------------------------------------------------------------------------------------------------------------------------
47 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-----------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php
-------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------------------------------
56 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php
--------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------------------------------------------------------------
43 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
--------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php
----------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------------------------------------------------------------------
43 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
----------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php
---------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
---------------------------------------------------------------------------------------------------------------------------------
53 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
---------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php
------------------------------------------------------------------------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
------------------------------------------------------------------------------------------------------------------------------------
39 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
40 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
88 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php
------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------
54 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php
------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------
67 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php
-----------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-----------------------------------------------------------------------------------------------------------------------------------
46 | ERROR | 'string' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-----------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php
---------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
---------------------------------------------------------------------------------------------------------------------------------
20 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'Mixed' (since version 7.0)
---------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/type-resolver/src/Types/Resource.php
------------------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------
20 | ERROR | Function name, class name, namespace name or constant name can not be reserved keyword 'Resource' (since version 7.0)
------------------------------------------------------------------------------------------------------------------------------------
FILE: cloudflare/vendor/phpdocumentor/type-resolver/src/Types/Array_.php
-------------------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------------------
47 | ERROR | 'mixed' is a reserved keyword introduced in PHP version 7.0 and cannot be invoked as a function (T_STRING)
-------------------------------------------------------------------------------------------------------------------------
Per issue 60 it was stated that the Active Zone "dropdown" should only show one site and this was intended behavior. This is extremely confusing UI.
I have 10+ domains in the CF account I'm connected to. I'd expect to either:
A) see them all w/ the active one highlighted
B) not see a drop down arrow suggesting I should see something more here...
I also don't see any way to change it, which is going to be a problem when someone migrates their site to a new domain.
Hi there,
Firstly, thanks for providing so a great plugin to the WP community!
Secondly, I'd like to suggest that CloudFlare provides a simple (or as simple as possible) text explaining my obligations to my visitors, as they might be affected through my use of Cloudflare, rather than Cloudflare’s obligations to me (as outlined here).
Others have shown an interest in this as well and there's a thread in the WordPress support forum about the issue: https://wordpress.org/support/topic/gdpr-99/#post-10667752 – there is also a conversation about it on CloudFlare's community page: https://community.cloudflare.com/t/gdpr-and-cloudflare/18736.
I'd suggest to add such a text directly to the plugin so that it automatically appears in the Privacy Policy generator/guide found at ../wp-admin/tools.php?wp-privacy-policy-guide=1
Hope to see this improvement and many thanks!
C:\Users\xmr\Desktop\Cloudflare-WordPress>git submodule init
fatal: No url found for submodule path 'vendor/simplyadmire/composer-plugins' in .gitmodules
It seems .gitmodules is missing in 46b721f
Is that even needed? Tests seem to pass.
/CC @jwineman @thellimist
After upgrading to PHP 7.2, I'm seeing this repeatedly in my debug.log:
PHP Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/wordpress/plugins/cloudflare/src/WordPress/Hooks.php on line 133
Using v3.0.5, choosing Purge Everything throws the following TypeError:
18:39:12.961 TypeError: response is undefined[Learn More]compiled.js:84313:5
v4ResponseOkhttps://foo.bar/wp-content/plugins/cloudflare/compiled.js:84313:5[540]</asyncZonePurgeCacheEverything/</<https://foo.bar/wp-content/plugins/cloudflare/compiled.js:77225:18[150]</request/<https://foo.bar/wp-content/plugins/cloudflare/compiled.js:7020:7[157]</Request.prototype.callbackhttps://foo.bar/wp-content/plugins/cloudflare/compiled.js:8411:3[157]</Request/<https://foo.bar/wp-content/plugins/cloudflare/compiled.js:8134:5[161]</Emitter.prototype.emithttps://foo.bar/wp-content/plugins/cloudflare/compiled.js:9036:7[157]</Request.prototype.end/xhr.onreadystatechangehttps://foo.bar/wp-content/plugins/cloudflare/compiled.js:8493:5
Any attempt to change settings in the new interface fails with a "CSRF Token not valid" error shown across the bottom of the window. I tried Purge, Full Cache Management, WAF and Image Optimization none of it works.
Site was connected fine with CF plugin v 1.3.35, upgraded directly to v3.0.3, I've since reverted.
FYI, the new interface reports the active zone correctly, but I don't see anywhere to reset/reconnect the API key and set the account.
Hi,
we have a lot of WP websites behind CF and running on Google AppEngine. GAE uses his own library (URLFetch) to make external HTTP calls and hasn't cURL available by default.
We have also few corporate WP installation that doesn't have direct access to internet and they must send requests through a proxy.
The AppEngine Plugin and the define('WP_PROXY_HOST', '0.0.0.0');
config rules allows WP to manage these situations, but because this plugin use Guzzle instead of the WP_HTTP class, it will not work out of the box in this environments and requires manual patches.
Could this plugin be updated to use the WP_HTTP Class to better follow the WP guidelines?
Thanks for the great work.
FILE: /site_path/wp-content/plugins/cloudflare/vendor/symfony/yaml/Inline.php
--------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
--------------------------------------------------------------------------------------------------------
55 | WARNING | INI directive 'mbstring.func_overload' is deprecated since PHP 7.2
--------------------------------------------------------------------------------------------------------
FILE: /site_path/wp-content/plugins/cloudflare/vendor/symfony/yaml/Parser.php
--------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
--------------------------------------------------------------------------------------------------------
76 | WARNING | INI directive 'mbstring.func_overload' is deprecated since PHP 7.2
--------------------------------------------------------------------------------------------------------
FILE: /site_path/wp-content/plugins/cloudflare/vendor/cloudflare/cloudflare-plugin-backend/src/SecurityUtil.php
------------------------------------------------------------------------------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------------------------
16 | ERROR | Extension 'mcrypt' is deprecated since PHP 7.1 and removed since PHP 7.2; Use openssl (preferred) or pecl/mcrypt once available instead
16 | ERROR | Function mcrypt_create_iv() is deprecated since PHP 7.1 and removed since PHP 7.2; Use random_bytes() or OpenSSL instead
------------------------------------------------------------------------------------------------------------------------------------------------------
Related:
#228
https://wordpress.org/support/topic/cloudflare-php-7-2-compatibility-test/
https://wordpress.org/support/topic/extension-mcrypt-is-deprecated-since-php-7-1/
Cloudflare 3.3.2
PHP Compatibility Checker 1.4.7
Related to #94 - this was in my code (and one of the main reasons I still keep my plugin running at the moment, I think your team has implemented most of what I had in mine) but it's very useful to have in the admin bar.
There was a comment that "we don't want to do this, you can do it if you want" - I was looking into leveraging the more robust/reliable caching purging you have in the official plugin, but it looks a little too purpose-built to simply reference inside of my own plugin. It is a lot more advanced than being able to hit a URL or even a simple JavaScript call.
Is there any way (or idea) to "deep link" directly to the purge full site option? Bonus points if it could draw up the bottom bar (on success or error) - but at the moment it looks pretty in-depth and not the simple solution I had hoped to implement.
Currently I am sending a "blind" request to:
DELETE https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache with the JSON params purge_everything = TRUE and the X-Auth-Key and X-Auth-Email headers. I attempt to catch an error response but it doesn't seem to be reliable.
It seems to purge as desired... but not always, and I was thinking that piggybacking on your method would be the more official and reliable way. However I'm finding it difficult to do that. Ideas?
Using WordPresss 4.7.2, after uninstalling 3.1.1, uploading 3.2.0, entering my credentials, I get please select a domain to provision and nothing happens.
Going back to 3.1.1 works normal.
I don't have any fancy page rules for that domain, just Full SSL (Strict), Auto Minify and Disable performance in https://foo.bar/wp-admin/*
.
Console log:
JQMIGRATE: Migrate is installed, version 1.4.1 load-scripts.php:9:542
%c action @ 10:00:59.934 CONFIG_FETCH color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "CONFIG_FETCH" } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.133 CONFIG_FETCH_SUCCESS color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "CONFIG_FETCH_SUCCESS", config: Object } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.139 CONFIG_UPDATE_BY_KEY color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "CONFIG_UPDATE_BY_KEY", key: "absoluteUrlBase", value: "https://foo.bar/wp-conte…" } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.144 INTL_FETCH_TRANSLATIONS color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "INTL_FETCH_TRANSLATIONS" } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.151 USER_LOGIN_SUCCESS color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "USER_LOGIN_SUCCESS", email: "[email protected]" } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.155 ZONES_FETCH color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "ZONES_FETCH" } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.162 @@router/TRANSITION color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "@@router/TRANSITION", payload: Object } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.164 @@router/UPDATE_LOCATION color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "@@router/UPDATE_LOCATION", payload: Object } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.437 INTL_FETCH_TRANSLATIONS_SUCCESS color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "INTL_FETCH_TRANSLATIONS_SUCCESS", locale: "en", translations: Object } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:00.441 APPLICATION_INIT color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "APPLICATION_INIT" } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:02.671 ZONES_FETCH_SUCCESS color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "ZONES_FETCH_SUCCESS", zoneList: Array[1] } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
%c action @ 10:01:02.696 ZONE_SET_ACTIVE_ZONE color: inherit;compiled.js:25
prev state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7270
action Object { type: "ZONE_SET_ACTIVE_ZONE", zone: Object } compiled.js:25:7376
next state Object { activeZone: Object, app: Object, config: Object, intl: Object, user: Object, notifications: Array[0], routing: Object, zones: Object, zoneAnalytics: Object, zoneDnsRecords: Object, 4 more… } compiled.js:25:7570
/CC @thellimist
Hi,
I am using Cloudflare plugin on my WordPress blog (https://www.gulshankumar.net). This plugin is helpful in many ways. However, I am not completely satisfied with this plugin. I am little skeptical about using it.
I also found some bug, somehow I fixed it, but couldn't completely. So I would like to share in detail. I hope that my suggestion would be helpful for the improvement of this plugin.
I am using Genesis Theme on my blog. It loads a small script for called html5shiv.js which is only supposed to be loaded for Internet Explorer only. But as I enable server push, it adds IE script in HTTP header. It results in one unwanted HTTP request. After digging a lot, I found that Server push is working mainly for the local domain, not for the external path. So firstly I dequeued the script and loaded it from the CDN path. It fixed the problem.
I want to say that, please bring two feature.
wp-config.php
Please add a toggle button inside Dashboard. Once user do enable you could automatically add define('CLOUDFLARE_HTTP2_SERVER_PUSH_ACTIVE', true);
Cloudflare plugin is powerful. It shouldn't be treated just as an addon, or a workaround for something. I firmly believe that it can turn out as a great cache manager, and provide better performance when carefully used with Cache Everything rule (Like I do).
I recently noticed that at some situation, this plugin does not purge page cache automatically which results in an unsatisfactory experience. I believe that this plugin should automatically purge cache in below situation. I want to see more hooks which can meet to general requirements and provide better user-experience.
If we use Cache Everything rule, Cloudflare plugin must know to purge page level cache (except static files if cache validation exists) in all below situations.
Well, there are many situations, please see how WP Rocket plugin handle.
Or, alternatively, you could add a button in WP toolbar to purge all page cache of Cloudflare Edge. This would be also a great help.
Thanks & Regards,
Gulshan
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.