| @@ -1,10 +1,12 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | /* |
| 3 | 3 | Plugin Name: Filter Everything — WordPress & WooCommerce Filters |
| 4 | 4 | Plugin URI: https://filtereverything.pro |
| 5 | -Description: Filters everything in WordPress & WooCommerce: Products, any Post types, by Any Criteria. Compatible with WPML, ACF and others popular. Supports AJAX. | |
| 6 | -Version: 1.9.2.1 | |
| 5 | +Description: Instantly filter any WordPress content & WooCommerce products by attributes, taxonomies, custom fields + AJAX, Elementor, automatic filter creation. | |
| 6 | +Version: 1.9.7 | |
| 7 | +Requires at least: 6.0 | |
| 8 | +Requires PHP: 7.4 | |
| 7 | 9 | Author: Andrii Stepasiuk |
| 8 | 10 | Author URI: https://filtereverything.pro/about/ |
| 9 | 11 | Text Domain: filter-everything |
| 10 | 12 | Domain Path: /lang |
| @@ -20,21 +22,15 @@ | ||
| 20 | 22 | class FlrtFilter{ |
| 21 | 23 | |
| 22 | 24 | public function init() |
| 23 | 25 | { |
| 24 | - global $flrt_sets, $wpc_not_fired, $chips_count; | |
| 25 | - | |
| 26 | - $chips_count = 0; | |
| 27 | - $wpc_not_fired = true; | |
| 28 | - $flrt_sets = []; | |
| 29 | - | |
| 30 | 26 | $this->define( 'FLRT_PLUGIN_DIR_PATH', plugin_dir_path( __FILE__ ) ); |
| 31 | 27 | $this->define( 'FLRT_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) ); |
| 32 | 28 | $this->define( 'FLRT_PLUGIN_BASENAME', plugin_basename(__FILE__) ); |
| 33 | 29 | $this->define( 'FLRT_PLUGIN_SLUG', 'filter-everything-pro' ); |
| 34 | - $this->define( 'FLRT_PLUGIN_VER', '1.9.2.1' ); | |
| 30 | + $this->define( 'FLRT_PLUGIN_VER', '1.9.7' ); | |
| 35 | 31 | $this->define( 'FLRT_PLUGIN_URL', 'https://filtereverything.pro' ); |
| 36 | - $this->define( 'FLRT_PLUGIN_TESTED_TO', '7.0' ); | |
| 32 | + $this->define( 'FLRT_PLUGIN_TESTED_TO', '7.1' ); | |
| 37 | 33 | $this->define( 'FLRT_PLUGIN_DEBUG', false ); |
| 38 | 34 | $this->define( 'FLRT_TEMPLATES_DIR_NAME', 'filters' ); |
| 39 | 35 | |
| 40 | 36 | $this->define( 'FLRT_FILTERS_SET_POST_TYPE', 'filter-set' ); |
| @@ -53,10 +49,15 @@ | ||
| 53 | 49 | $this->define( 'FLRT_MARKET', 'codecanyon' ); |
| 54 | 50 | $this->define( 'FLRT_RELEASER', 'stepasiuk' ); |
| 55 | 51 | $this->define( 'FLRT_APPROVED', 'victor' ); |
| 56 | 52 | $this->define( 'FLRT_ITERATION', 'first' ); |
| 57 | - $this->define( 'FLRT_PRO_PRICE', '$49' ); | |
| 53 | + $this->define( 'FLRT_PRO_PRICE', '$69' ); | |
| 58 | 54 | |
| 55 | + if ( ! defined('FLRT_RANGE_LIST_LIMIT')){ | |
| 56 | + $this->define( 'FLRT_RANGE_LIST_LIMIT', 20 ); | |
| 57 | + } | |
| 58 | + | |
| 59 | + | |
| 59 | 60 | if ( ! defined('FLRT_XML_PATH')){ |
| 60 | 61 | $wp_upload_dir = wp_upload_dir(); |
| 61 | 62 | $upload_dir_basepath = $wp_upload_dir['basedir']; |
| 62 | 63 | |
| @@ -65,75 +66,45 @@ | ||
| 65 | 66 | } |
| 66 | 67 | |
| 67 | 68 | require_once FLRT_PLUGIN_DIR_PATH . 'src/wpc-helpers.php'; |
| 68 | 69 | |
| 69 | - flrt_include('src/wp_query_source_detector.php'); | |
| 70 | + // Thematic helper files split out of wpc-helpers.php (same functions, no renames) | |
| 71 | + flrt_include('src/helpers/dates.php'); | |
| 72 | + flrt_include('src/helpers/colors.php'); | |
| 73 | + flrt_include('src/helpers/cache-keys.php'); | |
| 74 | + flrt_include('src/helpers/ui.php'); | |
| 75 | + flrt_include('src/helpers/migrations.php'); | |
| 76 | + flrt_include('src/helpers/instant-recount.php'); | |
| 77 | + | |
| 78 | + // Class autoloading (src/classmap.php + PSR-4 fallback for new sub-namespaced code). | |
| 79 | + // Only side-effect-free class files are autoloaded; see bin/build-classmap.php. | |
| 80 | + require_once FLRT_PLUGIN_DIR_PATH . 'src/Autoloader.php'; | |
| 81 | + \FilterEverything\Filter\Autoloader::register(); | |
| 82 | + \FilterEverything\Filter\Autoloader::addClassMap( require FLRT_PLUGIN_DIR_PATH . 'src/classmap.php', FLRT_PLUGIN_DIR_PATH . 'src' ); | |
| 83 | + \FilterEverything\Filter\Autoloader::addNamespace( 'FilterEverything\\Filter', FLRT_PLUGIN_DIR_PATH . 'src' ); | |
| 84 | + | |
| 85 | + // Files that do work at include time (functions, hooks, instantiation) — kept explicit, in order. | |
| 70 | 86 | flrt_include('src/wpc-compat.php'); |
| 71 | 87 | flrt_include('src/wpc-utility-functions.php'); |
| 72 | 88 | flrt_include('src/wpc-default-hooks.php'); |
| 73 | 89 | flrt_include('src/wpc-third-party.php'); |
| 74 | - flrt_include('src/PluginHelpers.php'); | |
| 75 | - | |
| 76 | - flrt_include('src/Plugin.php'); | |
| 77 | 90 | flrt_include('src/PostTypes.php'); |
| 78 | - flrt_include('src/Settings/TabInterface.php'); | |
| 79 | - flrt_include('src/Settings/BaseSettings.php'); | |
| 80 | - flrt_include('src/Settings/TabRenderer.php'); | |
| 81 | - flrt_include('src/Settings/Container.php'); | |
| 82 | 91 | |
| 83 | - flrt_include('src/Entities/Entity.php'); | |
| 84 | - flrt_include('src/Entities/PostMetaTrait.php'); | |
| 85 | - | |
| 86 | - flrt_include('src/Entities/TaxonomyEntity.php'); | |
| 87 | - flrt_include('src/Entities/PostMetaEntity.php'); | |
| 88 | - flrt_include('src/Entities/PostMetaNumEntity.php'); | |
| 89 | - flrt_include('src/Entities/AuthorEntity.php'); | |
| 90 | - flrt_include('src/Entities/PostDateEntity.php'); | |
| 91 | - flrt_include('src/Entities/PostMetaDateEntity.php'); | |
| 92 | - flrt_include('src/Settings/Tabs/SeoTabTrait.php'); | |
| 93 | - | |
| 94 | - // Include PRO | |
| 92 | + // PRO bootstrap. Comment out this single line (or ship without the pro/ folder) | |
| 93 | + // to run the plugin as the free version: it is the only place that registers | |
| 94 | + // PRO classes, constants and hooks. | |
| 95 | 95 | // flrt_include('pro/filters-pro.php'); |
| 96 | 96 | |
| 97 | - flrt_include('src/Entities/DefaultEntity.php'); | |
| 98 | - flrt_include('src/Entities/EntityManager.php'); | |
| 99 | - | |
| 100 | - flrt_include('src/Settings/DefaultSettings.php'); | |
| 101 | - flrt_include('src/Settings/Tabs/SettingsTab.php'); | |
| 102 | - flrt_include('src/Settings/Tabs/PermalinksTab.php'); | |
| 103 | - flrt_include('src/Settings/Tabs/ImportExportTabFree.php'); | |
| 104 | - flrt_include('src/Settings/Tabs/ExperimentalTab.php'); | |
| 105 | - flrt_include('src/Settings/Tabs/AboutProTab.php'); | |
| 106 | - | |
| 107 | - flrt_include('src/Settings/Filter.php'); | |
| 108 | - | |
| 109 | - flrt_include('src/RequestParser.php'); | |
| 110 | - flrt_include('src/UrlManager.php'); | |
| 111 | - flrt_include('src/Chips.php'); | |
| 112 | - flrt_include('src/Sorting.php'); | |
| 97 | + flrt_include('src/RobotsTxt.php'); | |
| 113 | 98 | flrt_include('src/Swatches.php'); |
| 114 | - | |
| 115 | - flrt_include('src/Walkers/WalkerCheckbox.php'); | |
| 116 | - | |
| 117 | - flrt_include('src/TemplateManager.php'); | |
| 118 | - flrt_include('src/WpManager.php'); | |
| 119 | - | |
| 120 | - flrt_include('src/Admin/FilterSet.php'); | |
| 121 | - flrt_include('src/Admin/AutoFilterSet.php'); | |
| 122 | - flrt_include('src/Admin/FilterFields.php'); | |
| 123 | - flrt_include('src/Admin/Admin.php'); | |
| 124 | 99 | flrt_include('src/Admin/AdminHooks.php'); |
| 100 | + flrt_include('src/Admin/AdminNotices.php'); | |
| 101 | + flrt_include('src/Admin/WhatsNew.php'); | |
| 102 | + flrt_include('src/Admin/ReviewRequest.php'); | |
| 125 | 103 | flrt_include('src/Admin/MetaBoxes.php'); |
| 126 | - flrt_include('src/Admin/Widgets/FiltersWidget.php'); | |
| 127 | - flrt_include('src/Admin/Widgets/ChipsWidget.php'); | |
| 128 | - flrt_include('src/Admin/Widgets/SortingWidget.php'); | |
| 129 | - flrt_include('src/Admin/Widgets.php'); | |
| 130 | - flrt_include('src/Admin/Shortcodes.php'); | |
| 131 | - flrt_include('src/Admin/Validator.php'); | |
| 132 | - flrt_include('src/Admin/DuplicateFilterSet.php'); | |
| 133 | - | |
| 134 | - flrt_include('src/FormFields/Input.php'); | |
| 104 | + flrt_include('src/Frontend/Widgets.php'); | |
| 135 | 105 | flrt_include('src/wpc-api.php'); |
| 106 | + flrt_include('src/Frontend/Builders/gutenberg/gutenberg.php'); | |
| 136 | 107 | |
| 137 | 108 | $this->registerHooks(); |
| 138 | 109 | |
| 139 | 110 | $this->initSettings(); |
| @@ -161,8 +132,10 @@ | ||
| 161 | 132 | |
| 162 | 133 | add_action( 'after_setup_theme', [$this, 'afterSetupTheme'] ); |
| 163 | 134 | |
| 164 | 135 | register_activation_hook(__FILE__, ['FilterEverything\Filter\Plugin', 'activate']); |
| 136 | + | |
| 137 | + register_deactivation_hook(__FILE__, ['FilterEverything\Filter\Plugin', 'deactivate']); | |
| 165 | 138 | |
| 166 | 139 | register_uninstall_hook(__FILE__, ['FilterEverything\Filter\Plugin', 'uninstall']); |
| 167 | 140 | |
| 168 | 141 | add_action('after_switch_theme', ['FilterEverything\Filter\Plugin', 'switchTheme'] ); |