Skip to content

Commit 39a775d

Browse files
added hidden classes option
1 parent 4ef17c7 commit 39a775d

File tree

5 files changed

+65
-7
lines changed

5 files changed

+65
-7
lines changed

admin/css-classes.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,24 @@ function cache_everything_display_css_classes() {
1111
<div class="wrap">
1212
<h2>Available CSS Classes</h2>
1313
<p>Below are the CSS classes available for use, based on your site and user roles, including generic guest and user status.</p>
14-
<p>Elements with the following CSS classes will be hidden FOR ALL USERS on the front end UNLESS the user's role matches the class specified. Each element can only have one of these classes applied; mixing multiple classes on a single element is not supported.</p>
14+
<h3>Classes to SHOW Elements Based on Roles</h3>
15+
<p>Elements with the following CSS classes will be hidden FOR ALL USERS on the front end UNLESS the user's role matches the class specified. Each element can only have one of these classes applied; mixing multiple classes on a single element is not supported. Use the hide classes to hide elements for multiple user roles if more than one type of user needs to see the content.</p>
1516
<ul>
1617
<?php
1718
foreach ($css_classes as $class) {
1819
echo "<li>{$class}</li>";
1920
}
20-
echo '</ul>';
21-
echo '</div>';
21+
?>
22+
</ul>
23+
<h3>Classes to HIDE Elements Based on Roles</h3>
24+
<p>Elements with the following CSS classes will be hidden ONLY FOR USERS that match the role indicated. Multiple classes per element are supported. If a user matches one or more roles, the element will be hidden.</p>
25+
<ul>
26+
<?php
27+
foreach ($css_classes as $class) {
28+
echo "<li>{$class}-hide</li>";
29+
}
30+
?>
31+
</ul>
32+
</div>
33+
<?php
2234
}

admin/menu.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,11 @@ function cache_everything_enqueue_admin_styles() {
7676
wp_enqueue_style('wp-admin');
7777
}
7878

79-
add_action('admin_enqueue_scripts', 'cache_everything_enqueue_admin_styles');
79+
add_action('admin_enqueue_scripts', 'cache_everything_enqueue_admin_styles');
80+
81+
function cache_everything_add_settings_link($links) {
82+
$settings_link = '<a href="' . admin_url('options-general.php?page=cache-everything') . '">Settings</a>';
83+
array_unshift($links, $settings_link);
84+
return $links;
85+
}
86+
add_filter('plugin_action_links_cache-everything/cache-everything.php', 'cache_everything_add_settings_link');

admin/prefetch-settings.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,31 @@ function cache_everything_display_prefetch_settings() {
1414
<?php
1515
}
1616

