Changeset 3412245
- Timestamp:
- 12/05/2025 02:04:12 PM (9 days ago)
- Location:
- zenpress
- Files:
-
- 48 added
- 6 deleted
- 89 edited
- 1 copied
-
assets/banner-1544x500.png (modified) (previous)
-
assets/banner-772x250.png (modified) (previous)
-
assets/screenshot-1.png (modified) (previous)
-
tags/2.1.0 (copied) (copied from zenpress/trunk)
-
tags/2.1.0/assets/build/index-rtl.css (modified) (1 diff)
-
tags/2.1.0/assets/build/index.asset.php (modified) (1 diff)
-
tags/2.1.0/assets/build/index.css (modified) (1 diff)
-
tags/2.1.0/assets/build/index.js (modified) (1 diff)
-
tags/2.1.0/assets/src/components (deleted)
-
tags/2.1.0/assets/src/hooks (deleted)
-
tags/2.1.0/assets/src/index.js (modified) (2 diffs)
-
tags/2.1.0/assets/src/index.scss (modified) (1 diff)
-
tags/2.1.0/assets/src/js (added)
-
tags/2.1.0/assets/src/js/components (added)
-
tags/2.1.0/assets/src/js/components/Notices.js (added)
-
tags/2.1.0/assets/src/js/components/SaveButton.js (added)
-
tags/2.1.0/assets/src/js/components/SnippetToggleControl.js (added)
-
tags/2.1.0/assets/src/js/components/Tabs.js (added)
-
tags/2.1.0/assets/src/js/hooks (added)
-
tags/2.1.0/assets/src/js/hooks/useSettings.js (added)
-
tags/2.1.0/assets/src/js/pages (added)
-
tags/2.1.0/assets/src/js/pages/SettingsPage.js (added)
-
tags/2.1.0/assets/src/pages (deleted)
-
tags/2.1.0/assets/src/scss (added)
-
tags/2.1.0/assets/src/scss/abstracts (added)
-
tags/2.1.0/assets/src/scss/abstracts/_variables.scss (added)
-
tags/2.1.0/assets/src/scss/base (added)
-
tags/2.1.0/assets/src/scss/base/_typography.scss (added)
-
tags/2.1.0/assets/src/scss/components (added)
-
tags/2.1.0/assets/src/scss/components/_button.scss (added)
-
tags/2.1.0/assets/src/scss/components/_notice.scss (added)
-
tags/2.1.0/assets/src/scss/components/_tabs.scss (added)
-
tags/2.1.0/assets/src/scss/components/_toggle-control.scss (added)
-
tags/2.1.0/assets/src/scss/pages (added)
-
tags/2.1.0/assets/src/scss/pages/_settings.scss (added)
-
tags/2.1.0/inc/admin/menu.php (modified) (4 diffs)
-
tags/2.1.0/inc/core/metadata.php (modified) (2 diffs)
-
tags/2.1.0/inc/snippets/functions/disable-default-pattern-categories.php (added)
-
tags/2.1.0/inc/snippets/functions/disable-rest-api.php (modified) (3 diffs)
-
tags/2.1.0/inc/snippets/functions/remove-woocommerce-patterns.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/block-user-enumeration.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/clean-admin-bar.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/clean-dashboard-items.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-adjacent-posts.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-application-passwords.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-author-archives.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-dashicons.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-default-pattern-categories.meta.php (added)
-
tags/2.1.0/inc/snippets/meta/disable-dns-prefetch.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-emoji-scripts.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-jquery-migrate.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-login-language-selector.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-oembed.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-pdf-thumbnails.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-pingback-trackback.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-rest-api.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-rss.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-shortlink.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-wlw-manifest.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-woocommerce-widgets.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/hide-woocommerce-version.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/hide-wordpress-version.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/protect-wp-login.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/remove-rest-api-link.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/remove-woocommerce-patterns.meta.php (modified) (1 diff)
-
tags/2.1.0/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php (modified) (1 diff)
-
tags/2.1.0/languages/zenpress.pot (modified) (10 diffs)
-
tags/2.1.0/readme.txt (modified) (7 diffs)
-
tags/2.1.0/zenpress.php (modified) (2 diffs)
-
trunk/assets/build/index-rtl.css (modified) (1 diff)
-
trunk/assets/build/index.asset.php (modified) (1 diff)
-
trunk/assets/build/index.css (modified) (1 diff)
-
trunk/assets/build/index.js (modified) (1 diff)
-
trunk/assets/src/components (deleted)
-
trunk/assets/src/hooks (deleted)
-
trunk/assets/src/index.js (modified) (2 diffs)
-
trunk/assets/src/index.scss (modified) (1 diff)
-
trunk/assets/src/js (added)
-
trunk/assets/src/js/components (added)
-
trunk/assets/src/js/components/Notices.js (added)
-
trunk/assets/src/js/components/SaveButton.js (added)
-
trunk/assets/src/js/components/SnippetToggleControl.js (added)
-
trunk/assets/src/js/components/Tabs.js (added)
-
trunk/assets/src/js/hooks (added)
-
trunk/assets/src/js/hooks/useSettings.js (added)
-
trunk/assets/src/js/pages (added)
-
trunk/assets/src/js/pages/SettingsPage.js (added)
-
trunk/assets/src/pages (deleted)
-
trunk/assets/src/scss (added)
-
trunk/assets/src/scss/abstracts (added)
-
trunk/assets/src/scss/abstracts/_variables.scss (added)
-
trunk/assets/src/scss/base (added)
-
trunk/assets/src/scss/base/_typography.scss (added)
-
trunk/assets/src/scss/components (added)
-
trunk/assets/src/scss/components/_button.scss (added)
-
trunk/assets/src/scss/components/_notice.scss (added)
-
trunk/assets/src/scss/components/_tabs.scss (added)
-
trunk/assets/src/scss/components/_toggle-control.scss (added)
-
trunk/assets/src/scss/pages (added)
-
trunk/assets/src/scss/pages/_settings.scss (added)
-
trunk/inc/admin/menu.php (modified) (4 diffs)
-
trunk/inc/core/metadata.php (modified) (2 diffs)
-
trunk/inc/snippets/functions/disable-default-pattern-categories.php (added)
-
trunk/inc/snippets/functions/disable-rest-api.php (modified) (3 diffs)
-
trunk/inc/snippets/functions/remove-woocommerce-patterns.php (modified) (1 diff)
-
trunk/inc/snippets/meta/block-user-enumeration.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/clean-admin-bar.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/clean-dashboard-items.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-adjacent-posts.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-application-passwords.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-author-archives.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-dashicons.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-default-pattern-categories.meta.php (added)
-
trunk/inc/snippets/meta/disable-dns-prefetch.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-emoji-scripts.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-jquery-migrate.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-login-language-selector.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-oembed.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-pdf-thumbnails.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-pingback-trackback.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-rest-api.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-rss.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-shortlink.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-wlw-manifest.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-widgets.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/hide-woocommerce-version.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/hide-wordpress-version.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/protect-wp-login.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-rest-api-link.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-woocommerce-patterns.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php (modified) (1 diff)
-
trunk/languages/zenpress.pot (modified) (10 diffs)
-
trunk/readme.txt (modified) (7 diffs)
-
trunk/zenpress.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
zenpress/tags/2.1.0/assets/build/index-rtl.css
r3352459 r3412245 1 . zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}1 .components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-left:1px solid #d6e2ed;flex-direction:column;padding-left:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:right;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;left:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-right:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;right:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-right:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;right:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""} -
zenpress/tags/2.1.0/assets/build/index.asset.php
r3372200 r3412245 1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => ' 64ce0d65ec54e96537a1');1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '980bfa58281a120e84d0'); -
zenpress/tags/2.1.0/assets/build/index.css
r3352459 r3412245 1 . zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}1 .components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-right:1px solid #d6e2ed;flex-direction:column;padding-right:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:left;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;right:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-left:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;left:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-left:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;left:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""} -
zenpress/tags/2.1.0/assets/build/index.js
r3372200 r3412245 1 (()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element, i=window.wp.i18n,a=window.wp.components,r=window.wp.apiFetch;var c=e.n(r);const o=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:n})=>(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:n,__nextHasNoMarginBottom:!0}),h=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,i.__)("Save settings","zenpress")}),u=()=>{const{removeNotice:e}=(0,o.useDispatch)(l.store),s=(0,o.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},_=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:r}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:r,createErrorNotice:p}=(0,o.useDispatch)(l.store);return(0,n.useEffect)(()=>{c()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},i={};Object.keys(n).forEach(e=>{i[e]={...n[e],"enable-snippet":t.includes(e)}}),s(i)}).catch(()=>{p((0,i.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await c()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),r((0,i.__)("Settings saved.","zenpress"))}catch{p((0,i.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[_,w]=(0,n.useState)(new Set),v=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const i=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":i}}),t}),w(new Set(j))},x={};Object.keys(e).forEach(s=>{const t=e[s],n=t?.category||(0,i.__)("Uncategorized","zenpress");x[n]||(x[n]=[]),x[n].push({name:s,data:t})});const j=Object.keys(x).sort((e,s)=>e.localeCompare(s,void 0,{sensitivity:"base"}));return(0,p.jsx)("div",{className:"zenpress-row",children:(0,p.jsxs)("div",{className:"zenpress-col",children:[(0,p.jsxs)("div",{className:"zenpress-presets",children:[(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("p",{children:(0,i.__)("Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you.","zenpress")}),(0,p.jsx)("h2",{children:(0,i.__)("Pick a preset","zenpress")})]}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("showcase-website"),__next40pxDefaultSize:!0,children:(0,i.__)("Showcase website","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("blog"),__next40pxDefaultSize:!0,children:(0,i.__)("Blog","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("ecommerce"),__next40pxDefaultSize:!0,children:(0,i.__)("E-commerce","zenpress")}),(0,p.jsx)("div",{className:"zenpress-presets-description",children:(0,p.jsx)("h2",{children:(0,i.__)("Or just enable what you need","zenpress")})}),(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s}),w(new Set(j))},__next40pxDefaultSize:!0,children:(0,i.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,i.__)("Disable all actions","zenpress")})]})]}),j.map(e=>(0,p.jsx)(a.Panel,{children:(0,p.jsx)(a.PanelBody,{title:e,initialOpen:_.has(e),children:x[e].map(({name:e,data:t})=>(0,p.jsx)(a.PanelRow,{children:(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""})},e))})},e)),(0,p.jsx)("div",{className:"zenpress-actions",children:(0,p.jsx)(h,{onClick:t,isBusy:r})}),(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(u,{})})]})})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(_,{}))})})();1 (()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element,r=window.wp.i18n,a=window.wp.components,i=window.wp.apiFetch;var o=e.n(i);const c=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:r})=>{const i=(0,n.useRef)(null);return(0,n.useEffect)(()=>((e,s)=>{if(!e)return;const t=t=>{if("Enter"===t.key){const n=e.querySelector('input[type="checkbox"]');n&&(document.activeElement===n||e.contains(document.activeElement))&&(t.preventDefault(),t.stopPropagation(),s())}};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}})(i.current,t),[t]),(0,p.jsx)("div",{ref:i,children:(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:r,__nextHasNoMarginBottom:!0})})},u=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,r.__)("Save settings","zenpress")}),b=()=>{const{removeNotice:e}=(0,c.useDispatch)(l.store),s=(0,c.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},h=(0,n.createContext)(),f=({selectedTabId:e,onSelect:s,orientation:t="horizontal",children:r})=>{const[a,i]=(0,n.useState)(),o=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,p.jsx)(h.Provider,{value:{selectedTabId:c,onSelect:t=>{void 0===e&&i(t),s?.(t)},orientation:t,getOrderedTabIds:()=>o.current?Array.from(o.current.querySelectorAll('[role="tab"]')).map(e=>{const s=e.getAttribute("id");return s?s.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:o},children:(0,p.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${t}`,children:r})})};f.TabList=({children:e})=>{const{orientation:s,tabListRef:t}=(0,n.useContext)(h);return(0,p.jsx)("div",{ref:t,className:`zenpress-tabs__list zenpress-tabs__list--${s}`,role:"tablist","aria-orientation":s,children:e})},f.Tab=({tabId:e,title:s,className:t="",children:r})=>{const{selectedTabId:a,onSelect:i,orientation:o,getOrderedTabIds:c}=(0,n.useContext)(h),l=a===e,d=(0,n.useRef)(null);return(0,p.jsx)("button",{ref:d,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${t}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>i(e),onKeyDown:s=>{const t=c();if(!t||0===t.length)return;const n=t.indexOf(e);if(-1===n)return;let r=n;if("vertical"===o?"ArrowDown"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowUp"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1):"ArrowRight"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowLeft"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1),"Home"===s.key?(s.preventDefault(),r=0):"End"===s.key&&(s.preventDefault(),r=t.length-1)," "===s.key||"Enter"===s.key)return s.preventDefault(),void i(e);if(r!==n&&r>=0&&r<t.length){const e=t[r],s=document.getElementById(`zenpress-tab-${e}`);s&&(s.focus(),i(e))}},onFocus:()=>{l||i(e)},children:s||r})},f.TabPanel=({tabId:e,children:s})=>{const{selectedTabId:t}=(0,n.useContext)(h),r=(0,n.useRef)(null),a=t===e;return(0,n.useEffect)(()=>{a&&r.current&&(0===r.current.querySelectorAll('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"]), input:not([disabled]), select:not([disabled]), textarea:not([disabled])').length?r.current.setAttribute("tabindex","0"):r.current.removeAttribute("tabindex"))},[a]),a?(0,p.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:s}):(0,p.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:s})};const x=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:i}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:i,createErrorNotice:p}=(0,c.useDispatch)(l.store);return(0,n.useEffect)(()=>{o()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},r={};Object.keys(n).forEach(e=>{r[e]={...n[e],"enable-snippet":t.includes(e)}}),s(r)}).catch(()=>{p((0,r.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await o()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),i((0,r.__)("Settings saved.","zenpress"))}catch{p((0,r.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[h,x]=(0,n.useState)(),_=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":r}}),t})},m=e=>e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e,v=["core","gutenberg","woocommerce","ads-blocker","tools"],y={};Object.keys(e).forEach(s=>{const t=e[s],n=(t?.category||(0,r.__)("Uncategorized","zenpress")).toLowerCase(),a=(t?.subcategory||(0,r.__)("uncategorized","zenpress")).toLowerCase();y[n]||(y[n]={}),y[n][a]||(y[n][a]=[]),y[n][a].push({name:s,data:t})});const z=Object.keys(y).sort((e,s)=>{const t=v.indexOf(e.toLowerCase()),n=v.indexOf(s.toLowerCase());return-1!==t&&-1!==n?t-n:-1!==t?-1:-1!==n?1:e.localeCompare(s,void 0,{sensitivity:"base"})});return(0,n.useEffect)(()=>{!h&&z.length>0&&x(z[0])},[h,z.length]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),i||t())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[t,i]),(0,p.jsxs)("article",{className:"zenpress-row",children:[(0,p.jsxs)("section",{className:"zenpress-main",children:[(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(b,{})}),(0,p.jsxs)("div",{className:"zenpress-panel",children:[(0,p.jsxs)(f,{orientation:"vertical",selectedTabId:h,onSelect:e=>{x(e),x(e)},children:[(0,p.jsx)(f.TabList,{children:z.map(e=>{const s=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,p.jsx)(f.Tab,{tabId:e,title:m(e),className:s,children:m(e)},e)})}),z.map(e=>{const t=Object.keys(y[e]).sort();return(0,p.jsxs)(f.TabPanel,{tabId:e,children:[(0,p.jsx)("h2",{children:m(e)}),t.map(t=>(0,p.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${t.toLowerCase().replace(/\s+/g,"-")}`,children:[(0,p.jsx)("hr",{}),(0,p.jsx)("h3",{children:m(t)}),y[e][t].map(({name:e,data:t})=>(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""},e))]},t))]},e)})]}),(0,p.jsxs)("div",{className:"zenpress-actions",children:[(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"tertiary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Disable all actions","zenpress")})]}),(0,p.jsx)(u,{onClick:t,isBusy:i})]})]})]}),(0,p.jsx)("aside",{className:"zenpress-sidebar",children:(0,p.jsx)("div",{className:"zenpress-presets",children:(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("h2",{children:(0,r.__)("Pick configuration preset","zenpress")}),(0,p.jsx)("p",{children:(0,r.__)("Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case.","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🖼️ ",(0,r.__)("Corporate website","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("corporate-website"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:[" 📰 ",(0,r.__)("Blog","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("blog"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🛒 ",(0,r.__)("E-commerce","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("ecommerce"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")})]})})})]})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(x,{}))})})(); -
zenpress/tags/2.1.0/assets/src/index.js
r3372200 r3412245 2 2 import { createRoot } from '@wordpress/element'; 3 3 import './index.scss'; 4 import { SettingsPage } from './ pages/SettingsPage';4 import { SettingsPage } from './js/pages/SettingsPage'; 5 5 6 6 /** … … 8 8 */ 9 9 domReady(() => { 10 const rootEl = document.getElementById('zenpress-settings');11 if (!rootEl) return;10 const rootEl = document.getElementById('zenpress-settings'); 11 if (!rootEl) return; 12 12 13 const root = createRoot(rootEl);14 root.render(<SettingsPage />);13 const root = createRoot(rootEl); 14 root.render(<SettingsPage />); 15 15 }); -
zenpress/tags/2.1.0/assets/src/index.scss
r3372200 r3412245 1 .zenpress { 2 &-loading { 3 width: 100%; 4 max-width: 900px; 5 margin: 20px auto; 6 } 1 @use 'scss/abstracts/variables'; 7 2 8 &-dashboard-wrap { 9 a:not(.components-button) { 10 color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)); 3 @use 'scss/base/typography'; 11 4 12 &[target='_blank'] { 13 position: relative; 14 gap: 4px; 5 @use 'scss/components/button'; 6 @use 'scss/components/notice'; 7 @use 'scss/components/tabs'; 8 @use 'scss/components/toggle-control'; 15 9 16 &::after { 17 content: ' ↗'; 18 } 19 } 20 } 21 22 .components-button { 23 gap: 4px; 24 } 25 26 .components-panel { 27 width: 100%; 28 margin: 0 auto 20px auto; 29 max-width: 100%; 30 31 &__body { 32 &-title { 33 text-transform: capitalize; 34 } 35 36 &-toggle { 37 border-bottom: 1px solid #d6e2ed; 38 text-transform: capitalize; 39 } 40 } 41 } 42 43 .components-toggle-control { 44 &__help { 45 font-size: 1.1em; 46 } 47 } 48 49 .components-notice-list { 50 width: 100%; 51 margin-bottom: 20px; 52 } 53 } 54 55 &-row { 56 display: grid; 57 grid-template-columns: 1fr; 58 gap: 40px; 59 width: 100%; 60 max-width: 920px; 61 margin: 0 auto; 62 } 63 64 &-actions { 65 display: flex; 66 flex-wrap: wrap; 67 gap: 20px; 68 justify-content: space-between; 69 align-items: center; 70 margin-bottom: 20px; 71 72 &-bulk { 73 display: flex; 74 flex-wrap: wrap; 75 gap: 10px; 76 justify-content: flex-start; 77 align-items: center; 78 } 79 } 80 81 &-presets { 82 display: flex; 83 flex-wrap: wrap; 84 gap: 10px; 85 justify-content: flex-start; 86 align-items: center; 87 margin-bottom: 20px; 88 89 &-description { 90 flex: 100%; 91 width: 100%; 92 max-width: 100%; 93 } 94 } 95 96 &-header { 97 align-items: center; 98 display: flex; 99 flex-wrap: wrap; 100 justify-content: space-between; 101 overflow-x: auto; 102 padding: 16px; 103 margin: 0 0 20px 0; 104 gap: 40px; 105 background: #fff; 106 border: 1px solid #e0e0e0; 107 108 &-navigation { 109 display: flex; 110 flex-wrap: wrap; 111 gap: 20px; 112 justify-content: space-between; 113 align-items: center; 114 } 115 116 h1, 117 p { 118 margin: 0; 119 padding: 0; 120 } 121 } 122 123 &-footer { 124 align-items: center; 125 display: flex; 126 flex-wrap: wrap; 127 justify-content: space-between; 128 overflow-x: auto; 129 padding: 16px; 130 margin: 0 0 20px 0; 131 gap: 40px; 132 border-top: 1px solid #e0e0e0; 133 padding-top: 32px; 134 135 &-navigation { 136 display: flex; 137 flex-wrap: wrap; 138 gap: 20px; 139 justify-content: space-between; 140 align-items: center; 141 } 142 143 p { 144 margin: 0; 145 padding: 0; 146 } 147 } 148 } 10 @use 'scss/pages/settings'; -
zenpress/tags/2.1.0/inc/admin/menu.php
r3372200 r3412245 31 31 ?> 32 32 <div class="wrap zenpress-dashboard-wrap"> 33 < divclass="zenpress-header">33 <header class="zenpress-header"> 34 34 <div class="zenpress-header-title"> 35 35 <h1><?php echo esc_html__('ZenPress', 'zenpress'); ?></h1> … … 67 67 </a> 68 68 </div> 69 </ div>70 < divid="zenpress-settings" class="zenpress-settings">69 </header> 70 <main id="zenpress-settings" class="zenpress-settings"> 71 71 <div class="zenpress-loading card"> 72 72 <div class="zenpress-loading-body"> … … 76 76 </div> 77 77 </div> 78 </ div>79 < divclass="zenpress-footer">78 </main> 79 <footer class="zenpress-footer"> 80 80 <div class="zenpress-footer-title"> 81 81 <p> … … 99 99 </a> 100 100 </div> 101 </ div>101 </footer> 102 102 </div> 103 103 <?php -
zenpress/tags/2.1.0/inc/core/metadata.php
r3372200 r3412245 16 16 'description' => '', 17 17 'category' => '', 18 'subcategory' => '', 18 19 'weight' => 0, 19 20 'preset' => [] … … 28 29 'description' => sanitize_text_field($metadata['description']), 29 30 'category' => sanitize_text_field($metadata['category']), 31 'subcategory' => sanitize_text_field($metadata['subcategory']), 30 32 'weight' => (int) $metadata['weight'], 31 33 'preset' => array_map('sanitize_text_field', (array) $metadata['preset']) -
zenpress/tags/2.1.0/inc/snippets/functions/disable-rest-api.php
r3382662 r3412245 23 23 function zenpress_disable_wp_rest_api($access) { 24 24 if (!is_user_logged_in() && !zenpress_disable_wp_rest_api_allow_access()) { 25 $message = apply_filters(' disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress'));25 $message = apply_filters('zenpress_disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress')); 26 26 27 27 return new WP_Error('rest_login_required', $message, ['status' => rest_authorization_required_code()]); … … 32 32 33 33 function zenpress_disable_wp_rest_api_allow_access() { 34 $post_var = apply_filters(' disable_wp_rest_api_post_var', false);35 $server_var = apply_filters(' disable_wp_rest_api_server_var', false);34 $post_var = apply_filters('zenpress_disable_wp_rest_api_post_var', false); 35 $server_var = apply_filters('zenpress_disable_wp_rest_api_server_var', false); 36 36 37 37 if (!empty($post_var)) { 38 38 if (is_array($post_var)) { 39 39 foreach($post_var as $var) { 40 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations 40 41 if (isset($_POST[$var]) && !empty($_POST[$var])) { 41 42 return true; … … 43 44 } 44 45 } else { 46 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations 45 47 if (isset($_POST[$post_var]) && !empty($_POST[$post_var])) { 46 48 return true; -
zenpress/tags/2.1.0/inc/snippets/functions/remove-woocommerce-patterns.php
r3372200 r3412245 5 5 } 6 6 7 // Only proceed if WooCommerce is active 8 if (!class_exists('WooCommerce')) { 9 return; 10 } 11 7 12 use Automattic\WooCommerce\Blocks\Package; 8 13 9 14 add_action('woocommerce_blocks_loaded', static function (): void { 10 remove_action( 11 'init', 12 [ 13 Package::container()->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class), 14 'register_block_patterns', 15 ] 16 ); 15 // Check if required classes exist before accessing them 16 if (!class_exists(Package::class) || !class_exists(\Automattic\WooCommerce\Blocks\BlockPatterns::class)) { 17 return; 18 } 19 20 try { 21 $container = Package::container(); 22 if (!$container) { 23 return; 24 } 25 26 $block_patterns = $container->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class); 27 if ($block_patterns && method_exists($block_patterns, 'register_block_patterns')) { 28 remove_action( 29 'init', 30 [$block_patterns, 'register_block_patterns'] 31 ); 32 } 33 } catch (\Exception $e) { 34 // Silently fail if container or class is not available 35 return; 36 } 17 37 }); 38 39 add_action('init', static function() { 40 if (!class_exists('WP_Block_Patterns_Registry')) { 41 return; 42 } 43 44 $all_patterns = WP_Block_Patterns_Registry::get_instance()->get_all_registered(); 45 foreach ($all_patterns as $pattern) { 46 if (isset($pattern['name'])) { 47 // Use str_starts_with() for PHP 8.0+, fallback to strpos() for older versions 48 $is_woocommerce_pattern = function_exists('str_starts_with') 49 ? str_starts_with($pattern['name'], 'woocommerce-blocks') 50 : strpos($pattern['name'], 'woocommerce-blocks') === 0; 51 52 if ($is_woocommerce_pattern) { 53 unregister_block_pattern($pattern['name']); 54 } 55 } 56 } 57 }, 20); 58 59 /** 60 * Disables the WooCommerce Pattern Toolkit Full Composability feature. 61 * 62 * This feature is a flag for advanced block patterns functionality, which can 63 * sometimes be tied to large transients/caching issues. 64 */ 65 add_filter('woocommerce_admin_features', static function($features) { 66 // Ensure $features is an array 67 if (!is_array($features)) { 68 return $features; 69 } 70 71 $feature_to_disable = 'pattern-toolkit-full-composability'; 72 73 // Find the feature's identifier in the array and remove it. 74 $key = array_search($feature_to_disable, $features, true); 75 if ($key !== false) { 76 unset($features[$key]); 77 } 78 79 return $features; 80 }); -
zenpress/tags/2.1.0/inc/snippets/meta/block-user-enumeration.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Security 🔒️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('security', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/clean-admin-bar.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('User interface 💻️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('user-interface', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/clean-dashboard-items.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('User interface 💻️', 'zenpress'), 18 'category' => __('ads-blocker', 'zenpress'), 19 'subcategory' => __('user-interface', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-adjacent-posts.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'ecommerce'],21 'preset' => ['corporate-website', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-application-passwords.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Security 🔒️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('security', 'zenpress'), 19 20 'weight' => 0, 20 21 'preset' => [''], -
zenpress/tags/2.1.0/inc/snippets/meta/disable-author-archives.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Security 🔒️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('security', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'ecommerce'],21 'preset' => ['corporate-website', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-dashicons.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __(' core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-dns-prefetch.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-emoji-scripts.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __(' core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-jquery-migrate.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __(' core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-login-language-selector.meta.php
r3372200 r3412245 13 13 'title' => __('Disable the login language selector', 'zenpress'), 14 14 'description' => __('Removes the language dropdown from the WordPress login page. Simplifies login screen and reduces distractions.', 'zenpress'), 15 'category' => __('User interface 💻️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('user-interface', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-oembed.meta.php
r3372200 r3412245 13 13 'title' => __('Disable oEmbed', 'zenpress'), 14 14 'description' => __('Removes WordPress oEmbed features such as auto-discovery, REST API routes, TinyMCE integration, and the wp-embed script. Reduces API calls, improves performance, and limits unnecessary external requests.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-pdf-thumbnails.meta.php
r3372200 r3412245 13 13 'title' => __('Disable PDF thumbnails', 'zenpress'), 14 14 'description' => __('Prevents WordPress from generating thumbnails for uploaded PDF files by removing fallback image sizes. saves storage space and improves performance by avoiding unnecessary image generation.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __(' core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-pingback-trackback.meta.php
r3372200 r3412245 13 13 'title' => __('Disable pingback and trackback', 'zenpress'), 14 14 'description' => __('Removes the X-Pingback header, disables pingbacks and trackbacks on new posts, and prevents self-pingbacks. reduces spam, blocks potential DDoS vectors, and slightly improves performance by avoiding useless requests.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-rest-api.meta.php
r3382662 r3412245 12 12 13 13 return [ 14 'title' => __('Disable REST API ', 'zenpress'),14 'title' => __('Disable REST API for visitors not logged into WordPress', 'zenpress'), 15 15 'description' => __( 16 16 'Disable the WP REST API for visitors not logged into WordPress.', 17 17 'zenpress' 18 18 ), 19 'category' => __('Security 🔒️', 'zenpress'), 19 'category' => __('core', 'zenpress'), 20 'subcategory' => __('security', 'zenpress'), 20 21 'weight' => 0, 21 22 'preset' => [], -
zenpress/tags/2.1.0/inc/snippets/meta/disable-rss.meta.php
r3372200 r3412245 13 13 'title' => __('Disable all WordPress feeds (RDF, RSS, RSS2, Atom, and comments)', 'zenpress'), 14 14 'description' => __('Prevents access to all default feeds (RDF, RSS, RSS2, Atom, and comments). Also removes feed links from head, and redirects feed requests to the homepage. Reduces unnecessary requests and improves SEO consistency.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website'],18 'preset' => ['corporate-website'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-shortlink.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WordPress shortlink', 'zenpress'), 14 14 'description' => __('Removes shortlink functionality from both the HTML head and HTTP headers. Reduces unnecessary output, improves performance and SEO clarity.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-wlw-manifest.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WLW link', 'zenpress'), 14 14 'description' => __('Removes the WLW manifest link from the head, which was only used by the deprecated Windows Live Writer app. Reduces unnecessary metadata and improves performance.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WooCommerce cart fragments script', 'zenpress'), 14 14 'description' => __('Removes the WooCommerce cart fragments JavaScript (wc-cart-fragments), which is responsible for dynamically updating the cart contents without a page reload. Disabling this can improve performance on stores that do not require live cart updates.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WooCommerce scripts and styles on non-WooCommerce pages', 'zenpress'), 14 14 'description' => __('Dequeues WooCommerce assets on pages where WooCommerce functionality is not required, such as homepage, blog posts, or custom pages. Helps improve performance by preventing unnecessary asset loading.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php
r3372200 r3412245 13 13 'title' => __('Disable unnecessary Stripe scripts on WooCommerce pages', 'zenpress'), 14 14 'description' => __('Prevents loading of Stripe-related scripts on the product and cart pages when the "Payment Request Button Support" (PRBS) is disabled. Helps improve performance by avoiding unnecessary JavaScript loading.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-widgets.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WooCommerce widgets', 'zenpress'), 14 14 'description' => __('Unregisters default WooCommerce widgets to reduce bloat in the widget screen and improve performance by removing unused features.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/tags/2.1.0/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php
r3372200 r3412245 13 13 'title' => __('Disable XML-RPC and remove RSD link', 'zenpress'), 14 14 'description' => __('Disables XML-RPC (often targeted by brute force or DDoS attacks) and removes the RSD link from the HTML head to reduce exposure.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/hide-woocommerce-version.meta.php
r3372200 r3412245 13 13 'title' => __('Hide WooCommerce version', 'zenpress'), 14 14 'description' => __('Removes WooCommerce version info from HTTP headers and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WooCommerce versions.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/tags/2.1.0/inc/snippets/meta/hide-wordpress-version.meta.php
r3372200 r3412245 13 13 'title' => __('Hide WordPress version', 'zenpress'), 14 14 'description' => __('Removes WordPress version info from the head, generator, and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WordPress versions.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/protect-wp-login.meta.php
r3372200 r3412245 13 13 'title' => __('Protect the wp-login form from brute force attacks', 'zenpress'), 14 14 'description' => __('Removes detailed login error messages and limits failed login attempts per IP address. Blocks further attempts for a set duration after too many failures. Improves security by mitigating brute force attacks.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('tools', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php
r3372200 r3412245 13 13 'title' => __('Remove WordPress default remote block patterns', 'zenpress'), 14 14 'description' => __('Prevents WordPress from loading remote block patterns and removes the built-in core block patterns. Reduces editor clutter and improves performance by avoiding unnecessary data loading.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __(' gutenberg', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/remove-rest-api-link.meta.php
r3372200 r3412245 13 13 'title' => __('Remove REST API links', 'zenpress'), 14 14 'description' => __('Prevents WordPress from adding REST API discovery links to the head section of the site. reduces unnecessary HTML output and slightly improves performance while keeping REST API functionality available.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/inc/snippets/meta/remove-woocommerce-patterns.meta.php
r3372200 r3412245 11 11 12 12 return [ 13 'title' => __('Remove WooCommerce default remote block patterns', 'zenpress'), 14 'description' => __('Removes all WooCommerce remote block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 13 'title' => __('Remove WooCommerce default block patterns', 'zenpress'), 14 'description' => __('Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/tags/2.1.0/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php
r3372200 r3412245 13 13 'title' => __('Separate loading of core block styles', 'zenpress'), 14 14 'description' => __('Forces WordPress to load core block styles separately, improving performance by only loading the styles required for the blocks used on a page.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('gutenberg', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/tags/2.1.0/languages/zenpress.pot
r3382668 r3412245 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2. 0.4.1\n"5 "Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2.1.0\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/zenpress\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-1 0-22T14:03:43+00:00\n"12 "POT-Creation-Date: 2025-12-05T13:56:04+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 169 169 170 170 #: inc/snippets/meta/block-user-enumeration.meta.php:18 171 #: inc/snippets/meta/clean-admin-bar.meta.php:18 172 #: inc/snippets/meta/disable-adjacent-posts.meta.php:18 171 173 #: inc/snippets/meta/disable-application-passwords.meta.php:18 172 174 #: inc/snippets/meta/disable-author-archives.meta.php:18 175 #: inc/snippets/meta/disable-dns-prefetch.meta.php:18 176 #: inc/snippets/meta/disable-login-language-selector.meta.php:15 177 #: inc/snippets/meta/disable-oembed.meta.php:15 173 178 #: inc/snippets/meta/disable-pingback-trackback.meta.php:15 174 179 #: inc/snippets/meta/disable-rest-api.meta.php:19 175 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15176 #: inc/snippets/meta/hide-wordpress-version.meta.php:15177 #: inc/snippets/meta/protect-wp-login.meta.php:15178 msgid "Security 🔒️"179 msgstr ""180 181 #: inc/snippets/meta/clean-admin-bar.meta.php:13182 msgid "Clean up the WordPress admin bar"183 msgstr ""184 185 #: inc/snippets/meta/clean-admin-bar.meta.php:14186 msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface."187 msgstr ""188 189 #: inc/snippets/meta/clean-admin-bar.meta.php:18190 #: inc/snippets/meta/clean-dashboard-items.meta.php:18191 #: inc/snippets/meta/disable-login-language-selector.meta.php:15192 msgid "User interface 💻️"193 msgstr ""194 195 #: inc/snippets/meta/clean-dashboard-items.meta.php:13196 msgid "Clean up the WordPress Dashboard"197 msgstr ""198 199 #: inc/snippets/meta/clean-dashboard-items.meta.php:14200 msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability."201 msgstr ""202 203 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13204 msgid "Disable adjacent posts link tags"205 msgstr ""206 207 #: inc/snippets/meta/disable-adjacent-posts.meta.php:14208 msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance."209 msgstr ""210 211 #: inc/snippets/meta/disable-adjacent-posts.meta.php:18212 #: inc/snippets/meta/disable-dashicons.meta.php:18213 #: inc/snippets/meta/disable-dns-prefetch.meta.php:18214 #: inc/snippets/meta/disable-emoji-scripts.meta.php:18215 #: inc/snippets/meta/disable-jquery-migrate.meta.php:18216 #: inc/snippets/meta/disable-oembed.meta.php:15217 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15218 180 #: inc/snippets/meta/disable-rss.meta.php:15 219 181 #: inc/snippets/meta/disable-shortlink.meta.php:15 220 182 #: inc/snippets/meta/disable-wlw-manifest.meta.php:15 221 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15 183 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15 184 #: inc/snippets/meta/hide-wordpress-version.meta.php:15 222 185 #: inc/snippets/meta/remove-rest-api-link.meta.php:15 223 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15 224 msgid "Performance 🚀" 186 msgid "core" 187 msgstr "" 188 189 #: inc/snippets/meta/block-user-enumeration.meta.php:19 190 #: inc/snippets/meta/disable-application-passwords.meta.php:19 191 #: inc/snippets/meta/disable-author-archives.meta.php:19 192 #: inc/snippets/meta/disable-pingback-trackback.meta.php:16 193 #: inc/snippets/meta/disable-rest-api.meta.php:20 194 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:16 195 #: inc/snippets/meta/hide-woocommerce-version.meta.php:16 196 #: inc/snippets/meta/hide-wordpress-version.meta.php:16 197 #: inc/snippets/meta/protect-wp-login.meta.php:16 198 msgid "security" 199 msgstr "" 200 201 #: inc/snippets/meta/clean-admin-bar.meta.php:13 202 msgid "Clean up the WordPress admin bar" 203 msgstr "" 204 205 #: inc/snippets/meta/clean-admin-bar.meta.php:14 206 msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface." 207 msgstr "" 208 209 #: inc/snippets/meta/clean-admin-bar.meta.php:19 210 #: inc/snippets/meta/clean-dashboard-items.meta.php:19 211 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:16 212 #: inc/snippets/meta/disable-login-language-selector.meta.php:16 213 msgid "user-interface" 214 msgstr "" 215 216 #: inc/snippets/meta/clean-dashboard-items.meta.php:13 217 msgid "Clean up the WordPress Dashboard" 218 msgstr "" 219 220 #: inc/snippets/meta/clean-dashboard-items.meta.php:14 221 msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability." 222 msgstr "" 223 224 #: inc/snippets/meta/clean-dashboard-items.meta.php:18 225 msgid "ads-blocker" 226 msgstr "" 227 228 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13 229 msgid "Disable adjacent posts link tags" 230 msgstr "" 231 232 #: inc/snippets/meta/disable-adjacent-posts.meta.php:14 233 msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance." 234 msgstr "" 235 236 #: inc/snippets/meta/disable-adjacent-posts.meta.php:19 237 #: inc/snippets/meta/disable-dashicons.meta.php:19 238 #: inc/snippets/meta/disable-dns-prefetch.meta.php:19 239 #: inc/snippets/meta/disable-emoji-scripts.meta.php:19 240 #: inc/snippets/meta/disable-jquery-migrate.meta.php:19 241 #: inc/snippets/meta/disable-oembed.meta.php:16 242 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:16 243 #: inc/snippets/meta/disable-rss.meta.php:16 244 #: inc/snippets/meta/disable-shortlink.meta.php:16 245 #: inc/snippets/meta/disable-wlw-manifest.meta.php:16 246 #: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:16 247 #: inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php:16 248 #: inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php:16 249 #: inc/snippets/meta/disable-woocommerce-widgets.meta.php:16 250 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:16 251 #: inc/snippets/meta/remove-rest-api-link.meta.php:16 252 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:16 253 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:16 254 msgid "performance" 225 255 msgstr "" 226 256 … … 249 279 msgstr "" 250 280 281 #: inc/snippets/meta/disable-dashicons.meta.php:18 282 #: inc/snippets/meta/disable-emoji-scripts.meta.php:18 283 #: inc/snippets/meta/disable-jquery-migrate.meta.php:18 284 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15 285 msgid " core" 286 msgstr "" 287 288 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:13 289 msgid "Disable default pattern categories in site editor" 290 msgstr "" 291 292 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:14 293 msgid "Removes default pattern categories from the block pattern inserter in the site editor. Disables default categories: featured, about, audio, banner, buttons, call-to-action, columns, contact, footer, gallery, header, media, portfolio, posts, query, services, team, testimonials, text, videos, and any custom categories. This simplifies the interface by hiding category navigation while patterns remain accessible." 294 msgstr "" 295 296 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:15 297 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15 298 msgid "gutenberg" 299 msgstr "" 300 251 301 #: inc/snippets/meta/disable-dns-prefetch.meta.php:13 252 302 msgid "Disable DNS prefetch" … … 306 356 307 357 #: inc/snippets/meta/disable-rest-api.meta.php:14 308 msgid "Disable REST API "358 msgid "Disable REST API for visitors not logged into WordPress" 309 359 msgstr "" 310 360 … … 351 401 #: inc/snippets/meta/hide-woocommerce-version.meta.php:15 352 402 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:15 353 msgid " WooCommerce 🛒"403 msgid "woocommerce" 354 404 msgstr "" 355 405 … … 410 460 msgstr "" 411 461 462 #: inc/snippets/meta/protect-wp-login.meta.php:15 463 msgid "tools" 464 msgstr "" 465 412 466 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:13 413 467 msgid "Remove WordPress default remote block patterns" … … 418 472 msgstr "" 419 473 474 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15 475 msgid " gutenberg" 476 msgstr "" 477 420 478 #: inc/snippets/meta/remove-rest-api-link.meta.php:13 421 479 msgid "Remove REST API links" … … 427 485 428 486 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:13 429 msgid "Remove WooCommerce default remoteblock patterns"487 msgid "Remove WooCommerce default block patterns" 430 488 msgstr "" 431 489 432 490 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:14 433 msgid "Removes all WooCommerce remoteblock patterns to avoid unnecessary pattern registration in the editor."491 msgid "Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor." 434 492 msgstr "" 435 493 … … 443 501 444 502 #: assets/build/index.js:1 445 #: assets/src/ components/SaveButton.js:16503 #: assets/src/js/components/SaveButton.js:15 446 504 msgid "Save settings" 447 505 msgstr "" 448 506 449 507 #: assets/build/index.js:1 450 #: assets/src/ hooks/useSettings.js:41508 #: assets/src/js/hooks/useSettings.js:41 451 509 msgid "Failed to load settings." 452 510 msgstr "" 453 511 454 512 #: assets/build/index.js:1 455 #: assets/src/ hooks/useSettings.js:56513 #: assets/src/js/hooks/useSettings.js:56 456 514 msgid "Settings saved." 457 515 msgstr "" 458 516 459 517 #: assets/build/index.js:1 460 #: assets/src/ hooks/useSettings.js:58518 #: assets/src/js/hooks/useSettings.js:58 461 519 msgid "Failed to save settings." 462 520 msgstr "" 463 521 464 522 #: assets/build/index.js:1 465 #: assets/src/ pages/SettingsPage.js:66523 #: assets/src/js/pages/SettingsPage.js:75 466 524 msgid "Uncategorized" 467 525 msgstr "" 468 526 469 527 #: assets/build/index.js:1 470 #: assets/src/pages/SettingsPage.js:83 471 msgid "Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you." 472 msgstr "" 473 474 #: assets/build/index.js:1 475 #: assets/src/pages/SettingsPage.js:88 476 msgid "Pick a preset" 477 msgstr "" 478 479 #: assets/build/index.js:1 480 #: assets/src/pages/SettingsPage.js:96 481 msgid "Showcase website" 482 msgstr "" 483 484 #: assets/build/index.js:1 485 #: assets/src/pages/SettingsPage.js:99 528 #: assets/src/js/pages/SettingsPage.js:76 529 msgid "uncategorized" 530 msgstr "" 531 532 #: assets/build/index.js:1 533 #: assets/src/js/pages/SettingsPage.js:193 534 msgid "Enable all actions" 535 msgstr "" 536 537 #: assets/build/index.js:1 538 #: assets/src/js/pages/SettingsPage.js:196 539 msgid "Disable all actions" 540 msgstr "" 541 542 #: assets/build/index.js:1 543 #: assets/src/js/pages/SettingsPage.js:206 544 msgid "Pick configuration preset" 545 msgstr "" 546 547 #: assets/build/index.js:1 548 #: assets/src/js/pages/SettingsPage.js:208 549 msgid "Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case." 550 msgstr "" 551 552 #: assets/build/index.js:1 553 #: assets/src/js/pages/SettingsPage.js:214 554 msgid "Corporate website" 555 msgstr "" 556 557 #: assets/build/index.js:1 558 #: assets/src/js/pages/SettingsPage.js:216 559 msgid "Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives." 560 msgstr "" 561 562 #: assets/build/index.js:1 563 #: assets/src/js/pages/SettingsPage.js:226 564 #: assets/src/js/pages/SettingsPage.js:237 565 #: assets/src/js/pages/SettingsPage.js:248 566 msgid "Enable" 567 msgstr "" 568 569 #: assets/build/index.js:1 570 #: assets/src/js/pages/SettingsPage.js:229 486 571 msgid "Blog" 487 572 msgstr "" 488 573 489 574 #: assets/build/index.js:1 490 #: assets/src/pages/SettingsPage.js:102 575 #: assets/src/js/pages/SettingsPage.js:231 576 msgid "Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds." 577 msgstr "" 578 579 #: assets/build/index.js:1 580 #: assets/src/js/pages/SettingsPage.js:240 491 581 msgid "E-commerce" 492 582 msgstr "" 493 583 494 584 #: assets/build/index.js:1 495 #: assets/src/pages/SettingsPage.js:106 496 msgid "Or just enable what you need" 497 msgstr "" 498 499 #: assets/build/index.js:1 500 #: assets/src/pages/SettingsPage.js:111 501 msgid "Enable all actions" 502 msgstr "" 503 504 #: assets/build/index.js:1 505 #: assets/src/pages/SettingsPage.js:115 506 msgid "Disable all actions" 507 msgstr "" 585 #: assets/src/js/pages/SettingsPage.js:242 586 msgid "Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout." 587 msgstr "" -
zenpress/tags/2.1.0/readme.txt
r3386239 r3412245 4 4 Tags: optimization, performance, security, bloat, woocommerce 5 5 Requires at least: 6.0 6 Tested up to: 6. 87 Stable tag: 2. 0.56 Tested up to: 6.9 7 Stable tag: 2.1.0 8 8 Requires PHP: 7.4 9 9 License: GPLv2 or later … … 34 34 35 35 = Settings subpage 🧰 = 36 * Find presets to help you configure your ZenPress. 37 * Every action is documented so that you understand what you are doing and the benefits. 36 * Organized interface with vertical tabs for easy navigation between categories (Core, Gutenberg, WooCommerce, Tools). 37 * Features grouped by subcategories (Performance, Security, User Interface) with visual icons for quick identification. 38 * Three ready-to-use presets: Corporate website, Blog, and E-commerce - each optimized for specific site types. 39 * Every action is documented with descriptions so that you understand what you are doing and the benefits. 40 * Fully accessible interface with ARIA-compliant tabs and complete keyboard navigation support. 38 41 * Native WordPress interface, benefits from Gutenberg's new features and the site editor. 39 42 40 = Performance 🚀=43 = Core - Performance = 41 44 42 45 * Disable adjacent posts link tags. … … 54 57 * Separate loading of core block styles. 55 58 56 = Security 🔒️=59 = Core - Security = 57 60 58 61 * Block user enumeration. … … 65 68 * Protect the wp-login form from brute force attacks. 66 69 67 = User interface 💻️=70 = Core - User Interface = 68 71 69 72 * Clean up the WordPress admin bar. … … 71 74 * Disable the login language selector. 72 75 73 = WooCommerce 🛒=76 = WooCommerce - Performance = 74 77 * Disable WooCommerce cart fragments script. 75 78 * Disable WooCommerce scripts and styles on non-WooCommerce pages. 76 79 * Disable unnecessary Stripe scripts on WooCommerce pages. 77 80 * Disable WooCommerce widgets. 81 * Remove WooCommerce default block patterns. 82 83 = WooCommerce - Security = 78 84 * Hide WooCommerce version. 79 * Remove WooCommerce default remote block patterns. 85 86 = Gutenberg - Performance = 87 * Remove WordPress default remote block patterns. 88 * Separate loading of core block styles. 89 90 = Gutenberg - User Interface = 91 * Disable default pattern categories in site editor. 92 93 = Presets = 94 * Corporate website / Portfolio: Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives. 95 * Blog: Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds. 96 * E-commerce: Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout. 97 98 = Accessibility = 99 * Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide. 100 * Complete keyboard navigation: Arrow keys, Home, End, Space, Enter, and Tab keys fully supported. 101 * Automatic tab activation on focus for improved user experience. 102 * Proper focus management with visible focus indicators. 103 * Screen reader friendly with proper ARIA labels and roles. 80 104 81 105 == Roadmap == 82 106 83 107 = Global = 84 * New presets. 85 * Documentation pages. 86 * More context in plugin UI for actionable function. 108 * Additional presets for specific use cases. 109 * Documentation pages with detailed guides. 87 110 88 111 = Security = … … 96 119 * Disable WordPress default lazy loading. 97 120 98 = U I=121 = User Interface = 99 122 * Remove "howdy" from admin bar. 100 123 * Remove WordPress logo. … … 162 185 == Changelog == 163 186 187 = 2.1.0 = 188 - Global: Tested with WordPress 6.9. 189 - Interface: Complete redesign with vertical tabbed interface for better organization. 190 - Interface: Features now organized by categories (Core, Gutenberg, WooCommerce, Tools) and subcategories (Performance, Security, User Interface). 191 - Interface: Visual icons added to categories and subcategories for quick identification. 192 - Presets: Three ready-to-use presets with detailed descriptions (Corporate website, Blog, E-commerce). 193 - Accessibility: Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide. 194 - Accessibility: Complete keyboard navigation support (Arrow keys, Home, End, Space, Enter, Tab). 195 - Accessibility: Automatic tab activation on focus for improved user experience. 196 - Accessibility: Proper focus management with visible focus indicators. 197 - Accessibility: Screen reader friendly with proper ARIA labels and roles. 198 - Keyboard: Toggle controls now fully keyboard accessible with Enter key support. 199 - Keyboard: Added Ctrl+S / Cmd+S shortcut to save settings. 200 - Gutenberg: New actionable function: Disable default pattern categories in site editor. 201 164 202 = 2.0.5 = 165 203 - Global: Compatibility check. -
zenpress/tags/2.1.0/zenpress.php
r3386239 r3412245 12 12 * Plugin Name: ZenPress - Cleaner, Lighter, Faster WP 13 13 * Description: Easily speed up and strengthen your WordPress site by cleaning out unnecessary features and protecting weak points. 14 * Version: 2. 0.514 * Version: 2.1.0 15 15 * Plugin URI: https://wordpress.org/plugins/zenpress/ 16 16 * Author: Quentin Le Duff … … 19 19 * Domain Path: /languages/ 20 20 * Requires at least: 6.0 21 * Tested up to: 6. 821 * Tested up to: 6.9 22 22 * Requires PHP: 7.4 23 23 * License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html/ -
zenpress/trunk/assets/build/index-rtl.css
r3352459 r3412245 1 . zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}1 .components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-left:1px solid #d6e2ed;flex-direction:column;padding-left:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:right;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;left:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-right:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;right:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-right:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;right:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""} -
zenpress/trunk/assets/build/index.asset.php
r3372200 r3412245 1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => ' 64ce0d65ec54e96537a1');1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '980bfa58281a120e84d0'); -
zenpress/trunk/assets/build/index.css
r3352459 r3412245 1 . zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}1 .components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-right:1px solid #d6e2ed;flex-direction:column;padding-right:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:left;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;right:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-left:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;left:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-left:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;left:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""} -
zenpress/trunk/assets/build/index.js
r3372200 r3412245 1 (()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element, i=window.wp.i18n,a=window.wp.components,r=window.wp.apiFetch;var c=e.n(r);const o=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:n})=>(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:n,__nextHasNoMarginBottom:!0}),h=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,i.__)("Save settings","zenpress")}),u=()=>{const{removeNotice:e}=(0,o.useDispatch)(l.store),s=(0,o.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},_=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:r}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:r,createErrorNotice:p}=(0,o.useDispatch)(l.store);return(0,n.useEffect)(()=>{c()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},i={};Object.keys(n).forEach(e=>{i[e]={...n[e],"enable-snippet":t.includes(e)}}),s(i)}).catch(()=>{p((0,i.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await c()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),r((0,i.__)("Settings saved.","zenpress"))}catch{p((0,i.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[_,w]=(0,n.useState)(new Set),v=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const i=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":i}}),t}),w(new Set(j))},x={};Object.keys(e).forEach(s=>{const t=e[s],n=t?.category||(0,i.__)("Uncategorized","zenpress");x[n]||(x[n]=[]),x[n].push({name:s,data:t})});const j=Object.keys(x).sort((e,s)=>e.localeCompare(s,void 0,{sensitivity:"base"}));return(0,p.jsx)("div",{className:"zenpress-row",children:(0,p.jsxs)("div",{className:"zenpress-col",children:[(0,p.jsxs)("div",{className:"zenpress-presets",children:[(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("p",{children:(0,i.__)("Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you.","zenpress")}),(0,p.jsx)("h2",{children:(0,i.__)("Pick a preset","zenpress")})]}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("showcase-website"),__next40pxDefaultSize:!0,children:(0,i.__)("Showcase website","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("blog"),__next40pxDefaultSize:!0,children:(0,i.__)("Blog","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("ecommerce"),__next40pxDefaultSize:!0,children:(0,i.__)("E-commerce","zenpress")}),(0,p.jsx)("div",{className:"zenpress-presets-description",children:(0,p.jsx)("h2",{children:(0,i.__)("Or just enable what you need","zenpress")})}),(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s}),w(new Set(j))},__next40pxDefaultSize:!0,children:(0,i.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,i.__)("Disable all actions","zenpress")})]})]}),j.map(e=>(0,p.jsx)(a.Panel,{children:(0,p.jsx)(a.PanelBody,{title:e,initialOpen:_.has(e),children:x[e].map(({name:e,data:t})=>(0,p.jsx)(a.PanelRow,{children:(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""})},e))})},e)),(0,p.jsx)("div",{className:"zenpress-actions",children:(0,p.jsx)(h,{onClick:t,isBusy:r})}),(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(u,{})})]})})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(_,{}))})})();1 (()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element,r=window.wp.i18n,a=window.wp.components,i=window.wp.apiFetch;var o=e.n(i);const c=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:r})=>{const i=(0,n.useRef)(null);return(0,n.useEffect)(()=>((e,s)=>{if(!e)return;const t=t=>{if("Enter"===t.key){const n=e.querySelector('input[type="checkbox"]');n&&(document.activeElement===n||e.contains(document.activeElement))&&(t.preventDefault(),t.stopPropagation(),s())}};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}})(i.current,t),[t]),(0,p.jsx)("div",{ref:i,children:(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:r,__nextHasNoMarginBottom:!0})})},u=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,r.__)("Save settings","zenpress")}),b=()=>{const{removeNotice:e}=(0,c.useDispatch)(l.store),s=(0,c.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},h=(0,n.createContext)(),f=({selectedTabId:e,onSelect:s,orientation:t="horizontal",children:r})=>{const[a,i]=(0,n.useState)(),o=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,p.jsx)(h.Provider,{value:{selectedTabId:c,onSelect:t=>{void 0===e&&i(t),s?.(t)},orientation:t,getOrderedTabIds:()=>o.current?Array.from(o.current.querySelectorAll('[role="tab"]')).map(e=>{const s=e.getAttribute("id");return s?s.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:o},children:(0,p.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${t}`,children:r})})};f.TabList=({children:e})=>{const{orientation:s,tabListRef:t}=(0,n.useContext)(h);return(0,p.jsx)("div",{ref:t,className:`zenpress-tabs__list zenpress-tabs__list--${s}`,role:"tablist","aria-orientation":s,children:e})},f.Tab=({tabId:e,title:s,className:t="",children:r})=>{const{selectedTabId:a,onSelect:i,orientation:o,getOrderedTabIds:c}=(0,n.useContext)(h),l=a===e,d=(0,n.useRef)(null);return(0,p.jsx)("button",{ref:d,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${t}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>i(e),onKeyDown:s=>{const t=c();if(!t||0===t.length)return;const n=t.indexOf(e);if(-1===n)return;let r=n;if("vertical"===o?"ArrowDown"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowUp"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1):"ArrowRight"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowLeft"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1),"Home"===s.key?(s.preventDefault(),r=0):"End"===s.key&&(s.preventDefault(),r=t.length-1)," "===s.key||"Enter"===s.key)return s.preventDefault(),void i(e);if(r!==n&&r>=0&&r<t.length){const e=t[r],s=document.getElementById(`zenpress-tab-${e}`);s&&(s.focus(),i(e))}},onFocus:()=>{l||i(e)},children:s||r})},f.TabPanel=({tabId:e,children:s})=>{const{selectedTabId:t}=(0,n.useContext)(h),r=(0,n.useRef)(null),a=t===e;return(0,n.useEffect)(()=>{a&&r.current&&(0===r.current.querySelectorAll('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"]), input:not([disabled]), select:not([disabled]), textarea:not([disabled])').length?r.current.setAttribute("tabindex","0"):r.current.removeAttribute("tabindex"))},[a]),a?(0,p.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:s}):(0,p.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:s})};const x=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:i}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:i,createErrorNotice:p}=(0,c.useDispatch)(l.store);return(0,n.useEffect)(()=>{o()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},r={};Object.keys(n).forEach(e=>{r[e]={...n[e],"enable-snippet":t.includes(e)}}),s(r)}).catch(()=>{p((0,r.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await o()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),i((0,r.__)("Settings saved.","zenpress"))}catch{p((0,r.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[h,x]=(0,n.useState)(),_=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":r}}),t})},m=e=>e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e,v=["core","gutenberg","woocommerce","ads-blocker","tools"],y={};Object.keys(e).forEach(s=>{const t=e[s],n=(t?.category||(0,r.__)("Uncategorized","zenpress")).toLowerCase(),a=(t?.subcategory||(0,r.__)("uncategorized","zenpress")).toLowerCase();y[n]||(y[n]={}),y[n][a]||(y[n][a]=[]),y[n][a].push({name:s,data:t})});const z=Object.keys(y).sort((e,s)=>{const t=v.indexOf(e.toLowerCase()),n=v.indexOf(s.toLowerCase());return-1!==t&&-1!==n?t-n:-1!==t?-1:-1!==n?1:e.localeCompare(s,void 0,{sensitivity:"base"})});return(0,n.useEffect)(()=>{!h&&z.length>0&&x(z[0])},[h,z.length]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),i||t())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[t,i]),(0,p.jsxs)("article",{className:"zenpress-row",children:[(0,p.jsxs)("section",{className:"zenpress-main",children:[(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(b,{})}),(0,p.jsxs)("div",{className:"zenpress-panel",children:[(0,p.jsxs)(f,{orientation:"vertical",selectedTabId:h,onSelect:e=>{x(e),x(e)},children:[(0,p.jsx)(f.TabList,{children:z.map(e=>{const s=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,p.jsx)(f.Tab,{tabId:e,title:m(e),className:s,children:m(e)},e)})}),z.map(e=>{const t=Object.keys(y[e]).sort();return(0,p.jsxs)(f.TabPanel,{tabId:e,children:[(0,p.jsx)("h2",{children:m(e)}),t.map(t=>(0,p.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${t.toLowerCase().replace(/\s+/g,"-")}`,children:[(0,p.jsx)("hr",{}),(0,p.jsx)("h3",{children:m(t)}),y[e][t].map(({name:e,data:t})=>(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""},e))]},t))]},e)})]}),(0,p.jsxs)("div",{className:"zenpress-actions",children:[(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"tertiary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Disable all actions","zenpress")})]}),(0,p.jsx)(u,{onClick:t,isBusy:i})]})]})]}),(0,p.jsx)("aside",{className:"zenpress-sidebar",children:(0,p.jsx)("div",{className:"zenpress-presets",children:(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("h2",{children:(0,r.__)("Pick configuration preset","zenpress")}),(0,p.jsx)("p",{children:(0,r.__)("Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case.","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🖼️ ",(0,r.__)("Corporate website","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("corporate-website"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:[" 📰 ",(0,r.__)("Blog","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("blog"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🛒 ",(0,r.__)("E-commerce","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("ecommerce"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")})]})})})]})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(x,{}))})})(); -
zenpress/trunk/assets/src/index.js
r3372200 r3412245 2 2 import { createRoot } from '@wordpress/element'; 3 3 import './index.scss'; 4 import { SettingsPage } from './ pages/SettingsPage';4 import { SettingsPage } from './js/pages/SettingsPage'; 5 5 6 6 /** … … 8 8 */ 9 9 domReady(() => { 10 const rootEl = document.getElementById('zenpress-settings');11 if (!rootEl) return;10 const rootEl = document.getElementById('zenpress-settings'); 11 if (!rootEl) return; 12 12 13 const root = createRoot(rootEl);14 root.render(<SettingsPage />);13 const root = createRoot(rootEl); 14 root.render(<SettingsPage />); 15 15 }); -
zenpress/trunk/assets/src/index.scss
r3372200 r3412245 1 .zenpress { 2 &-loading { 3 width: 100%; 4 max-width: 900px; 5 margin: 20px auto; 6 } 1 @use 'scss/abstracts/variables'; 7 2 8 &-dashboard-wrap { 9 a:not(.components-button) { 10 color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)); 3 @use 'scss/base/typography'; 11 4 12 &[target='_blank'] { 13 position: relative; 14 gap: 4px; 5 @use 'scss/components/button'; 6 @use 'scss/components/notice'; 7 @use 'scss/components/tabs'; 8 @use 'scss/components/toggle-control'; 15 9 16 &::after { 17 content: ' ↗'; 18 } 19 } 20 } 21 22 .components-button { 23 gap: 4px; 24 } 25 26 .components-panel { 27 width: 100%; 28 margin: 0 auto 20px auto; 29 max-width: 100%; 30 31 &__body { 32 &-title { 33 text-transform: capitalize; 34 } 35 36 &-toggle { 37 border-bottom: 1px solid #d6e2ed; 38 text-transform: capitalize; 39 } 40 } 41 } 42 43 .components-toggle-control { 44 &__help { 45 font-size: 1.1em; 46 } 47 } 48 49 .components-notice-list { 50 width: 100%; 51 margin-bottom: 20px; 52 } 53 } 54 55 &-row { 56 display: grid; 57 grid-template-columns: 1fr; 58 gap: 40px; 59 width: 100%; 60 max-width: 920px; 61 margin: 0 auto; 62 } 63 64 &-actions { 65 display: flex; 66 flex-wrap: wrap; 67 gap: 20px; 68 justify-content: space-between; 69 align-items: center; 70 margin-bottom: 20px; 71 72 &-bulk { 73 display: flex; 74 flex-wrap: wrap; 75 gap: 10px; 76 justify-content: flex-start; 77 align-items: center; 78 } 79 } 80 81 &-presets { 82 display: flex; 83 flex-wrap: wrap; 84 gap: 10px; 85 justify-content: flex-start; 86 align-items: center; 87 margin-bottom: 20px; 88 89 &-description { 90 flex: 100%; 91 width: 100%; 92 max-width: 100%; 93 } 94 } 95 96 &-header { 97 align-items: center; 98 display: flex; 99 flex-wrap: wrap; 100 justify-content: space-between; 101 overflow-x: auto; 102 padding: 16px; 103 margin: 0 0 20px 0; 104 gap: 40px; 105 background: #fff; 106 border: 1px solid #e0e0e0; 107 108 &-navigation { 109 display: flex; 110 flex-wrap: wrap; 111 gap: 20px; 112 justify-content: space-between; 113 align-items: center; 114 } 115 116 h1, 117 p { 118 margin: 0; 119 padding: 0; 120 } 121 } 122 123 &-footer { 124 align-items: center; 125 display: flex; 126 flex-wrap: wrap; 127 justify-content: space-between; 128 overflow-x: auto; 129 padding: 16px; 130 margin: 0 0 20px 0; 131 gap: 40px; 132 border-top: 1px solid #e0e0e0; 133 padding-top: 32px; 134 135 &-navigation { 136 display: flex; 137 flex-wrap: wrap; 138 gap: 20px; 139 justify-content: space-between; 140 align-items: center; 141 } 142 143 p { 144 margin: 0; 145 padding: 0; 146 } 147 } 148 } 10 @use 'scss/pages/settings'; -
zenpress/trunk/inc/admin/menu.php
r3372200 r3412245 31 31 ?> 32 32 <div class="wrap zenpress-dashboard-wrap"> 33 < divclass="zenpress-header">33 <header class="zenpress-header"> 34 34 <div class="zenpress-header-title"> 35 35 <h1><?php echo esc_html__('ZenPress', 'zenpress'); ?></h1> … … 67 67 </a> 68 68 </div> 69 </ div>70 < divid="zenpress-settings" class="zenpress-settings">69 </header> 70 <main id="zenpress-settings" class="zenpress-settings"> 71 71 <div class="zenpress-loading card"> 72 72 <div class="zenpress-loading-body"> … … 76 76 </div> 77 77 </div> 78 </ div>79 < divclass="zenpress-footer">78 </main> 79 <footer class="zenpress-footer"> 80 80 <div class="zenpress-footer-title"> 81 81 <p> … … 99 99 </a> 100 100 </div> 101 </ div>101 </footer> 102 102 </div> 103 103 <?php -
zenpress/trunk/inc/core/metadata.php
r3372200 r3412245 16 16 'description' => '', 17 17 'category' => '', 18 'subcategory' => '', 18 19 'weight' => 0, 19 20 'preset' => [] … … 28 29 'description' => sanitize_text_field($metadata['description']), 29 30 'category' => sanitize_text_field($metadata['category']), 31 'subcategory' => sanitize_text_field($metadata['subcategory']), 30 32 'weight' => (int) $metadata['weight'], 31 33 'preset' => array_map('sanitize_text_field', (array) $metadata['preset']) -
zenpress/trunk/inc/snippets/functions/disable-rest-api.php
r3382662 r3412245 23 23 function zenpress_disable_wp_rest_api($access) { 24 24 if (!is_user_logged_in() && !zenpress_disable_wp_rest_api_allow_access()) { 25 $message = apply_filters(' disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress'));25 $message = apply_filters('zenpress_disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress')); 26 26 27 27 return new WP_Error('rest_login_required', $message, ['status' => rest_authorization_required_code()]); … … 32 32 33 33 function zenpress_disable_wp_rest_api_allow_access() { 34 $post_var = apply_filters(' disable_wp_rest_api_post_var', false);35 $server_var = apply_filters(' disable_wp_rest_api_server_var', false);34 $post_var = apply_filters('zenpress_disable_wp_rest_api_post_var', false); 35 $server_var = apply_filters('zenpress_disable_wp_rest_api_server_var', false); 36 36 37 37 if (!empty($post_var)) { 38 38 if (is_array($post_var)) { 39 39 foreach($post_var as $var) { 40 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations 40 41 if (isset($_POST[$var]) && !empty($_POST[$var])) { 41 42 return true; … … 43 44 } 44 45 } else { 46 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations 45 47 if (isset($_POST[$post_var]) && !empty($_POST[$post_var])) { 46 48 return true; -
zenpress/trunk/inc/snippets/functions/remove-woocommerce-patterns.php
r3372200 r3412245 5 5 } 6 6 7 // Only proceed if WooCommerce is active 8 if (!class_exists('WooCommerce')) { 9 return; 10 } 11 7 12 use Automattic\WooCommerce\Blocks\Package; 8 13 9 14 add_action('woocommerce_blocks_loaded', static function (): void { 10 remove_action( 11 'init', 12 [ 13 Package::container()->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class), 14 'register_block_patterns', 15 ] 16 ); 15 // Check if required classes exist before accessing them 16 if (!class_exists(Package::class) || !class_exists(\Automattic\WooCommerce\Blocks\BlockPatterns::class)) { 17 return; 18 } 19 20 try { 21 $container = Package::container(); 22 if (!$container) { 23 return; 24 } 25 26 $block_patterns = $container->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class); 27 if ($block_patterns && method_exists($block_patterns, 'register_block_patterns')) { 28 remove_action( 29 'init', 30 [$block_patterns, 'register_block_patterns'] 31 ); 32 } 33 } catch (\Exception $e) { 34 // Silently fail if container or class is not available 35 return; 36 } 17 37 }); 38 39 add_action('init', static function() { 40 if (!class_exists('WP_Block_Patterns_Registry')) { 41 return; 42 } 43 44 $all_patterns = WP_Block_Patterns_Registry::get_instance()->get_all_registered(); 45 foreach ($all_patterns as $pattern) { 46 if (isset($pattern['name'])) { 47 // Use str_starts_with() for PHP 8.0+, fallback to strpos() for older versions 48 $is_woocommerce_pattern = function_exists('str_starts_with') 49 ? str_starts_with($pattern['name'], 'woocommerce-blocks') 50 : strpos($pattern['name'], 'woocommerce-blocks') === 0; 51 52 if ($is_woocommerce_pattern) { 53 unregister_block_pattern($pattern['name']); 54 } 55 } 56 } 57 }, 20); 58 59 /** 60 * Disables the WooCommerce Pattern Toolkit Full Composability feature. 61 * 62 * This feature is a flag for advanced block patterns functionality, which can 63 * sometimes be tied to large transients/caching issues. 64 */ 65 add_filter('woocommerce_admin_features', static function($features) { 66 // Ensure $features is an array 67 if (!is_array($features)) { 68 return $features; 69 } 70 71 $feature_to_disable = 'pattern-toolkit-full-composability'; 72 73 // Find the feature's identifier in the array and remove it. 74 $key = array_search($feature_to_disable, $features, true); 75 if ($key !== false) { 76 unset($features[$key]); 77 } 78 79 return $features; 80 }); -
zenpress/trunk/inc/snippets/meta/block-user-enumeration.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Security 🔒️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('security', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/clean-admin-bar.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('User interface 💻️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('user-interface', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/clean-dashboard-items.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('User interface 💻️', 'zenpress'), 18 'category' => __('ads-blocker', 'zenpress'), 19 'subcategory' => __('user-interface', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-adjacent-posts.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'ecommerce'],21 'preset' => ['corporate-website', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-application-passwords.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Security 🔒️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('security', 'zenpress'), 19 20 'weight' => 0, 20 21 'preset' => [''], -
zenpress/trunk/inc/snippets/meta/disable-author-archives.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Security 🔒️', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('security', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'ecommerce'],21 'preset' => ['corporate-website', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-dashicons.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __(' core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-dns-prefetch.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __('core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-emoji-scripts.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __(' core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-jquery-migrate.meta.php
r3372200 r3412245 16 16 'zenpress' 17 17 ), 18 'category' => __('Performance 🚀', 'zenpress'), 18 'category' => __(' core', 'zenpress'), 19 'subcategory' => __('performance', 'zenpress'), 19 20 'weight' => 0, 20 'preset' => [' showcase-website', 'blog', 'ecommerce'],21 'preset' => ['corporate-website', 'blog', 'ecommerce'], 21 22 ]; -
zenpress/trunk/inc/snippets/meta/disable-login-language-selector.meta.php
r3372200 r3412245 13 13 'title' => __('Disable the login language selector', 'zenpress'), 14 14 'description' => __('Removes the language dropdown from the WordPress login page. Simplifies login screen and reduces distractions.', 'zenpress'), 15 'category' => __('User interface 💻️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('user-interface', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-oembed.meta.php
r3372200 r3412245 13 13 'title' => __('Disable oEmbed', 'zenpress'), 14 14 'description' => __('Removes WordPress oEmbed features such as auto-discovery, REST API routes, TinyMCE integration, and the wp-embed script. Reduces API calls, improves performance, and limits unnecessary external requests.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-pdf-thumbnails.meta.php
r3372200 r3412245 13 13 'title' => __('Disable PDF thumbnails', 'zenpress'), 14 14 'description' => __('Prevents WordPress from generating thumbnails for uploaded PDF files by removing fallback image sizes. saves storage space and improves performance by avoiding unnecessary image generation.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __(' core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-pingback-trackback.meta.php
r3372200 r3412245 13 13 'title' => __('Disable pingback and trackback', 'zenpress'), 14 14 'description' => __('Removes the X-Pingback header, disables pingbacks and trackbacks on new posts, and prevents self-pingbacks. reduces spam, blocks potential DDoS vectors, and slightly improves performance by avoiding useless requests.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-rest-api.meta.php
r3382662 r3412245 12 12 13 13 return [ 14 'title' => __('Disable REST API ', 'zenpress'),14 'title' => __('Disable REST API for visitors not logged into WordPress', 'zenpress'), 15 15 'description' => __( 16 16 'Disable the WP REST API for visitors not logged into WordPress.', 17 17 'zenpress' 18 18 ), 19 'category' => __('Security 🔒️', 'zenpress'), 19 'category' => __('core', 'zenpress'), 20 'subcategory' => __('security', 'zenpress'), 20 21 'weight' => 0, 21 22 'preset' => [], -
zenpress/trunk/inc/snippets/meta/disable-rss.meta.php
r3372200 r3412245 13 13 'title' => __('Disable all WordPress feeds (RDF, RSS, RSS2, Atom, and comments)', 'zenpress'), 14 14 'description' => __('Prevents access to all default feeds (RDF, RSS, RSS2, Atom, and comments). Also removes feed links from head, and redirects feed requests to the homepage. Reduces unnecessary requests and improves SEO consistency.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website'],18 'preset' => ['corporate-website'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-shortlink.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WordPress shortlink', 'zenpress'), 14 14 'description' => __('Removes shortlink functionality from both the HTML head and HTTP headers. Reduces unnecessary output, improves performance and SEO clarity.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-wlw-manifest.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WLW link', 'zenpress'), 14 14 'description' => __('Removes the WLW manifest link from the head, which was only used by the deprecated Windows Live Writer app. Reduces unnecessary metadata and improves performance.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WooCommerce cart fragments script', 'zenpress'), 14 14 'description' => __('Removes the WooCommerce cart fragments JavaScript (wc-cart-fragments), which is responsible for dynamically updating the cart contents without a page reload. Disabling this can improve performance on stores that do not require live cart updates.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WooCommerce scripts and styles on non-WooCommerce pages', 'zenpress'), 14 14 'description' => __('Dequeues WooCommerce assets on pages where WooCommerce functionality is not required, such as homepage, blog posts, or custom pages. Helps improve performance by preventing unnecessary asset loading.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php
r3372200 r3412245 13 13 'title' => __('Disable unnecessary Stripe scripts on WooCommerce pages', 'zenpress'), 14 14 'description' => __('Prevents loading of Stripe-related scripts on the product and cart pages when the "Payment Request Button Support" (PRBS) is disabled. Helps improve performance by avoiding unnecessary JavaScript loading.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-widgets.meta.php
r3372200 r3412245 13 13 'title' => __('Disable WooCommerce widgets', 'zenpress'), 14 14 'description' => __('Unregisters default WooCommerce widgets to reduce bloat in the widget screen and improve performance by removing unused features.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/trunk/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php
r3372200 r3412245 13 13 'title' => __('Disable XML-RPC and remove RSD link', 'zenpress'), 14 14 'description' => __('Disables XML-RPC (often targeted by brute force or DDoS attacks) and removes the RSD link from the HTML head to reduce exposure.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/hide-woocommerce-version.meta.php
r3372200 r3412245 13 13 'title' => __('Hide WooCommerce version', 'zenpress'), 14 14 'description' => __('Removes WooCommerce version info from HTTP headers and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WooCommerce versions.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/trunk/inc/snippets/meta/hide-wordpress-version.meta.php
r3372200 r3412245 13 13 'title' => __('Hide WordPress version', 'zenpress'), 14 14 'description' => __('Removes WordPress version info from the head, generator, and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WordPress versions.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/protect-wp-login.meta.php
r3372200 r3412245 13 13 'title' => __('Protect the wp-login form from brute force attacks', 'zenpress'), 14 14 'description' => __('Removes detailed login error messages and limits failed login attempts per IP address. Blocks further attempts for a set duration after too many failures. Improves security by mitigating brute force attacks.', 'zenpress'), 15 'category' => __('Security 🔒️', 'zenpress'), 15 'category' => __('tools', 'zenpress'), 16 'subcategory' => __('security', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php
r3372200 r3412245 13 13 'title' => __('Remove WordPress default remote block patterns', 'zenpress'), 14 14 'description' => __('Prevents WordPress from loading remote block patterns and removes the built-in core block patterns. Reduces editor clutter and improves performance by avoiding unnecessary data loading.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __(' gutenberg', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/remove-rest-api-link.meta.php
r3372200 r3412245 13 13 'title' => __('Remove REST API links', 'zenpress'), 14 14 'description' => __('Prevents WordPress from adding REST API discovery links to the head section of the site. reduces unnecessary HTML output and slightly improves performance while keeping REST API functionality available.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('core', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/inc/snippets/meta/remove-woocommerce-patterns.meta.php
r3372200 r3412245 11 11 12 12 return [ 13 'title' => __('Remove WooCommerce default remote block patterns', 'zenpress'), 14 'description' => __('Removes all WooCommerce remote block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'), 15 'category' => __('WooCommerce 🛒', 'zenpress'), 13 'title' => __('Remove WooCommerce default block patterns', 'zenpress'), 14 'description' => __('Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'), 15 'category' => __('woocommerce', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 18 'preset' => ['ecommerce'], -
zenpress/trunk/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php
r3372200 r3412245 13 13 'title' => __('Separate loading of core block styles', 'zenpress'), 14 14 'description' => __('Forces WordPress to load core block styles separately, improving performance by only loading the styles required for the blocks used on a page.', 'zenpress'), 15 'category' => __('Performance 🚀', 'zenpress'), 15 'category' => __('gutenberg', 'zenpress'), 16 'subcategory' => __('performance', 'zenpress'), 16 17 'weight' => 0, 17 'preset' => [' showcase-website', 'blog', 'ecommerce'],18 'preset' => ['corporate-website', 'blog', 'ecommerce'], 18 19 ]; -
zenpress/trunk/languages/zenpress.pot
r3382668 r3412245 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2. 0.4.1\n"5 "Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2.1.0\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/zenpress\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-1 0-22T14:03:43+00:00\n"12 "POT-Creation-Date: 2025-12-05T13:56:04+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 169 169 170 170 #: inc/snippets/meta/block-user-enumeration.meta.php:18 171 #: inc/snippets/meta/clean-admin-bar.meta.php:18 172 #: inc/snippets/meta/disable-adjacent-posts.meta.php:18 171 173 #: inc/snippets/meta/disable-application-passwords.meta.php:18 172 174 #: inc/snippets/meta/disable-author-archives.meta.php:18 175 #: inc/snippets/meta/disable-dns-prefetch.meta.php:18 176 #: inc/snippets/meta/disable-login-language-selector.meta.php:15 177 #: inc/snippets/meta/disable-oembed.meta.php:15 173 178 #: inc/snippets/meta/disable-pingback-trackback.meta.php:15 174 179 #: inc/snippets/meta/disable-rest-api.meta.php:19 175 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15176 #: inc/snippets/meta/hide-wordpress-version.meta.php:15177 #: inc/snippets/meta/protect-wp-login.meta.php:15178 msgid "Security 🔒️"179 msgstr ""180 181 #: inc/snippets/meta/clean-admin-bar.meta.php:13182 msgid "Clean up the WordPress admin bar"183 msgstr ""184 185 #: inc/snippets/meta/clean-admin-bar.meta.php:14186 msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface."187 msgstr ""188 189 #: inc/snippets/meta/clean-admin-bar.meta.php:18190 #: inc/snippets/meta/clean-dashboard-items.meta.php:18191 #: inc/snippets/meta/disable-login-language-selector.meta.php:15192 msgid "User interface 💻️"193 msgstr ""194 195 #: inc/snippets/meta/clean-dashboard-items.meta.php:13196 msgid "Clean up the WordPress Dashboard"197 msgstr ""198 199 #: inc/snippets/meta/clean-dashboard-items.meta.php:14200 msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability."201 msgstr ""202 203 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13204 msgid "Disable adjacent posts link tags"205 msgstr ""206 207 #: inc/snippets/meta/disable-adjacent-posts.meta.php:14208 msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance."209 msgstr ""210 211 #: inc/snippets/meta/disable-adjacent-posts.meta.php:18212 #: inc/snippets/meta/disable-dashicons.meta.php:18213 #: inc/snippets/meta/disable-dns-prefetch.meta.php:18214 #: inc/snippets/meta/disable-emoji-scripts.meta.php:18215 #: inc/snippets/meta/disable-jquery-migrate.meta.php:18216 #: inc/snippets/meta/disable-oembed.meta.php:15217 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15218 180 #: inc/snippets/meta/disable-rss.meta.php:15 219 181 #: inc/snippets/meta/disable-shortlink.meta.php:15 220 182 #: inc/snippets/meta/disable-wlw-manifest.meta.php:15 221 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15 183 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15 184 #: inc/snippets/meta/hide-wordpress-version.meta.php:15 222 185 #: inc/snippets/meta/remove-rest-api-link.meta.php:15 223 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15 224 msgid "Performance 🚀" 186 msgid "core" 187 msgstr "" 188 189 #: inc/snippets/meta/block-user-enumeration.meta.php:19 190 #: inc/snippets/meta/disable-application-passwords.meta.php:19 191 #: inc/snippets/meta/disable-author-archives.meta.php:19 192 #: inc/snippets/meta/disable-pingback-trackback.meta.php:16 193 #: inc/snippets/meta/disable-rest-api.meta.php:20 194 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:16 195 #: inc/snippets/meta/hide-woocommerce-version.meta.php:16 196 #: inc/snippets/meta/hide-wordpress-version.meta.php:16 197 #: inc/snippets/meta/protect-wp-login.meta.php:16 198 msgid "security" 199 msgstr "" 200 201 #: inc/snippets/meta/clean-admin-bar.meta.php:13 202 msgid "Clean up the WordPress admin bar" 203 msgstr "" 204 205 #: inc/snippets/meta/clean-admin-bar.meta.php:14 206 msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface." 207 msgstr "" 208 209 #: inc/snippets/meta/clean-admin-bar.meta.php:19 210 #: inc/snippets/meta/clean-dashboard-items.meta.php:19 211 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:16 212 #: inc/snippets/meta/disable-login-language-selector.meta.php:16 213 msgid "user-interface" 214 msgstr "" 215 216 #: inc/snippets/meta/clean-dashboard-items.meta.php:13 217 msgid "Clean up the WordPress Dashboard" 218 msgstr "" 219 220 #: inc/snippets/meta/clean-dashboard-items.meta.php:14 221 msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability." 222 msgstr "" 223 224 #: inc/snippets/meta/clean-dashboard-items.meta.php:18 225 msgid "ads-blocker" 226 msgstr "" 227 228 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13 229 msgid "Disable adjacent posts link tags" 230 msgstr "" 231 232 #: inc/snippets/meta/disable-adjacent-posts.meta.php:14 233 msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance." 234 msgstr "" 235 236 #: inc/snippets/meta/disable-adjacent-posts.meta.php:19 237 #: inc/snippets/meta/disable-dashicons.meta.php:19 238 #: inc/snippets/meta/disable-dns-prefetch.meta.php:19 239 #: inc/snippets/meta/disable-emoji-scripts.meta.php:19 240 #: inc/snippets/meta/disable-jquery-migrate.meta.php:19 241 #: inc/snippets/meta/disable-oembed.meta.php:16 242 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:16 243 #: inc/snippets/meta/disable-rss.meta.php:16 244 #: inc/snippets/meta/disable-shortlink.meta.php:16 245 #: inc/snippets/meta/disable-wlw-manifest.meta.php:16 246 #: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:16 247 #: inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php:16 248 #: inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php:16 249 #: inc/snippets/meta/disable-woocommerce-widgets.meta.php:16 250 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:16 251 #: inc/snippets/meta/remove-rest-api-link.meta.php:16 252 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:16 253 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:16 254 msgid "performance" 225 255 msgstr "" 226 256 … … 249 279 msgstr "" 250 280 281 #: inc/snippets/meta/disable-dashicons.meta.php:18 282 #: inc/snippets/meta/disable-emoji-scripts.meta.php:18 283 #: inc/snippets/meta/disable-jquery-migrate.meta.php:18 284 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15 285 msgid " core" 286 msgstr "" 287 288 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:13 289 msgid "Disable default pattern categories in site editor" 290 msgstr "" 291 292 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:14 293 msgid "Removes default pattern categories from the block pattern inserter in the site editor. Disables default categories: featured, about, audio, banner, buttons, call-to-action, columns, contact, footer, gallery, header, media, portfolio, posts, query, services, team, testimonials, text, videos, and any custom categories. This simplifies the interface by hiding category navigation while patterns remain accessible." 294 msgstr "" 295 296 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:15 297 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15 298 msgid "gutenberg" 299 msgstr "" 300 251 301 #: inc/snippets/meta/disable-dns-prefetch.meta.php:13 252 302 msgid "Disable DNS prefetch" … … 306 356 307 357 #: inc/snippets/meta/disable-rest-api.meta.php:14 308 msgid "Disable REST API "358 msgid "Disable REST API for visitors not logged into WordPress" 309 359 msgstr "" 310 360 … … 351 401 #: inc/snippets/meta/hide-woocommerce-version.meta.php:15 352 402 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:15 353 msgid " WooCommerce 🛒"403 msgid "woocommerce" 354 404 msgstr "" 355 405 … … 410 460 msgstr "" 411 461 462 #: inc/snippets/meta/protect-wp-login.meta.php:15 463 msgid "tools" 464 msgstr "" 465 412 466 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:13 413 467 msgid "Remove WordPress default remote block patterns" … … 418 472 msgstr "" 419 473 474 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15 475 msgid " gutenberg" 476 msgstr "" 477 420 478 #: inc/snippets/meta/remove-rest-api-link.meta.php:13 421 479 msgid "Remove REST API links" … … 427 485 428 486 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:13 429 msgid "Remove WooCommerce default remoteblock patterns"487 msgid "Remove WooCommerce default block patterns" 430 488 msgstr "" 431 489 432 490 #: inc/snippets/meta/remove-woocommerce-patterns.meta.php:14 433 msgid "Removes all WooCommerce remoteblock patterns to avoid unnecessary pattern registration in the editor."491 msgid "Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor." 434 492 msgstr "" 435 493 … … 443 501 444 502 #: assets/build/index.js:1 445 #: assets/src/ components/SaveButton.js:16503 #: assets/src/js/components/SaveButton.js:15 446 504 msgid "Save settings" 447 505 msgstr "" 448 506 449 507 #: assets/build/index.js:1 450 #: assets/src/ hooks/useSettings.js:41508 #: assets/src/js/hooks/useSettings.js:41 451 509 msgid "Failed to load settings." 452 510 msgstr "" 453 511 454 512 #: assets/build/index.js:1 455 #: assets/src/ hooks/useSettings.js:56513 #: assets/src/js/hooks/useSettings.js:56 456 514 msgid "Settings saved." 457 515 msgstr "" 458 516 459 517 #: assets/build/index.js:1 460 #: assets/src/ hooks/useSettings.js:58518 #: assets/src/js/hooks/useSettings.js:58 461 519 msgid "Failed to save settings." 462 520 msgstr "" 463 521 464 522 #: assets/build/index.js:1 465 #: assets/src/ pages/SettingsPage.js:66523 #: assets/src/js/pages/SettingsPage.js:75 466 524 msgid "Uncategorized" 467 525 msgstr "" 468 526 469 527 #: assets/build/index.js:1 470 #: assets/src/pages/SettingsPage.js:83 471 msgid "Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you." 472 msgstr "" 473 474 #: assets/build/index.js:1 475 #: assets/src/pages/SettingsPage.js:88 476 msgid "Pick a preset" 477 msgstr "" 478 479 #: assets/build/index.js:1 480 #: assets/src/pages/SettingsPage.js:96 481 msgid "Showcase website" 482 msgstr "" 483 484 #: assets/build/index.js:1 485 #: assets/src/pages/SettingsPage.js:99 528 #: assets/src/js/pages/SettingsPage.js:76 529 msgid "uncategorized" 530 msgstr "" 531 532 #: assets/build/index.js:1 533 #: assets/src/js/pages/SettingsPage.js:193 534 msgid "Enable all actions" 535 msgstr "" 536 537 #: assets/build/index.js:1 538 #: assets/src/js/pages/SettingsPage.js:196 539 msgid "Disable all actions" 540 msgstr "" 541 542 #: assets/build/index.js:1 543 #: assets/src/js/pages/SettingsPage.js:206 544 msgid "Pick configuration preset" 545 msgstr "" 546 547 #: assets/build/index.js:1 548 #: assets/src/js/pages/SettingsPage.js:208 549 msgid "Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case." 550 msgstr "" 551 552 #: assets/build/index.js:1 553 #: assets/src/js/pages/SettingsPage.js:214 554 msgid "Corporate website" 555 msgstr "" 556 557 #: assets/build/index.js:1 558 #: assets/src/js/pages/SettingsPage.js:216 559 msgid "Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives." 560 msgstr "" 561 562 #: assets/build/index.js:1 563 #: assets/src/js/pages/SettingsPage.js:226 564 #: assets/src/js/pages/SettingsPage.js:237 565 #: assets/src/js/pages/SettingsPage.js:248 566 msgid "Enable" 567 msgstr "" 568 569 #: assets/build/index.js:1 570 #: assets/src/js/pages/SettingsPage.js:229 486 571 msgid "Blog" 487 572 msgstr "" 488 573 489 574 #: assets/build/index.js:1 490 #: assets/src/pages/SettingsPage.js:102 575 #: assets/src/js/pages/SettingsPage.js:231 576 msgid "Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds." 577 msgstr "" 578 579 #: assets/build/index.js:1 580 #: assets/src/js/pages/SettingsPage.js:240 491 581 msgid "E-commerce" 492 582 msgstr "" 493 583 494 584 #: assets/build/index.js:1 495 #: assets/src/pages/SettingsPage.js:106 496 msgid "Or just enable what you need" 497 msgstr "" 498 499 #: assets/build/index.js:1 500 #: assets/src/pages/SettingsPage.js:111 501 msgid "Enable all actions" 502 msgstr "" 503 504 #: assets/build/index.js:1 505 #: assets/src/pages/SettingsPage.js:115 506 msgid "Disable all actions" 507 msgstr "" 585 #: assets/src/js/pages/SettingsPage.js:242 586 msgid "Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout." 587 msgstr "" -
zenpress/trunk/readme.txt
r3386239 r3412245 4 4 Tags: optimization, performance, security, bloat, woocommerce 5 5 Requires at least: 6.0 6 Tested up to: 6. 87 Stable tag: 2. 0.56 Tested up to: 6.9 7 Stable tag: 2.1.0 8 8 Requires PHP: 7.4 9 9 License: GPLv2 or later … … 34 34 35 35 = Settings subpage 🧰 = 36 * Find presets to help you configure your ZenPress. 37 * Every action is documented so that you understand what you are doing and the benefits. 36 * Organized interface with vertical tabs for easy navigation between categories (Core, Gutenberg, WooCommerce, Tools). 37 * Features grouped by subcategories (Performance, Security, User Interface) with visual icons for quick identification. 38 * Three ready-to-use presets: Corporate website, Blog, and E-commerce - each optimized for specific site types. 39 * Every action is documented with descriptions so that you understand what you are doing and the benefits. 40 * Fully accessible interface with ARIA-compliant tabs and complete keyboard navigation support. 38 41 * Native WordPress interface, benefits from Gutenberg's new features and the site editor. 39 42 40 = Performance 🚀=43 = Core - Performance = 41 44 42 45 * Disable adjacent posts link tags. … … 54 57 * Separate loading of core block styles. 55 58 56 = Security 🔒️=59 = Core - Security = 57 60 58 61 * Block user enumeration. … … 65 68 * Protect the wp-login form from brute force attacks. 66 69 67 = User interface 💻️=70 = Core - User Interface = 68 71 69 72 * Clean up the WordPress admin bar. … … 71 74 * Disable the login language selector. 72 75 73 = WooCommerce 🛒=76 = WooCommerce - Performance = 74 77 * Disable WooCommerce cart fragments script. 75 78 * Disable WooCommerce scripts and styles on non-WooCommerce pages. 76 79 * Disable unnecessary Stripe scripts on WooCommerce pages. 77 80 * Disable WooCommerce widgets. 81 * Remove WooCommerce default block patterns. 82 83 = WooCommerce - Security = 78 84 * Hide WooCommerce version. 79 * Remove WooCommerce default remote block patterns. 85 86 = Gutenberg - Performance = 87 * Remove WordPress default remote block patterns. 88 * Separate loading of core block styles. 89 90 = Gutenberg - User Interface = 91 * Disable default pattern categories in site editor. 92 93 = Presets = 94 * Corporate website / Portfolio: Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives. 95 * Blog: Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds. 96 * E-commerce: Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout. 97 98 = Accessibility = 99 * Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide. 100 * Complete keyboard navigation: Arrow keys, Home, End, Space, Enter, and Tab keys fully supported. 101 * Automatic tab activation on focus for improved user experience. 102 * Proper focus management with visible focus indicators. 103 * Screen reader friendly with proper ARIA labels and roles. 80 104 81 105 == Roadmap == 82 106 83 107 = Global = 84 * New presets. 85 * Documentation pages. 86 * More context in plugin UI for actionable function. 108 * Additional presets for specific use cases. 109 * Documentation pages with detailed guides. 87 110 88 111 = Security = … … 96 119 * Disable WordPress default lazy loading. 97 120 98 = U I=121 = User Interface = 99 122 * Remove "howdy" from admin bar. 100 123 * Remove WordPress logo. … … 162 185 == Changelog == 163 186 187 = 2.1.0 = 188 - Global: Tested with WordPress 6.9. 189 - Interface: Complete redesign with vertical tabbed interface for better organization. 190 - Interface: Features now organized by categories (Core, Gutenberg, WooCommerce, Tools) and subcategories (Performance, Security, User Interface). 191 - Interface: Visual icons added to categories and subcategories for quick identification. 192 - Presets: Three ready-to-use presets with detailed descriptions (Corporate website, Blog, E-commerce). 193 - Accessibility: Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide. 194 - Accessibility: Complete keyboard navigation support (Arrow keys, Home, End, Space, Enter, Tab). 195 - Accessibility: Automatic tab activation on focus for improved user experience. 196 - Accessibility: Proper focus management with visible focus indicators. 197 - Accessibility: Screen reader friendly with proper ARIA labels and roles. 198 - Keyboard: Toggle controls now fully keyboard accessible with Enter key support. 199 - Keyboard: Added Ctrl+S / Cmd+S shortcut to save settings. 200 - Gutenberg: New actionable function: Disable default pattern categories in site editor. 201 164 202 = 2.0.5 = 165 203 - Global: Compatibility check. -
zenpress/trunk/zenpress.php
r3386239 r3412245 12 12 * Plugin Name: ZenPress - Cleaner, Lighter, Faster WP 13 13 * Description: Easily speed up and strengthen your WordPress site by cleaning out unnecessary features and protecting weak points. 14 * Version: 2. 0.514 * Version: 2.1.0 15 15 * Plugin URI: https://wordpress.org/plugins/zenpress/ 16 16 * Author: Quentin Le Duff … … 19 19 * Domain Path: /languages/ 20 20 * Requires at least: 6.0 21 * Tested up to: 6. 821 * Tested up to: 6.9 22 22 * Requires PHP: 7.4 23 23 * License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html/
Note: See TracChangeset
for help on using the changeset viewer.