17+
function cache_everything_set_default_prefetch_settings() {
18+
// Force update to default settings
19+
update_option('cache_everything_prefetch_enabled', 'no'); // Default disabled
20+
21+
// Define and force update default patterns
22+
$default_patterns = [
23+
[
24+
'pattern' => 'login',
25+
'operator' => 'contains',
26+
'comment' => 'Exclude login actions'
27+
],
28+
[
29+
'pattern' => 'logout',
30+
'operator' => 'contains',
31+
'comment' => 'Exclude logout actions'
32+
],
33+
[
34+
'pattern' => '#',
35+
'operator' => 'starts_with',
36+
'comment' => 'Exclude anchor links'
37+
]
38+
];
39+
update_option('cache_everything_prefetch_patterns', $default_patterns);
40+
}
41+
1742
function cache_everything_register_prefetch_settings() {
1843
// Register a new setting for "Cache Everything" options
1944
register_setting('cache_everything_prefetch_options', 'cache_everything_prefetch_enabled');

cache-everything.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
* Plugin Name: Cache Everything
44
* Plugin URI: https://github.com/AsyncAlchemist
55
* Description: A simple plugin to cache everything in Wordpress.
6-
* Version: 0.22
6+
* Version: 0.23
77
* Author: Taylor Selden
88
* Author URI: https://github.com/AsyncAlchemist
99
*/
1010
define('CACHE_EVERYTHING_JS_URL', 'wp-content/plugins/cache-everything/js');
1111
define('CACHE_EVERYTHING_CSS_URL', 'wp-content/plugins/cache-everything/css');
12-
define('CACHE_EVERYTHING_VERSION', '0.22');
12+
define('CACHE_EVERYTHING_VERSION', '0.23');
1313

1414
require_once(plugin_dir_path(__FILE__) . 'handle-js-request.php');
1515
require_once(plugin_dir_path(__FILE__) . 'handle-css-request.php');
@@ -30,6 +30,7 @@ function cache_everything_flush_rewrite_rules() {
3030
}
3131
register_activation_hook(__FILE__, 'cache_everything_flush_rewrite_rules');
3232
register_activation_hook(__FILE__, 'cache_everything_activate');
33+
register_activation_hook(__FILE__, 'cache_everything_set_default_prefetch_settings');
3334
register_deactivation_hook(__FILE__, 'cache_everything_flush_rewrite_rules');
3435

3536
/**

public/js/cache-everything.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,18 +174,24 @@ document.addEventListener('wce_UpdateCSS', function() {
174174
// Determine visibility for guest and user status
175175
if (isGuest()) {
176176
visibleClasses.push(`${sitePrefix}-guest`);
177+
hiddenClasses.push(`${sitePrefix}-guest-hide`);
177178
hiddenClasses.push(`${sitePrefix}-user`);
179+
visibleClasses.push(`${sitePrefix}-user-hide`);
178180
} else if (isUser()) {
179181
visibleClasses.push(`${sitePrefix}-user`);
182+
hiddenClasses.push(`${sitePrefix}-user-hide`);
180183
hiddenClasses.push(`${sitePrefix}-guest`);
184+
visibleClasses.push(`${sitePrefix}-guest-hide`);
181185
}
182186

183187
// Determine visibility for each role
184188
wce_Data.roles.forEach(role => {
185189
if (isRole(role)) {
186190
visibleClasses.push(`${sitePrefix}-${role}`);
191+
hiddenClasses.push(`${sitePrefix}-${role}-hide`);
187192
} else {
188193
hiddenClasses.push(`${sitePrefix}-${role}`);
194+
visibleClasses.push(`${sitePrefix}-${role}-hide`);
189195
}
190196
});
191197

@@ -362,7 +368,6 @@ function setupPrefetching() {
362368
url => url.startsWith('javascript:'), // Exclude if URL is a JavaScript call
363369
url => /\.(pdf|zip|rar|exe|doc|docx|xls|xlsx)$/i.test(url), // Exclude common file downloads
364370
url => /\.(jpg|jpeg|png|webp|avif|gif|svg|mp4|mp3)$/i.test(url), // Exclude common media files
365-
url => url.includes('/action/toggle'), // Exclude URLs intended for actions
366371
url => url.includes('#!'), // Exclude URLs with hashbangs (ajax)
367372
url => url.includes('/subscribe'), // Example: Exclude subscription URLs
368373
url => {
@@ -391,20 +396,28 @@ function setupPrefetching() {
391396
return urlObj.pathname + urlObj.search;
392397
};
393398

399+
// Print all exclusion conditions
400+
excludeConditions.forEach((condition, index) => {
401+
debugPrint(`Exclusion condition ${index + 1}: ${condition.toString()}`);
402+
});
403+
394404
// Add "Starts With" exclusions
395405
(wce_Data.prefetchStartsWith || []).forEach(pattern => {
396406
excludeConditions.push(url => getPathAndQuery(url).startsWith(pattern));
407+
debugPrint(`Exclusion condition: url => getPathAndQuery(url).startsWith('${pattern}')`);
397408
});
398409

399410
// Add "Contains" exclusions
400411
(wce_Data.prefetchContains || []).forEach(pattern => {
401412
excludeConditions.push(url => getPathAndQuery(url).includes(pattern));
413+
debugPrint(`Exclusion condition: url => getPathAndQuery(url).includes('${pattern}')`);
402414
});
403415

404416
// Add "Regex Patterns" exclusions
405417
(wce_Data.prefetchRegex || []).forEach(pattern => {
406418
const regex = new RegExp(pattern);
407419
excludeConditions.push(url => regex.test(getPathAndQuery(url)));
420+
debugPrint(`Exclusion condition: url => getPathAndQuery(url).matches Regex('${pattern}')`);
408421
});
409422

410423
links.forEach(link => {

0 commit comments

Comments
 (0)