Version Description
Released on 24 September 2021 =
New: support for WooCommerce 5.7
Update: YITH plugin framework
Tweak: improved plugin's internal cache management
Tweak: improved integration with YITH WooCommerce Color & Label Variations, when showing variations on loop
Tweak: suppress plugin's filters when retrieving in-stock products
Tweak: better compatibility with products query (supports queries with more than one post type)
Tweak: avoid duplicated ID for select filters
Tweak: add filtered body class via JS, immediately after filtering action takes place
Tweak: improved terms hierarchy appearance on RTL
Tweak: delete plugin transients when C&L configuration changes
Fix: apply changes to the query even when it retrieves a product taxonomy
Fix: set correct 'include' parameter when retrieving terms' children
Fix: prevent possible notice when handling terms hierarchy with use_all_terms enabled
Fix: allow system to retrieve C&L term configuration, when Use all Terms is enabled
Dev: Reset Filters button now has its own set of filters, distinct from ones used for Apply Filters button
Dev: added yith_wcan_filter_tax_label_image_size and yith_wcan_filter_tax_color_image_size filters
Dev: added yith_wcan_filter_tax_label_image_attr and yith_wcan_filter_tax_color_image_attr filters
Dev: added yith_wcan_supported_filters_parameters trigger
Dev: added yith_wcan_doing_filters function to check if system is performing filters
Dev: added yith_wcan_suppress_cache filter
Release Info
Developer | yithemes |
Plugin | YITH WooCommerce Ajax Product Filter |
Version | 4.2.0 |
Comparing to | |
See all releases |
Code changes from version 4.1.0 to 4.2.0
- README.txt +42 -3
- assets/css/shortcodes.css +9 -4
- assets/css/shortcodes.css.map +1 -1
- assets/js/shortcodes/modules/yith-wcan-filter.js +34 -11
- assets/js/shortcodes/modules/yith-wcan-preset.js +36 -5
- assets/js/yith-wcan-admin-filters.js +23 -18
- assets/js/yith-wcan-admin-filters.min.js +1 -1
- assets/js/yith-wcan-shortcodes.js +61 -26
- assets/js/yith-wcan-shortcodes.js.map +1 -1
- assets/js/yith-wcan-shortcodes.min.js +1 -1
- assets/scss/shortcodes.scss +15 -2
- includes/{class.yith-wcan-admin.php → class-yith-wcan-admin.php} +52 -50
- includes/class-yith-wcan-cache-helper.php +295 -0
- includes/{class.yith-wcan-filter-factory.php → class-yith-wcan-filter-factory.php} +2 -2
- includes/{class.yith-wcan-filter.php → class-yith-wcan-filter.php} +20 -20
- includes/{class.yith-wcan-frontend.php → class-yith-wcan-frontend.php} +75 -60
- includes/{class.yith-wcan-install.php → class-yith-wcan-install.php} +18 -18
- includes/{class.yith-wcan-preset-factory.php → class-yith-wcan-preset-factory.php} +1 -1
- includes/{class.yith-wcan-preset.php → class-yith-wcan-preset.php} +6 -6
- includes/{class.yith-wcan-presets.php → class-yith-wcan-presets.php} +53 -53
- includes/{class.yith-wcan-query.php → class-yith-wcan-query.php} +108 -228
- includes/{class.yith-wcan-shortcodes.php → class-yith-wcan-shortcodes.php} +12 -12
- includes/{class.yith-wcan-widgets.php → class-yith-wcan-widgets.php} +11 -11
- includes/{class.yith-wcan.php → class-yith-wcan.php} +36 -33
- includes/compatibility/plugins/qtranslate-x/qtranslate-x.php +1 -1
- includes/compatibility/plugins/ultimate-member/ultimate-member.php +1 -1
- includes/compatibility/plugins/wpml/wpml.php +4 -4
- includes/compatibility/plugins/yith-woocommerce-booking/yith-woocommerce-booking.php +13 -9
- includes/compatibility/plugins/yith-woocommerce-colors-label-variations/yith-woocommerce-colors-label-variations.php +109 -0
- includes/compatibility/themes/hello-elementor/hello-elementor.php +1 -1
- includes/data-stores/{class.yith-wcan-preset-data-store.php → class-yith-wcan-preset-data-store.php} +11 -11
- includes/elementor/{class.yith-wcan-elementor-filters.php → class-yith-wcan-elementor-filters.php} +3 -3
- includes/elementor/{class.yith-wcan-elementor-reset-button.php → class-yith-wcan-elementor-reset-button.php} +16 -16
- includes/filters/{class.yith-wcan-filter-tax.php → class-yith-wcan-filter-tax.php} +52 -49
- includes/{functions.yith-wcan.php → functions-yith-wcan.php} +75 -50
- includes/shortcodes/{class.yith-wcan-shortcode-filters.php → class-yith-wcan-shortcode-filters.php} +6 -6
- includes/shortcodes/{class.yith-wcan-shortcode-reset-button.php → class-yith-wcan-shortcode-reset-button.php} +2 -2
- includes/tables/{class.yith-wcan-filter-presets-table.php → class-yith-wcan-filter-presets-table.php} +17 -10
- includes/widgets/{class.yith-wcan-filters-widget.php → class-yith-wcan-filters-widget.php} +8 -8
- includes/widgets/{class.yith-wcan-navigation-widget.php → class-yith-wcan-navigation-widget.php} +78 -72
- includes/widgets/{class.yith-wcan-reset-navigation-widget.php → class-yith-wcan-reset-navigation-widget.php} +17 -16
- init.php +6 -6
- languages/yith-woocommerce-ajax-navigation-de_DE.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-de_DE.po +183 -184
- languages/yith-woocommerce-ajax-navigation-de_DE_formal.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-de_DE_formal.po +183 -184
- languages/yith-woocommerce-ajax-navigation-el.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-el.po +183 -184
- languages/yith-woocommerce-ajax-navigation-es_ES.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-es_ES.po +183 -184
- languages/yith-woocommerce-ajax-navigation-fr_FR.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-fr_FR.po +179 -184
- languages/yith-woocommerce-ajax-navigation-it_IT.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-it_IT.po +184 -184
- languages/yith-woocommerce-ajax-navigation-nl_NL.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-nl_NL.po +183 -184
- languages/yith-woocommerce-ajax-navigation-tr_TR.mo +0 -0
- languages/yith-woocommerce-ajax-navigation-tr_TR.po +185 -186
- languages/yith-woocommerce-ajax-navigation.pot +179 -184
- plugin-fw/assets/css/metaboxes.css +6 -6
- plugin-fw/assets/css/yit-plugin-panel.css +44 -33
- plugin-fw/assets/css/yith-fields.css +34 -7
- plugin-fw/assets/css/yith-plugin-ui.css +84 -2
- plugin-fw/assets/js/wp-pages.js +2 -0
- plugin-fw/assets/js/wp-pages.min.js +1 -1
- plugin-fw/assets/js/yith-enhanced-select.js +0 -63
- plugin-fw/assets/js/yith-enhanced-select.min.js +1 -1
- plugin-fw/assets/js/yith-fields.js +304 -272
- plugin-fw/assets/js/yith-fields.min.js +1 -1
@@ -2,9 +2,9 @@
|
|
2 |
|
3 |
Contributors: yithemes
|
4 |
Tags: woocommerce ajax product filter download, woocommerce, widget, ajax, ajax filtered nav, ajax navigation, ajax filtered navigation, woocommerce layered navigation, woocommerce layered nav, product filter, product filters, ajax product filter, woocommerce ajax product filter, woocommerce filters, sidebar filter, sidebar ajax filter, ajax price filter, price filter, product sorting, woocommerce filter, taxonomy filter, attribute filter, attributes filter, woocommerce product sort, ajax sort, woocommerce ajax product filter, advanced product filters, ajax product filters, filters, woocommerce ajax product filters, woocommerce product filters, woocommerce product filters, category filter, attribute filters, woocommerce products filter, woocommerce price filter, yit, yith, yithemes
|
5 |
-
Requires at least: 5.
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 4.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -152,6 +152,45 @@ If none of the previous listed actions helps you solve the problem, then, submit
|
|
152 |
|
153 |
== Changelog ==
|
154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
= 4.1.0 - Released on 18 June 2021 =
|
156 |
|
157 |
* New: support for WooCommerce 5.4
|
2 |
|
3 |
Contributors: yithemes
|
4 |
Tags: woocommerce ajax product filter download, woocommerce, widget, ajax, ajax filtered nav, ajax navigation, ajax filtered navigation, woocommerce layered navigation, woocommerce layered nav, product filter, product filters, ajax product filter, woocommerce ajax product filter, woocommerce filters, sidebar filter, sidebar ajax filter, ajax price filter, price filter, product sorting, woocommerce filter, taxonomy filter, attribute filter, attributes filter, woocommerce product sort, ajax sort, woocommerce ajax product filter, advanced product filters, ajax product filters, filters, woocommerce ajax product filters, woocommerce product filters, woocommerce product filters, category filter, attribute filters, woocommerce products filter, woocommerce price filter, yit, yith, yithemes
|
5 |
+
Requires at least: 5.6
|
6 |
+
Tested up to: 5.8
|
7 |
+
Stable tag: 4.2.0
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
152 |
|
153 |
== Changelog ==
|
154 |
|
155 |
+
= 4.2.0 - Released on 24 September 2021 =
|
156 |
+
|
157 |
+
* New: support for WooCommerce 5.7
|
158 |
+
* Update: YITH plugin framework
|
159 |
+
* Tweak: improved plugin's internal cache management
|
160 |
+
* Tweak: improved integration with YITH WooCommerce Color & Label Variations, when showing variations on loop
|
161 |
+
* Tweak: suppress plugin's filters when retrieving in-stock products
|
162 |
+
* Tweak: better compatibility with products query (supports queries with more than one post type)
|
163 |
+
* Tweak: avoid duplicated ID for select filters
|
164 |
+
* Tweak: add filtered body class via JS, immediately after filtering action takes place
|
165 |
+
* Tweak: improved terms hierarchy appearance on RTL
|
166 |
+
* Tweak: delete plugin transients when C&L configuration changes
|
167 |
+
* Fix: apply changes to the query even when it retrieves a product taxonomy
|
168 |
+
* Fix: set correct 'include' parameter when retrieving terms' children
|
169 |
+
* Fix: prevent possible notice when handling terms hierarchy with use_all_terms enabled
|
170 |
+
* Fix: allow system to retrieve C&L term configuration, when Use all Terms is enabled
|
171 |
+
* Dev: Reset Filters button now has its own set of filters, distinct from ones used for Apply Filters button
|
172 |
+
* Dev: added yith_wcan_filter_tax_label_image_size and yith_wcan_filter_tax_color_image_size filters
|
173 |
+
* Dev: added yith_wcan_filter_tax_label_image_attr and yith_wcan_filter_tax_color_image_attr filters
|
174 |
+
* Dev: added yith_wcan_supported_filters_parameters trigger
|
175 |
+
* Dev: added yith_wcan_doing_filters function to check if system is performing filters
|
176 |
+
* Dev: added yith_wcan_suppress_cache filter
|
177 |
+
|
178 |
+
= 4.1.1 - Released on 04 August 2021 =
|
179 |
+
|
180 |
+
* New: support for WordPress 5.8
|
181 |
+
* New: support for WooCommerce 5.6
|
182 |
+
* Update: YITH plugin framework
|
183 |
+
* Tweak: code refactoring
|
184 |
+
* Tweak: avoid caching query_vars until wp performed main query, to be sure to include all parameters available
|
185 |
+
* Tweak: avoid possible error with Tax queries without terms
|
186 |
+
* Fix: prevent possible error on preset edit page when running PHP 8
|
187 |
+
* Fix: populateFilter method causing issues when loading more terms on backend
|
188 |
+
* Fix: avoid possible notice when shop has product taxonomies with no rewrite defined
|
189 |
+
* Fix: empty terms when using AutoPopulate options
|
190 |
+
* Fix: plugin can now disable filters with numeric slugs
|
191 |
+
* Dev: added second parameter to yith_wcan_filter_tax_additional_item_classes filter
|
192 |
+
* Dev: added yith_wcan_pre_reduce_tax_query filter, to allow programmatically skip reduce_tax_query execution
|
193 |
+
|
194 |
= 4.1.0 - Released on 18 June 2021 =
|
195 |
|
196 |
* New: support for WooCommerce 5.4
|
@@ -800,7 +800,7 @@
|
|
800 |
.yith-wcan-filters.filters-modal .close-button {
|
801 |
color: var(--yith-wcan-anchors_style_text, #434343);
|
802 |
cursor: pointer;
|
803 |
-
font-size:
|
804 |
height: 35px;
|
805 |
line-height: 1;
|
806 |
position: absolute;
|
@@ -889,17 +889,17 @@
|
|
889 |
margin-bottom: 0;
|
890 |
margin-right: 15px;
|
891 |
}
|
892 |
-
.yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-items {
|
893 |
max-height: 200px;
|
894 |
overflow-y: scroll;
|
895 |
overflow-x: hidden;
|
896 |
padding: 5px 2px 0 0;
|
897 |
}
|
898 |
-
.yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-items::-webkit-scrollbar {
|
899 |
-webkit-appearance: none;
|
900 |
width: 6px;
|
901 |
}
|
902 |
-
.yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-items::-webkit-scrollbar-thumb {
|
903 |
background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
|
904 |
border-radius: 4px;
|
905 |
}
|
@@ -939,6 +939,11 @@ body.yith-wcan-preset-modal-open:after.admin-bar {
|
|
939 |
top: 32px;
|
940 |
}
|
941 |
|
|
|
|
|
|
|
|
|
|
|
942 |
@media (max-width: 991px) {
|
943 |
body.filters-in-modal .yith-wcan-filters {
|
944 |
display: none;
|
800 |
.yith-wcan-filters.filters-modal .close-button {
|
801 |
color: var(--yith-wcan-anchors_style_text, #434343);
|
802 |
cursor: pointer;
|
803 |
+
font-size: 1.5em;
|
804 |
height: 35px;
|
805 |
line-height: 1;
|
806 |
position: absolute;
|
889 |
margin-bottom: 0;
|
890 |
margin-right: 15px;
|
891 |
}
|
892 |
+
.yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-content > .filter-items {
|
893 |
max-height: 200px;
|
894 |
overflow-y: scroll;
|
895 |
overflow-x: hidden;
|
896 |
padding: 5px 2px 0 0;
|
897 |
}
|
898 |
+
.yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-content > .filter-items::-webkit-scrollbar {
|
899 |
-webkit-appearance: none;
|
900 |
width: 6px;
|
901 |
}
|
902 |
+
.yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-content > .filter-items::-webkit-scrollbar-thumb {
|
903 |
background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
|
904 |
border-radius: 4px;
|
905 |
}
|
939 |
top: 32px;
|
940 |
}
|
941 |
|
942 |
+
body.rtl .yith-wcan-filters .yith-wcan-filter .filter-items.level-0 ul {
|
943 |
+
padding-left: 0;
|
944 |
+
padding-right: 15px;
|
945 |
+
}
|
946 |
+
|
947 |
@media (max-width: 991px) {
|
948 |
body.filters-in-modal .yith-wcan-filters {
|
949 |
display: none;
|
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sourceRoot":"","sources":["../scss/shortcodes.scss"],"names":[],"mappings":"AAwJA;AAEA;EACC;EACA;;AAGC;EACC;;AAIF;EACC;;AAGA;EACC;;AAEA;EAjJF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AA2HG;EACC;;AAGD;EACC;;AAMH;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;;AAIA;EACC;EACA;;AAIF;EACC;;AAGD;EAEC;EACA;;AAGA;EAEC,OA9NU;EA+NV;;AAGD;EAEC;;AAGD;EACC;;AAGD;EAEC,OAzOY;EA0OZ;;AAGD;EAEC;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EAEC;;AAGD;EACC;EACA;EACA;;AAEA;AAAA;EAEC;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC,cArTQ;;AAyTV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,cArUQ;;AAwUT;EACC;EACA;;AAIF;EAEC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAKD;EACC,cAjWS;;AAoWV;EAlSJ,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAwRG;EACC;EACA;EACA,eAzWW;EA0WX;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAEA;EAzTL,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4SM;EACA;;AAIF;EAEC;EACA,OAtYS;;AAyYV;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,OAzaQ;;AA2aR;EACC;;AAQF;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAzbJ;;AA6bI;EAjcJ;;AAqcI;EACC;;AAKF;EACC,OArfY;EAsfZ;;AAID;EAjfH;EACA;EACA;EACA;;AAmfG;EACC,kBArgBU;EAsgBV,cAtgBU;;AAwgBX;EACC,kBAzgBU;;AA6Ib;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAyYC;EACC;;AAID;EAjbD,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4aE;EACA;EACA;;AA5aF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAgaC;AAAA;EACC;EACA;;AAIF;EACC;;AAEA;EACC;;AAMD;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAIF;EACC;;AAEA;AAAA;EAEC;EACA;EACA;;AAIF;AAAA;EAEC;EACA,eAjmBY;;AAomBb;EACC,kBAzmBW;;AA4mBZ;EACC;EACA,kBA9mBW;EA+mBX;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;AAAA;AAAA;EAthBF,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAmhBG;;AAjhBH;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;;AAkgBE;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMH;EACC;EACA,eA3oBa;EA4oBb;EA3nBF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AAsmBE;EACC;EACA;EACA,eAnpBY;EAopBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;AAEA;EACC,cA1qBQ;EA2qBR;EACA,eA5qBQ;;AAgrBV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;;AAjpBN;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AA0sBZ;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC,OArtBS;;AA0tBZ;EACC;;AAEA;EAhtBH;EACA;EACA;EACA;;AAktBE;EACC;EACA;;AAEA;EACC;;AAMH;EACC;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA,eAzwBY;EA0wBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA,kBA7xBW;EA8xBX,cA9xBW;EA+xBX;EACA;;AAIF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,kBAt0BW;EAu0BX;;AAIF;EACC,OAt0BU;;AA20BZ;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC,YA71BU;EA81BV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAn0BF;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAy3Bb;EACC;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA,eAt4Ba;EAu4Bb;EACA;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC,OAj6BY;EAk6BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,OAj7BW;;AAq7Bb;EACC,kBAt7BY;EAu7BZ,cAv7BY;EAw7BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,eA/8BY;EAg9BZ;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIF;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA,eA3+BY;EA4+BZ;EACA;EACA;EACA;EACA,SA1+BM;;AA4+BN;EACC,kBA/+Ba;EAg/Bb;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EAEA;EACA;;AAMH;EACC;EACA;EACA;EACA;;AA19BH;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAihCb;EACC;;AAKA;EACC;;AAEA;EACC;;AAKD;EACC;;AAMJ;EACC;;;AAKH;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SArjCS;;AAujCT;EACC;;;
|
1 |
+
{"version":3,"sourceRoot":"","sources":["../scss/shortcodes.scss"],"names":[],"mappings":"AAwJA;AAEA;EACC;EACA;;AAGC;EACC;;AAIF;EACC;;AAGA;EACC;;AAEA;EAjJF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AA2HG;EACC;;AAGD;EACC;;AAMH;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;;AAIA;EACC;EACA;;AAIF;EACC;;AAGD;EAEC;EACA;;AAGA;EAEC,OA9NU;EA+NV;;AAGD;EAEC;;AAGD;EACC;;AAGD;EAEC,OAzOY;EA0OZ;;AAGD;EAEC;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EAEC;;AAGD;EACC;EACA;EACA;;AAEA;AAAA;EAEC;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC,cArTQ;;AAyTV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,cArUQ;;AAwUT;EACC;EACA;;AAIF;EAEC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAKD;EACC,cAjWS;;AAoWV;EAlSJ,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAwRG;EACC;EACA;EACA,eAzWW;EA0WX;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAEA;EAzTL,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4SM;EACA;;AAIF;EAEC;EACA,OAtYS;;AAyYV;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,OAzaQ;;AA2aR;EACC;;AAQF;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAzbJ;;AA6bI;EAjcJ;;AAqcI;EACC;;AAKF;EACC,OArfY;EAsfZ;;AAID;EAjfH;EACA;EACA;EACA;;AAmfG;EACC,kBArgBU;EAsgBV,cAtgBU;;AAwgBX;EACC,kBAzgBU;;AA6Ib;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAyYC;EACC;;AAID;EAjbD,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4aE;EACA;EACA;;AA5aF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAgaC;AAAA;EACC;EACA;;AAIF;EACC;;AAEA;EACC;;AAMD;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAIF;EACC;;AAEA;AAAA;EAEC;EACA;EACA;;AAIF;AAAA;EAEC;EACA,eAjmBY;;AAomBb;EACC,kBAzmBW;;AA4mBZ;EACC;EACA,kBA9mBW;EA+mBX;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;AAAA;AAAA;EAthBF,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAmhBG;;AAjhBH;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;;AAkgBE;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMH;EACC;EACA,eA3oBa;EA4oBb;EA3nBF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AAsmBE;EACC;EACA;EACA,eAnpBY;EAopBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;AAEA;EACC,cA1qBQ;EA2qBR;EACA,eA5qBQ;;AAgrBV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;;AAjpBN;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AA0sBZ;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC,OArtBS;;AA0tBZ;EACC;;AAEA;EAhtBH;EACA;EACA;EACA;;AAktBE;EACC;EACA;;AAEA;EACC;;AAMH;EACC;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA,eAzwBY;EA0wBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA,kBA7xBW;EA8xBX,cA9xBW;EA+xBX;EACA;;AAIF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,kBAt0BW;EAu0BX;;AAIF;EACC,OAt0BU;;AA20BZ;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC,YA71BU;EA81BV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAn0BF;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAy3Bb;EACC;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA,eAt4Ba;EAu4Bb;EACA;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC,OAj6BY;EAk6BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,OAj7BW;;AAq7Bb;EACC,kBAt7BY;EAu7BZ,cAv7BY;EAw7BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,eA/8BY;EAg9BZ;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIF;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA,eA3+BY;EA4+BZ;EACA;EACA;EACA;EACA,SA1+BM;;AA4+BN;EACC,kBA/+Ba;EAg/Bb;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EAEA;EACA;;AAMH;EACC;EACA;EACA;EACA;;AA19BH;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAihCb;EACC;;AAKA;EACC;;AAEA;EACC;;AAKD;EACC;;AAMJ;EACC;;;AAKH;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SArjCS;;AAujCT;EACC;;;AAQE;EACC;EACA;;;AAOL;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AAEA;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EAzhCD;EACA;EACA,OAvFc;EAwFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAihCE;;AAEA;EAljCF,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAsiCE;EA1mCF;EACA;EACA;EACA;EAymCG;;AAKH;EACC;;AAGD;EACC,OA9nCW;;AAioCZ;EAjjCA;EACA;EACA,OAvFc;EAwFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAyiCC,kBA1oCa;EA2oCb;;AAEA;EACC;EACA;;;AAKH;AAEA;EACC;EACA,eAppCe;EAqpCf;EACA,OAzpCc;EA0pCd;EACA,eA5pCc;;AA8pCd;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,YA3qCa;EA4qCb,cA5qCa;EA6qCb;;AAEA;EACC","file":"shortcodes.css"}
|
@@ -96,6 +96,12 @@ export default class YITH_WCAN_Filter {
|
|
96 |
}
|
97 |
);
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
$( window ).trigger( 'scroll' );
|
100 |
|
101 |
$( document )
|
@@ -277,6 +283,9 @@ export default class YITH_WCAN_Filter {
|
|
277 |
params = $.extend(
|
278 |
{
|
279 |
url,
|
|
|
|
|
|
|
280 |
},
|
281 |
params
|
282 |
);
|
@@ -319,17 +328,31 @@ export default class YITH_WCAN_Filter {
|
|
319 |
// checks if param is one used by layared nav to filter products.
|
320 |
isFilterParam( param ) {
|
321 |
let supportedParams = [
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
yith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>
|
334 |
i.replace( 'pa_', 'filter_' )
|
335 |
)
|
96 |
}
|
97 |
);
|
98 |
|
99 |
+
if ( filters && !! Object.keys( filters ).length ) {
|
100 |
+
$( 'body' ).addClass( 'filtered' );
|
101 |
+
} else {
|
102 |
+
$( 'body' ).removeClass( 'filtered' );
|
103 |
+
}
|
104 |
+
|
105 |
$( window ).trigger( 'scroll' );
|
106 |
|
107 |
$( document )
|
283 |
params = $.extend(
|
284 |
{
|
285 |
url,
|
286 |
+
headers: {
|
287 |
+
'X-YITH-WCAN': 1,
|
288 |
+
},
|
289 |
},
|
290 |
params
|
291 |
);
|
328 |
// checks if param is one used by layared nav to filter products.
|
329 |
isFilterParam( param ) {
|
330 |
let supportedParams = [
|
331 |
+
'rating_filter',
|
332 |
+
'min_price',
|
333 |
+
'max_price',
|
334 |
+
'price_ranges',
|
335 |
+
'onsale_filter',
|
336 |
+
'instock_filter',
|
337 |
+
'featured_filter',
|
338 |
+
'orderby',
|
339 |
+
'product-page',
|
340 |
+
yith_wcan_shortcodes.query_param,
|
341 |
+
],
|
342 |
+
customParams;
|
343 |
+
|
344 |
+
// filter properties
|
345 |
+
customParams = $(
|
346 |
+
document
|
347 |
+
).triggerHandler( 'yith_wcan_supported_filters_parameters', [
|
348 |
+
supportedParams,
|
349 |
+
] );
|
350 |
+
|
351 |
+
if ( !! customParams ) {
|
352 |
+
supportedParams = customParams;
|
353 |
+
}
|
354 |
+
|
355 |
+
supportedParams = supportedParams.concat(
|
356 |
yith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>
|
357 |
i.replace( 'pa_', 'filter_' )
|
358 |
)
|
@@ -436,6 +436,7 @@ export default class YITH_WCAN_Preset {
|
|
436 |
|
437 |
$toggle.off( 'click' ).on( 'click', ( ev ) => {
|
438 |
ev.stopPropagation();
|
|
|
439 |
|
440 |
$target.slideToggle( 400, () => {
|
441 |
$container.toggleClass( 'opened' ).toggleClass( 'closed' );
|
@@ -597,6 +598,21 @@ export default class YITH_WCAN_Preset {
|
|
597 |
} );
|
598 |
}
|
599 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
// close all collpasable before showing modal
|
601 |
_closeAllCollapsables() {
|
602 |
this.$filters
|
@@ -731,7 +747,10 @@ export default class YITH_WCAN_Preset {
|
|
731 |
.length;
|
732 |
break;
|
733 |
case 'price_slider':
|
734 |
-
const
|
|
|
|
|
|
|
735 |
$filter.find( '.price-slider' ).data( 'min' )
|
736 |
),
|
737 |
max = parseFloat(
|
@@ -744,7 +763,9 @@ export default class YITH_WCAN_Preset {
|
|
744 |
$filter.find( '.price-slider-max' ).val()
|
745 |
);
|
746 |
|
747 |
-
active =
|
|
|
|
|
748 |
break;
|
749 |
case 'orderby':
|
750 |
active =
|
@@ -1160,7 +1181,10 @@ export default class YITH_WCAN_Preset {
|
|
1160 |
$dropdown.find( 'option' ).each( function () {
|
1161 |
const $option = $( this );
|
1162 |
|
1163 |
-
if (
|
|
|
|
|
|
|
1164 |
$option.prop( 'selected', false );
|
1165 |
}
|
1166 |
} );
|
@@ -1181,7 +1205,10 @@ export default class YITH_WCAN_Preset {
|
|
1181 |
? $label.find( ':input' ).val()
|
1182 |
: $anchor.data( 'term-slug' );
|
1183 |
|
1184 |
-
if (
|
|
|
|
|
|
|
1185 |
$item.children( 'label' ).children( 'a' ).click();
|
1186 |
$item.removeClass( 'active' );
|
1187 |
}
|
@@ -1396,7 +1423,11 @@ export default class YITH_WCAN_Preset {
|
|
1396 |
return;
|
1397 |
}
|
1398 |
|
1399 |
-
|
|
|
|
|
|
|
|
|
1400 |
|
1401 |
$( 'body' )
|
1402 |
.css( 'overflow', 'hidden' )
|
436 |
|
437 |
$toggle.off( 'click' ).on( 'click', ( ev ) => {
|
438 |
ev.stopPropagation();
|
439 |
+
ev.preventDefault();
|
440 |
|
441 |
$target.slideToggle( 400, () => {
|
442 |
$container.toggleClass( 'opened' ).toggleClass( 'closed' );
|
598 |
} );
|
599 |
}
|
600 |
|
601 |
+
// close all collpasable before showing modal
|
602 |
+
_openAllCollapsables() {
|
603 |
+
this.$filters
|
604 |
+
.not( '.no-title' )
|
605 |
+
.not( ( i, v ) => {
|
606 |
+
return this.isFilterActive( $( v ) );
|
607 |
+
} )
|
608 |
+
.find( '.filter-content' )
|
609 |
+
.show()
|
610 |
+
.end()
|
611 |
+
.find( '.filter-title' )
|
612 |
+
.removeClass( 'closed' )
|
613 |
+
.addClass( 'opened' );
|
614 |
+
}
|
615 |
+
|
616 |
// close all collpasable before showing modal
|
617 |
_closeAllCollapsables() {
|
618 |
this.$filters
|
747 |
.length;
|
748 |
break;
|
749 |
case 'price_slider':
|
750 |
+
const step = parseFloat(
|
751 |
+
$filter.find( '.price-slider' ).data( 'step' )
|
752 |
+
),
|
753 |
+
min = parseFloat(
|
754 |
$filter.find( '.price-slider' ).data( 'min' )
|
755 |
),
|
756 |
max = parseFloat(
|
763 |
$filter.find( '.price-slider-max' ).val()
|
764 |
);
|
765 |
|
766 |
+
active =
|
767 |
+
Math.abs( currentMin - min ) >= step ||
|
768 |
+
Math.abs( currentMax - max ) >= step;
|
769 |
break;
|
770 |
case 'orderby':
|
771 |
active =
|
1181 |
$dropdown.find( 'option' ).each( function () {
|
1182 |
const $option = $( this );
|
1183 |
|
1184 |
+
if (
|
1185 |
+
$option.val().toString() ===
|
1186 |
+
properties[ taxonomy ].toString()
|
1187 |
+
) {
|
1188 |
$option.prop( 'selected', false );
|
1189 |
}
|
1190 |
} );
|
1205 |
? $label.find( ':input' ).val()
|
1206 |
: $anchor.data( 'term-slug' );
|
1207 |
|
1208 |
+
if (
|
1209 |
+
value.toString() ===
|
1210 |
+
properties[ taxonomy ].toString()
|
1211 |
+
) {
|
1212 |
$item.children( 'label' ).children( 'a' ).click();
|
1213 |
$item.removeClass( 'active' );
|
1214 |
}
|
1423 |
return;
|
1424 |
}
|
1425 |
|
1426 |
+
if ( yith_wcan_shortcodes.toggles_open_on_modal ) {
|
1427 |
+
this._openAllCollapsables();
|
1428 |
+
} else {
|
1429 |
+
this._closeAllCollapsables();
|
1430 |
+
}
|
1431 |
|
1432 |
$( 'body' )
|
1433 |
.css( 'overflow', 'hidden' )
|
@@ -414,8 +414,6 @@ function YITH_WCAN_Filters( $ ) {
|
|
414 |
continue;
|
415 |
}
|
416 |
|
417 |
-
console.log( 'not found' );
|
418 |
-
|
419 |
$filterDesign.append(
|
420 |
$( '<option/>', {
|
421 |
value: design,
|
@@ -815,16 +813,21 @@ function YITH_WCAN_Filters( $ ) {
|
|
815 |
self.populateFilter = function ( $filter, filterData ) {
|
816 |
for ( const i in filterData ) {
|
817 |
const row_id = self.getRowIndex( $filter ),
|
818 |
-
nameId = `filters_${ row_id }_${ i }`,
|
819 |
-
$input = $filter.find( `#${ nameId }` ),
|
820 |
value = filterData[ i ];
|
821 |
|
|
|
|
|
|
|
|
|
|
|
|
|
822 |
if ( ! $input.length && 'price_ranges' !== i ) {
|
823 |
continue;
|
824 |
}
|
825 |
|
826 |
if ( 'terms' === i ) {
|
827 |
const terms = value;
|
|
|
828 |
if ( 'object' !== typeof terms ) {
|
829 |
continue;
|
830 |
}
|
@@ -847,12 +850,12 @@ function YITH_WCAN_Filters( $ ) {
|
|
847 |
$input.change();
|
848 |
|
849 |
// update term boxes
|
850 |
-
self.updateTerms( $filter );
|
851 |
|
852 |
// populate options for each filter
|
853 |
for ( const j in terms ) {
|
854 |
for ( const k in terms[ j ] ) {
|
855 |
-
const termId =
|
856 |
$termInput = $filter.find( `#${ termId }` );
|
857 |
|
858 |
if ( ! $termInput.length ) {
|
@@ -1225,16 +1228,18 @@ function YITH_WCAN_Filters( $ ) {
|
|
1225 |
self.initTerm( $( this ) );
|
1226 |
} );
|
1227 |
|
1228 |
-
$orderBy
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
|
|
|
|
1238 |
};
|
1239 |
|
1240 |
self.initTerm = function ( $term ) {
|
@@ -1414,10 +1419,10 @@ function YITH_WCAN_Filters( $ ) {
|
|
1414 |
.show();
|
1415 |
};
|
1416 |
|
1417 |
-
self.updateTerms = function ( $filter ) {
|
1418 |
const $termsContainer = $filter.find( '.terms-wrapper' );
|
1419 |
|
1420 |
-
if ( ! $termsContainer.is( ':visible' ) ) {
|
1421 |
return;
|
1422 |
}
|
1423 |
|
414 |
continue;
|
415 |
}
|
416 |
|
|
|
|
|
417 |
$filterDesign.append(
|
418 |
$( '<option/>', {
|
419 |
value: design,
|
813 |
self.populateFilter = function ( $filter, filterData ) {
|
814 |
for ( const i in filterData ) {
|
815 |
const row_id = self.getRowIndex( $filter ),
|
|
|
|
|
816 |
value = filterData[ i ];
|
817 |
|
818 |
+
let nameId =
|
819 |
+
'terms' === i
|
820 |
+
? `filters_${ row_id }_term_ids`
|
821 |
+
: `filters_${ row_id }_${ i }`,
|
822 |
+
$input = $filter.find( `#${ nameId }` );
|
823 |
+
|
824 |
if ( ! $input.length && 'price_ranges' !== i ) {
|
825 |
continue;
|
826 |
}
|
827 |
|
828 |
if ( 'terms' === i ) {
|
829 |
const terms = value;
|
830 |
+
|
831 |
if ( 'object' !== typeof terms ) {
|
832 |
continue;
|
833 |
}
|
850 |
$input.change();
|
851 |
|
852 |
// update term boxes
|
853 |
+
self.updateTerms( $filter, true );
|
854 |
|
855 |
// populate options for each filter
|
856 |
for ( const j in terms ) {
|
857 |
for ( const k in terms[ j ] ) {
|
858 |
+
const termId = `filters_${ row_id }_terms_${ j }_${ k }`,
|
859 |
$termInput = $filter.find( `#${ termId }` );
|
860 |
|
861 |
if ( ! $termInput.length ) {
|
1228 |
self.initTerm( $( this ) );
|
1229 |
} );
|
1230 |
|
1231 |
+
$orderBy
|
1232 |
+
.on( 'change', function () {
|
1233 |
+
const $t = $( this ),
|
1234 |
+
v = $t.val(),
|
1235 |
+
methodToRun =
|
1236 |
+
'include' === v
|
1237 |
+
? 'initTermsDragDrop'
|
1238 |
+
: 'destroyTermsDragDrop';
|
1239 |
+
|
1240 |
+
self[ methodToRun ]( $filter );
|
1241 |
+
} )
|
1242 |
+
.change();
|
1243 |
};
|
1244 |
|
1245 |
self.initTerm = function ( $term ) {
|
1419 |
.show();
|
1420 |
};
|
1421 |
|
1422 |
+
self.updateTerms = function ( $filter, ignoreVisibility ) {
|
1423 |
const $termsContainer = $filter.find( '.terms-wrapper' );
|
1424 |
|
1425 |
+
if ( ! ignoreVisibility && ! $termsContainer.is( ':visible' ) ) {
|
1426 |
return;
|
1427 |
}
|
1428 |
|
@@ -1 +1 @@
|
|
1 |
-
"use strict";function YITH_WCAN_Filters(e){const t=this;t.rowIndex=0,t.dependencies={taxonomy:{type:"tax"},use_all_terms:{type:"tax"},term_ids:{type:"tax",use_all_terms:"!:checked"},filter_design:{type:["tax","review","price_range"]},label_position:{filter_design:["label","color"]},column_number:{filter_design:["label","color"],label_position:["below","hide"]},customize_terms:{type:"tax",use_all_terms:"!:checked"},terms_options:{term_ids:e=>!!e,customize_terms:":checked"},show_search:{type:"tax",filter_design:"select"},price_ranges:{type:"price_range"},price_slider_adaptive_limits:{type:"price_slider"},price_slider_design:{type:"price_slider"},price_slider_min:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_max:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_step:{type:"price_slider"},order_options:{type:"orderby"},show_stock_filter:{type:"stock_sale"},show_sale_filter:{type:"stock_sale"},show_featured_filter:{type:"stock_sale"},toggle_style:{show_toggle:":checked"},order_by:{type:"tax"},order:{type:"tax"},show_count:{type:["tax","price_range","review","stock_sale"]},hierarchical:{type:"tax",filter_design:["checkbox","radio","text"]},multiple:{type:["tax","review","price_range"],filter_design:"!radio"},relation:{type:"tax",multiple:":checked"},adoptive:{type:["tax","price_range","review","stock_sale"]}},t.$form=e("#plugin-fw-wc"),t.$mainAddNewFilterButton=e("#add_new_filter"),t.$addNewFilterButtons=e(".add-new-filter"),t.$loadMoreFiltersButtons=e(".load-more-filters"),t.$filtersContainer=e(".preset-filters"),t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.$layout=e("#preset_layout"),t.$page=e("#paged"),t.$submit=e("#submit"),t.init=function(){t.initFilters(),t.initAddFilter(),t.initLoadMoreFilters(),t.initLayout(),t.initSubmit()},t.initAddFilter=function(){t.$addNewFilterButtons.on("click",(function(e){e.preventDefault(),t.addFilter()}))},t.initLoadMoreFilters=function(){t.$loadMoreFiltersButtons.on("click",(function(e){e.preventDefault(),t.loadMoreFilters()}))},t.initSubmit=function(){t.$submit.on("click",(()=>!!t.$form.get(0).reportValidity()&&(!!t.validateFilters()&&void t.block(t.$form))))},t.initLayout=function(){t.$layout.on("change","input",(()=>{t.afterLayoutChange()})).find("input").first().change()},t.initFilters=function(){t.initFiltersDragDrop(),t.$filters.each((function(){t.initFilter(e(this))}))},t.initFiltersDragDrop=function(){t.$filtersContainer.sortable({cursor:"move",handle:".yith-toggle-title",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0})},t.initFilter=function(e){e.hasClass("initialized")||(t.initFilterTitle(e),t.initFilterToggle(e),t.initFilterFieldsDependencies(e),t.initFilterFields(e),t.initFilterSave(e),t.initFilterDelete(e),t.initFilterClone(e),t.initTerms(e),t.initRanges(e),e.addClass("initialized"))},t.initFilterFields=function(e){t.initFilterTermSearch(e),t.initFilterCustomizeTerms(e),t.initTaxonomy(e),t.initFilterType(e),t.initFilterDesign(e),t.initFilterCurrencyFields(e),t.clearFilterErrors(e),t.initInvalidFields(e)},t.initFilterFieldsDependencies=function(e){e.find(":input").on("change",(()=>{t._applyFilterDependencies(e)})).first().change()},t.initFilterTermSearch=function(i){const n=i.find(".term-search").first(),o=i.find(".taxonomy").first(),r=n.closest(".yith-plugin-fw-field-wrapper"),a=function(e){return{term:e.term,all:void 0!==e.all?e.all:0,taxonomy:o.val(),selected:n.val(),action:"yith_wcan_search_term",security:yith_wcan_admin.nonce.search_term}},l={placeholder:e(this).data("placeholder"),minimumInputLength:"1",templateSelection:e=>t.removeHierarchyFromString(e.text),templateResult:e=>e.text.replace("&","&"),ajax:{url:ajaxurl,dataType:"json",delay:250,data:a,processResults(t){const i=[];return t&&e.each(t,(function(e,t){i.push({id:e,text:t})})),{results:i}},cache:!0},sorter:e=>e};n.selectWoo(l),n.on("change",(()=>{t.updateTerms(i)})),r.find(".yith-plugin-fw-select-all").on("click",(function(i){return i.preventDefault(),!!t._confirmAddAllTerms(o)&&(t.block(r),e.get(ajaxurl,a({term:"",all:1})).then((i=>{let o=n.val();o||(o=[]),n.find("option").not(":selected").remove(),e.each(i,(function(t,i){o.push(t),n.append(e("<option/>",{value:t,text:i}))})),n.val(o).change(),t.unblock(r)})),!1)})),r.find(".yith-plugin-fw-deselect-all").on("click",(function(e){return e.preventDefault(),n.find("option").remove().end().val("").change(),!1}))},t.initFilterCustomizeTerms=function(e){const i=e.find(".customize-terms").find("input"),n=e.find(".order-by");i.on("change",(()=>{n.find('[value="include"]').prop("disabled",!i.is(":checked")),n.removeClass("enhanced").trigger("wc-enhanced-select-init"),!n.val()&&n.val("name"),t.updateTerms(e)})).change()},t.initTaxonomy=function(e){const i=e.find(".taxonomy").first(),n=e.find(".filter-design").first();i.on("change",(()=>{t.afterTaxonomyChange(e)})),n.on("change",(()=>{t.customizeTermsNotice(e)}))},t.initFilterType=function(t){const i=t.find(".filter-type"),n=t.find(".filter-design");i.on("change",(()=>{switch(i.val()){case"review":case"price_range":n.find('[value="color"]').remove().end().find('[value="label"]').remove();break;default:for(let t in yith_wcan_admin.supported_designs)yith_wcan_admin.supported_designs.hasOwnProperty(t)&&(n.find(`[value="${t}"]`).length||(console.log("not found"),n.append(e("<option/>",{value:t,text:yith_wcan_admin.supported_designs[t]}))))}n.change()})).change()},t.initFilterDesign=function(e){e.find(".filter-design").on("change",(()=>{t.updateTermFields(e,t.getTermsType(e))})).change()},t.initFilterTitle=function(e){const t=e.find(".heading-field").first(),i=e.find("h3.title");i.length&&t.length&&t.on("keyup",(()=>{const e=t.val();i.html(e||'<span class="no-title">'+yith_wcan_admin.labels.no_title+"</span>")}))},t.initFilterSave=function(e){e.find(".save").on("click",(function(i){return i.stopPropagation(),t.saveFilter(e),!1}))},t.initFilterDelete=function(e){e.find(".delete").on("click",(function(i){return i.stopPropagation(),t.removeFilter(e),!1}))},t.initFilterClone=function(e){e.find(".clone").on("click",(function(i){return i.stopPropagation(),t.cloneFilter(e),!1}))},t.initFilterToggle=function(i){i.find(".yith-toggle-title").on("click",(function(i){const n=e(i.target);if(i.preventDefault(),n.is(".yith-plugin-fw-onoff")){const e=n.prev('input[type="checkbox"]');return e.prop("checked",!e.prop("checked")),!1}const o=e(this).parent();return o.hasClass("yith-toggle-row-opened")?t.closeFilter(o):t.openFilter(o),!1}))},t.initFilterCurrencyFields=function(t){t.find("[data-currency]").each((function(){const t=e(this),i=e("<span/>",{text:t.data("currency"),class:"currency"});t.after(i)}))},t.initInvalidFields=function(i){i.find(":input").on("invalid",(n=>{const o=n.target,r=e(o);n.preventDefault(),t.goToFilter(i,r).done((()=>{t.addInputValidationMessage(r,o.validationMessage)}))}))},t.afterAddFilter=function(e){t.closeAllFilters(),t.openFilter(e),t.updateFilters(),t.maybeHideEmptyBox(t.$filtersContainer,t.$filters),t.$mainAddNewFilterButton.show(),e.trigger("yith_fields_init"),t.initFilter(e)},t.afterRemoveFilter=function(){t.updateFilters(),t.maybeShowEmptyBox(t.$filtersContainer,t.$filters),t.$filters.length||t.$mainAddNewFilterButton.hide()},t.afterTaxonomyChange=function(e){e.find(".term-search").first().find("option").remove().end().change(),t.customizeTermsNotice(e)},t.afterLayoutChange=function(){const i=t.$layout.find(":checked").val();t.$filters.each(((t,n)=>{const o=e(n),r=o.find(".show-toggle"),a=r.closest(".yith-toggle-content-row");"horizontal"===i?(r.find(":input").prop("checked",!1).removeClass("onoffchecked").change(),a.hide(),o.find(".term-tooltip").hide()):(a.show(),o.find(".term-tooltip").show())}))},t.customizeTermsNotice=function(e){const t=e.find(".taxonomy").first(),i=e.find(".filter-design").first(),n=e.find(".customize-terms").parent(),o=n.closest(".yith-toggle-content-row"),r=n.next(".description"),a=n.find("input"),l=r.find(".wccl-notice"),s=r.find(".images-notice"),c=t.data("taxonomies"),d=t.val(),f=i.val();yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?l.show():l.hide(),c[d]?.supports_images&&"label"===f?s.show():s.hide(),"color"!==f||yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?o.removeClass("disabled"):(a.prop("checked",!0),o.addClass("disabled"))},t.clearFilterErrors=function(t){t.on("change keydown",":input",(function(){const t=e(this);t.hasClass("validation-error")&&(t.removeClass("validation-error").removeClass("required-field-empty"),t.next(".validation-message").remove())}))},t._findFilterField=function(e,t,i=!0){let n;switch(t){case"terms_options":n=e.find(".terms-wrapper");break;case"price_ranges":n=e.find(".ranges-wrapper");break;default:n=e.find(':input[name*="['+t+']"]')}return n.length?i?n.closest(".yith-toggle-content-row"):n:null},t._applyFilterDependencies=function(i){e.each(t.dependencies,(function(e,n){const o=t._findFilterField(i,e);t._checkFilterFieldConditions(i,n)?o?.css({display:"table"}):o?.hide()}))},t._checkFilterFieldConditions=function(i,n){let o=!0;return e.each(n,(function(e,n){let r,a;o&&(r=t._findFilterField(i,e,!1),r?.length&&(a=r.first().is('input[type="radio"]')?r.filter(":checked").val().toString():r?.val()?.toString(),o=Array.isArray(n)?n.includes(a):"function"==typeof n?n(a):0===n.indexOf(":")?r.is(n):0===n.indexOf("!:")?!r.is(n.toString().substring(1)):0===n.indexOf("!")?n.toString().substring(1)!==a:n.toString()===a,void 0!==t.dependencies[e]&&(o=o&&t._checkFilterFieldConditions(i,t.dependencies[e]))))})),o},t._confirmAddAllTerms=function(e){let t=e.val(),i=e.data("taxonomies"),n=yith_wcan_admin.messages.confirm_add_all_terms;return!(i[t]?.terms_count&&i[t]?.terms_count>1)||(n=n.replace("%s",i[t]?.terms_count),confirm(n))},t.addFilter=function(){const i=wp.template("yith-wcan-filter")({id:t.nextRowIndex()}),n=e(i);return t.$filtersContainer.append(n),t.afterAddFilter(n),n},t.removeFilter=function(e){confirm(yith_wcan_admin.messages.confirm_delete)&&t.ajaxDeleteFilter(e).done((()=>{e.remove(),t.afterRemoveFilter()}))},t.getFilterData=function(i){return t.serialize(i,(e=>e.replace(/filters\[[0-9]+]\[([a-z_-]+)]/,"$1")),((t,i)=>!e(i).is('select[name*="terms"]')))},t.populateFilter=function(i,n){for(const o in n){const r=`filters_${t.getRowIndex(i)}_${o}`,a=i.find(`#${r}`),l=n[o];if(a.length||"price_ranges"===o)if("terms"===o){const n=l;if("object"!=typeof n)continue;for(const t in n){if(!n[t]?.label)continue;const i=e("<option/>",{value:t,text:n[t]?.label,selected:!0});a.append(i)}a.change(),t.updateTerms(i);for(const e in n)for(const t in n[e]){const o=`${r}_${e}_${t}`,a=i.find(`#${o}`);a.length&&a.val(n[e][t])}}else if("price_ranges"===o){const e=l;if("object"!=typeof e)continue;for(const n in e){const o=e[n];t.addRange(i,o.min,o.max,o.unlimited)}}else a.is(":checkbox")?a.prop("checked","yes"===l).change():a.is('[data-type="radio"]')?a.find(":input").prop("checked",!1).filter('[value="'+l+'"]').prop("checked",!0).change():"title"===o?a.val(n[o]).keyup():a.val(n[o]).change()}},t.cloneFilter=function(i){t.closeAllFilters((()=>{const n=t.addFilter(),o=t.getRowIndex(i),r=t.currentRowIndex();i.find(":input").each((function(){let i,a,l=e(this),s=l.attr("id");void 0!==s&&(a=s.replace("filters_"+o+"_","filters_"+r+"_"),i=n.find("#"+a),i.length&&(i.is('input[type="radio"]')||i.is('input[type="checkbox"]')?i.prop("checked",l.is(":checked")):i.is("select")?(i.find("option").length||l.find("option").clone().appendTo(i),i.val(l.val())):i.val(l.val()),-1===a.indexOf("color_2")||l.prop("disabled")||t.showTermAdditionalColor(i.closest(".term-box")),-1!==a.indexOf("mode")&&t.showTermTab(i.closest(".term-box"),i.val()),-1!==a.indexOf("image")&&i.val()&&i.closest(".image-selector").find(".placeholder-image").hide().end().find(".selected-image").show().append(l.closest(".image-selector").find(".selected-image").find("img").clone()),i.change().keyup()))}))}))},t.saveFilter=function(e){if(!t.validateFilter(e))return!1;t.ajaxSaveFilter(e).done((i=>{t.maybeSetPresetId(i.id),t.closeFilter(e)}))},t.isFilterOpen=function(e){return e.hasClass("yith-toggle-row-opened")},t.openFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_down"),e.addClass("yith-toggle-row-opened").find(".yith-toggle-content").slideDown().promise()},t.isFilterClosed=function(e){return!t.isFilterOpen(e)},t.closeFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_right"),e.find(".yith-toggle-content").slideUp(400,(function(){e.removeClass("yith-toggle-row-opened")})).promise()},t.closeAllFilters=function(e){t.closeFilter(t.$filters).done((()=>{"function"==typeof e&&e()}))},t.loadMoreFilters=function(){let i=t.$page.val();t.doAjax("yith_wcan_load_more_filters",{preset:t.getPresetId(),page:++i,_wpnonce:yith_wcan_admin.nonce.load_more_filters},t.$loadMoreFiltersButtons,{method:"get"}).done((n=>{if(n){if(n.filters)for(const i in n.filters){const o=n.filters[i],r=wp.template("yith-wcan-filter")({id:i}),a=e(r);t.populateFilter(a,o),t.$filtersContainer.append(a),t.afterAddFilter(a),a.find(".heading-field").keyup()}n.has_more?t.$page.val(i):(t.$loadMoreFiltersButtons.remove(),t.$page.remove(),t.$page=null),t.updateFilters()}}))},t.updateFilters=function(){t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.updateRowIndex()},t.validateFilters=function(){let i=!0;return t.$filters.each((function(){if(!i)return;let n=e(this);i=t.validateFilter(n)})),i},t.validateFilter=function(e){const i=t.$layout.find(":checked").val(),n=e.find(".filter-title"),o=n?.val();if("horizontal"===i&&!o)return t.addInputValidationMessage(n,yith_wcan_admin.messages.filter_title_required),t.goToFilter(e),!1;let r=!0;return e.find(":input").each((function(){r&&(r=this.reportValidity())})),r},t.goToFilter=function(i,n){return t.isFilterOpen(i)?(n=n||i,e("html, body").stop(!0).animate({scrollTop:n.offset().top-100}).promise()):e("html, body").stop(!0).animate({scrollTop:i.offset().top-100}).promise().done((()=>{t.openFilter(i),n&&n.length&&e("html, body").animate({scrollTop:n.offset().top-100})}))},t.getRowIndex=function(e){const t=e.data("item_key");return t?parseInt(t):0},t.updateRowIndex=function(){let i=0;t.$filters.each((function(t){const n=e(this).data("item_key");i=i<n?n:i})),t.rowIndex=i},t.nextRowIndex=function(){return t.rowIndex||t.updateRowIndex(),++t.rowIndex},t.currentRowIndex=function(){return t.rowIndex||t.updateRowIndex(),t.rowIndex},t.getTerms=function(e){return e.find(".term-box")},t.getTermsType=function(e){const t=e.find(".filter-design")?.val();return"label"!==t&&"color"!==t?"labels_only":"color"===t?"complete":"image_only"},t.initTerms=function(i){const n=i.find(".term-box"),o=i.find(".order-by");n.each((function(){t.initTerm(e(this))})),o.on("change",(function(){const n=e(this).val();t["include"===n?"initTermsDragDrop":"destroyTermsDragDrop"](i)}))},t.initTerm=function(e){t.initTermTabs(e),t.initTermImageSelector(e),t.initTermAdditionalColor(e)},t.initTermTabs=function(i){i.find(".term-tab-header").on("click",(function(n){const o=e(this).data("tab");n.preventDefault(),t.showTermTab(i,o)})),t.showTermTab(i,i.find(".term-mode").val())},t.initTermAdditionalColor=function(i){i.find(".term-add-second-color").on("click",(function(n){e(this);n.preventDefault(),t.showTermAdditionalColor(i)})),i.find(".term-hide-second-color").on("click",(function(n){e(this);n.preventDefault(),t.hideTermAdditionalColor(i)}))},t.initTermImageSelector=function(i){let n,o=i.find(".image-selector"),r=o.find(".placeholder-image"),a=o.find(".selected-image"),l=a.find("img"),s=o.find(".term-image"),c=a.find(".clear-image");r.off("click").on("click",(function(){t.block(r),n||(n=wp.media({title:yith_wcan_admin.labels.upload_media,button:{text:yith_wcan_admin.labels.confirm_media},multiple:!1}),n.on("select",(function(){const i=n.state().get("selection").first().toJSON();l.remove(),l=e("<img/>",{src:i.url}),a.prepend(l),s.val(i.id),t.unblock(r),r.hide(),a.show()})),n.on("close",(function(){t.unblock(r)}))),n.open()})),c.off("click").on("click",(function(e){e.preventDefault(),s.val(""),a.hide(),r.show()}))},t.initTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone"})}catch(e){}},t.destroyTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable("destroy")}catch(e){}},t.showTermTab=function(e,t,i){const n=e.find(".term-tab-header"),o=e.find(".tab"),r=o.filter(".tab-"+t);if(!r.length||!n.is(":visible")&&!i)return;const a=e.find(".term-mode");n.removeClass("active").filter('[data-tab="'+t+'"]').addClass("active"),o.hide(),r.show(),a.val(t)},t.showTermAdditionalColor=function(e){e.find(".term-add-second-color").parent().hide().next(".additional-color").show().find(".wp-color-picker").prop("disabled",!1)},t.hideTermAdditionalColor=function(e){e.find(".term-hide-second-color").parent().find(".wp-color-picker").prop("disabled",!0).end().hide().prev("p").show()},t.updateTerms=function(i){const n=i.find(".terms-wrapper");if(!n.is(":visible"))return;const o=t._getSelectedTerms(i),r=n.find(".term-box"),a=[];o&&e.each(o,(function(n,o){const l=r.filter('[data-term_id="'+o.id+'"]');if(l.length)a.push(l);else{const n=wp.template("yith-wcan-filter-term")({id:t.getRowIndex(i),term_id:o.id,name:o.name,label:o.name,tooltip:""}),r=e(n);a.push(r)}})),r.detach(),a.length&&e.each(a,(function(e,i){n.append(i),t.afterAddTerm(i)})),t.updateTermFields(i,t.getTermsType(i)),i.trigger("yith_fields_init")},t.updateTermFields=function(i,n){const o=i.find(".term-box");switch(n){case"complete":o.find(".term-tab-headers").show().find('a[data-tab="color"], span').show(),o.find(".tab.tab-color").show(),o.find(".tab.tab-image").show(),o.each((function(){const i=e(this);t.showTermTab(i,i.find(".term-mode").val(),!0)}));break;case"colors_only":o.find(".term-tab-headers").show().find('a[data-tab="image"], span').hide(),o.find(".tab.tab-color").show(),o.find(".tab.tab-image").hide(),t.showTermTab(o,"image",!0);break;case"image_only":o.find(".term-tab-headers").show().find('a[data-tab="color"], span').hide(),o.find(".tab.tab-color").hide(),o.find(".tab.tab-image").show(),t.showTermTab(o,"image",!0);break;case"labels_only":default:o.find(".term-tab-headers").hide(),o.find(".tab.tab-color").hide(),o.find(".tab.tab-image").hide()}},t.afterAddTerm=function(e){t.initTerm(e)},t._getSelectedTerms=function(i){const n=i.find(".term-search").first(),o=[];if(!n.length)return o;const r=n.val();return r?(e.each(r,(function(e,i){const r=n.find('option[value="'+i+'"]');r.length&&o.push({id:i,name:t.removeHierarchyFromString(r.text())})})),o):o},t.initRanges=function(i){const n=i.find(".range-box");t.initAddRange(i),t.initRangesPosition(i),t.initRangesDragDrop(i),n.each((function(){t.initRange(e(this))}))},t.initRange=function(e){t.initRangeDependencies(e),t.initRangeRemove(e)},t.initAddRange=function(e){e.find(".add-price-range").on("click",(function(i){i.preventDefault(),t.addRange(e),t.initRangesPosition(e)}))},t.initRangeRemove=function(e){e.find("a.range-remove").on("click",(i=>{const n=t.getItemFilter(e);i.preventDefault(),e.remove(),t.initRangesPosition(n)}))},t.initRangeDependencies=function(t){t.find('[name*="unlimited"]').on("change",(function(){const t=e(this),i=t.closest(".range-box").find(".max");t.is(":checked")?i.hide():i.show()})).change()},t.initRangesPosition=function(t){t.find(".range-box").each((function(){const t=e(this),i=t.find(".unlimited"),n=i.find(":input");t.is(":last-child")?i.show():(n.prop("checked",!1).change(),i.hide())}))},t.initRangesDragDrop=function(i){i.find(".ranges-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop(){e(this).find(".range-box").each((function(t){e(this).data("range_id",t).find(":input").attr("name",(function(){return e(this).attr("name").replace(/\[price_ranges]\[[0-9]+]/,"[price_ranges]["+t+"]")})).attr("id",(function(){return e(this).attr("id").replace(/price_ranges_[0-9]+/,"price_ranges_"+t)}))})),t.initRangesPosition(i)}})},t.addRange=function(i,n="",o="",r=!1){const a=wp.template("yith-wcan-filter-range")({id:t.getRowIndex(i),range_id:t.getNextRangeIndex(i),min:0,max:0}),l=e(a);return l.find(".min").find(":input").val(n),l.find(".max").find(":input").val(o),l.find(".unlimited").find(":input").prop("checked",r),i.find(".ranges-wrapper").append(l),t.afterAddRange(l),l},t.afterAddRange=function(e){t.initRange(e)},t.getNextRangeIndex=function(e){let t=e.find(".ranges-wrapper"),i=t.data("index"),n=0;return i||(i=t.find(".range-box").length),n=++i,t.data("index",n),n},t.ajaxSaveFilter=function(i){const n=t.getPresetId(),o=t.getFilterData(i),r=i.attr("id").replace("filter_","");return o.terms_order=t.getTerms(i).toArray().map((t=>e(t).data("term_id"))),t.doAjax("yith_wcan_save_preset_filter",{preset:n,filter:o,filter_id:r,_wpnonce:yith_wcan_admin.nonce.save_preset_filter},i)},t.ajaxDeleteFilter=function(e){const i=t.getPresetId();if(!i)return jQuery.Deferred().resolve();const n=e.attr("id").replace("filter_","");return t.doAjax("yith_wcan_delete_preset_filter",{preset:i,filter_id:n,_wpnonce:yith_wcan_admin.nonce.delete_preset_filter})},t.doAjax=function(i,n,o,r){n||(n={}),n.action=i;let a={beforeSend:()=>{o&&o.length&&t.block(o)},complete:()=>{o&&o.length&&t.unblock(o)},data:n,method:"post",dataType:"json",url:ajaxurl};return r&&(a=e.extend(a,r)),e.ajax(a)},t.getItemFilter=function(e){return e.closest(".yith-toggle-row")},t.maybeShowEmptyBox=function(e,i){const n=e.children(".yith-wcan-admin-no-post");!n.length||n.is(":visible")||i.length||t.$loadMoreFiltersButtons.length||n.show()},t.maybeHideEmptyBox=function(e,t){const i=e.children(".yith-wcan-admin-no-post");i.length&&i.is(":visible")&&t.length&&i.hide()},t.block=function(t){void 0!==e.fn.block&&t.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},t.unblock=function(t){void 0!==e.fn.unblock&&t.unblock()},t.serialize=function(t,i,n){let o={},r=t.find(":input").not("[disabled]");return"function"==typeof n&&(r=r.filter(n)),r.each((function(){let t,n=e(this),r=n.attr("name");if(r&&(r=r.replace(/^(.*)\[]$/,"$1"),"function"==typeof i&&(r=i(r)),(!n.is('[type="checkbox"]')||n.is(":checked"))&&(!n.is('[type="radio"]')||n.is(":checked"))))if(t=n.val(),-1!==r.indexOf("[")){const i=r.split("[").map((e=>e.replace(/[\[, \]]/g,""))),n=i.shift(),a=i.reverse().reduce(((e,t)=>({[t]:e})),t);void 0===o[n]?o[n]=a:o[n]=e.extend(!0,o[n],a)}else o[r]=t})),o},t.getPresetId=function(){return e("#preset_id").val()},t.maybeSetPresetId=function(i){!t.getPresetId()&&i&&e("#preset_id").val(i)},t.removeHierarchyFromString=function(e){return e.replace(/^(.*>)([^>]+)$/,"$2").replace("&","&").trim()},t.addInputValidationMessage=function(t,i){const n=e("<span/>",{class:"validation-message",text:i});t.addClass("required-field-empty").addClass("validation-error").next(".validation-message").remove().end().after(n)},t.init()}
|
1 |
+
"use strict";function YITH_WCAN_Filters(e){const t=this;t.rowIndex=0,t.dependencies={taxonomy:{type:"tax"},use_all_terms:{type:"tax"},term_ids:{type:"tax",use_all_terms:"!:checked"},filter_design:{type:["tax","review","price_range"]},label_position:{filter_design:["label","color"]},column_number:{filter_design:["label","color"],label_position:["below","hide"]},customize_terms:{type:"tax",use_all_terms:"!:checked"},terms_options:{term_ids:e=>!!e,customize_terms:":checked"},show_search:{type:"tax",filter_design:"select"},price_ranges:{type:"price_range"},price_slider_adaptive_limits:{type:"price_slider"},price_slider_design:{type:"price_slider"},price_slider_min:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_max:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_step:{type:"price_slider"},order_options:{type:"orderby"},show_stock_filter:{type:"stock_sale"},show_sale_filter:{type:"stock_sale"},show_featured_filter:{type:"stock_sale"},toggle_style:{show_toggle:":checked"},order_by:{type:"tax"},order:{type:"tax"},show_count:{type:["tax","price_range","review","stock_sale"]},hierarchical:{type:"tax",filter_design:["checkbox","radio","text"]},multiple:{type:["tax","review","price_range"],filter_design:"!radio"},relation:{type:"tax",multiple:":checked"},adoptive:{type:["tax","price_range","review","stock_sale"]}},t.$form=e("#plugin-fw-wc"),t.$mainAddNewFilterButton=e("#add_new_filter"),t.$addNewFilterButtons=e(".add-new-filter"),t.$loadMoreFiltersButtons=e(".load-more-filters"),t.$filtersContainer=e(".preset-filters"),t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.$layout=e("#preset_layout"),t.$page=e("#paged"),t.$submit=e("#submit"),t.init=function(){t.initFilters(),t.initAddFilter(),t.initLoadMoreFilters(),t.initLayout(),t.initSubmit()},t.initAddFilter=function(){t.$addNewFilterButtons.on("click",(function(e){e.preventDefault(),t.addFilter()}))},t.initLoadMoreFilters=function(){t.$loadMoreFiltersButtons.on("click",(function(e){e.preventDefault(),t.loadMoreFilters()}))},t.initSubmit=function(){t.$submit.on("click",(()=>!!t.$form.get(0).reportValidity()&&(!!t.validateFilters()&&void t.block(t.$form))))},t.initLayout=function(){t.$layout.on("change","input",(()=>{t.afterLayoutChange()})).find("input").first().change()},t.initFilters=function(){t.initFiltersDragDrop(),t.$filters.each((function(){t.initFilter(e(this))}))},t.initFiltersDragDrop=function(){t.$filtersContainer.sortable({cursor:"move",handle:".yith-toggle-title",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0})},t.initFilter=function(e){e.hasClass("initialized")||(t.initFilterTitle(e),t.initFilterToggle(e),t.initFilterFieldsDependencies(e),t.initFilterFields(e),t.initFilterSave(e),t.initFilterDelete(e),t.initFilterClone(e),t.initTerms(e),t.initRanges(e),e.addClass("initialized"))},t.initFilterFields=function(e){t.initFilterTermSearch(e),t.initFilterCustomizeTerms(e),t.initTaxonomy(e),t.initFilterType(e),t.initFilterDesign(e),t.initFilterCurrencyFields(e),t.clearFilterErrors(e),t.initInvalidFields(e)},t.initFilterFieldsDependencies=function(e){e.find(":input").on("change",(()=>{t._applyFilterDependencies(e)})).first().change()},t.initFilterTermSearch=function(i){const n=i.find(".term-search").first(),r=i.find(".taxonomy").first(),o=n.closest(".yith-plugin-fw-field-wrapper"),a=function(e){return{term:e.term,all:void 0!==e.all?e.all:0,taxonomy:r.val(),selected:n.val(),action:"yith_wcan_search_term",security:yith_wcan_admin.nonce.search_term}},l={placeholder:e(this).data("placeholder"),minimumInputLength:"1",templateSelection:e=>t.removeHierarchyFromString(e.text),templateResult:e=>e.text.replace("&","&"),ajax:{url:ajaxurl,dataType:"json",delay:250,data:a,processResults(t){const i=[];return t&&e.each(t,(function(e,t){i.push({id:e,text:t})})),{results:i}},cache:!0},sorter:e=>e};n.selectWoo(l),n.on("change",(()=>{t.updateTerms(i)})),o.find(".yith-plugin-fw-select-all").on("click",(function(i){return i.preventDefault(),!!t._confirmAddAllTerms(r)&&(t.block(o),e.get(ajaxurl,a({term:"",all:1})).then((i=>{let r=n.val();r||(r=[]),n.find("option").not(":selected").remove(),e.each(i,(function(t,i){r.push(t),n.append(e("<option/>",{value:t,text:i}))})),n.val(r).change(),t.unblock(o)})),!1)})),o.find(".yith-plugin-fw-deselect-all").on("click",(function(e){return e.preventDefault(),n.find("option").remove().end().val("").change(),!1}))},t.initFilterCustomizeTerms=function(e){const i=e.find(".customize-terms").find("input"),n=e.find(".order-by");i.on("change",(()=>{n.find('[value="include"]').prop("disabled",!i.is(":checked")),n.removeClass("enhanced").trigger("wc-enhanced-select-init"),!n.val()&&n.val("name"),t.updateTerms(e)})).change()},t.initTaxonomy=function(e){const i=e.find(".taxonomy").first(),n=e.find(".filter-design").first();i.on("change",(()=>{t.afterTaxonomyChange(e)})),n.on("change",(()=>{t.customizeTermsNotice(e)}))},t.initFilterType=function(t){const i=t.find(".filter-type"),n=t.find(".filter-design");i.on("change",(()=>{switch(i.val()){case"review":case"price_range":n.find('[value="color"]').remove().end().find('[value="label"]').remove();break;default:for(let t in yith_wcan_admin.supported_designs)yith_wcan_admin.supported_designs.hasOwnProperty(t)&&(n.find(`[value="${t}"]`).length||n.append(e("<option/>",{value:t,text:yith_wcan_admin.supported_designs[t]})))}n.change()})).change()},t.initFilterDesign=function(e){e.find(".filter-design").on("change",(()=>{t.updateTermFields(e,t.getTermsType(e))})).change()},t.initFilterTitle=function(e){const t=e.find(".heading-field").first(),i=e.find("h3.title");i.length&&t.length&&t.on("keyup",(()=>{const e=t.val();i.html(e||'<span class="no-title">'+yith_wcan_admin.labels.no_title+"</span>")}))},t.initFilterSave=function(e){e.find(".save").on("click",(function(i){return i.stopPropagation(),t.saveFilter(e),!1}))},t.initFilterDelete=function(e){e.find(".delete").on("click",(function(i){return i.stopPropagation(),t.removeFilter(e),!1}))},t.initFilterClone=function(e){e.find(".clone").on("click",(function(i){return i.stopPropagation(),t.cloneFilter(e),!1}))},t.initFilterToggle=function(i){i.find(".yith-toggle-title").on("click",(function(i){const n=e(i.target);if(i.preventDefault(),n.is(".yith-plugin-fw-onoff")){const e=n.prev('input[type="checkbox"]');return e.prop("checked",!e.prop("checked")),!1}const r=e(this).parent();return r.hasClass("yith-toggle-row-opened")?t.closeFilter(r):t.openFilter(r),!1}))},t.initFilterCurrencyFields=function(t){t.find("[data-currency]").each((function(){const t=e(this),i=e("<span/>",{text:t.data("currency"),class:"currency"});t.after(i)}))},t.initInvalidFields=function(i){i.find(":input").on("invalid",(n=>{const r=n.target,o=e(r);n.preventDefault(),t.goToFilter(i,o).done((()=>{t.addInputValidationMessage(o,r.validationMessage)}))}))},t.afterAddFilter=function(e){t.closeAllFilters(),t.openFilter(e),t.updateFilters(),t.maybeHideEmptyBox(t.$filtersContainer,t.$filters),t.$mainAddNewFilterButton.show(),e.trigger("yith_fields_init"),t.initFilter(e)},t.afterRemoveFilter=function(){t.updateFilters(),t.maybeShowEmptyBox(t.$filtersContainer,t.$filters),t.$filters.length||t.$mainAddNewFilterButton.hide()},t.afterTaxonomyChange=function(e){e.find(".term-search").first().find("option").remove().end().change(),t.customizeTermsNotice(e)},t.afterLayoutChange=function(){const i=t.$layout.find(":checked").val();t.$filters.each(((t,n)=>{const r=e(n),o=r.find(".show-toggle"),a=o.closest(".yith-toggle-content-row");"horizontal"===i?(o.find(":input").prop("checked",!1).removeClass("onoffchecked").change(),a.hide(),r.find(".term-tooltip").hide()):(a.show(),r.find(".term-tooltip").show())}))},t.customizeTermsNotice=function(e){const t=e.find(".taxonomy").first(),i=e.find(".filter-design").first(),n=e.find(".customize-terms").parent(),r=n.closest(".yith-toggle-content-row"),o=n.next(".description"),a=n.find("input"),l=o.find(".wccl-notice"),s=o.find(".images-notice"),c=t.data("taxonomies"),d=t.val(),f=i.val();yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?l.show():l.hide(),c[d]?.supports_images&&"label"===f?s.show():s.hide(),"color"!==f||yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?r.removeClass("disabled"):(a.prop("checked",!0),r.addClass("disabled"))},t.clearFilterErrors=function(t){t.on("change keydown",":input",(function(){const t=e(this);t.hasClass("validation-error")&&(t.removeClass("validation-error").removeClass("required-field-empty"),t.next(".validation-message").remove())}))},t._findFilterField=function(e,t,i=!0){let n;switch(t){case"terms_options":n=e.find(".terms-wrapper");break;case"price_ranges":n=e.find(".ranges-wrapper");break;default:n=e.find(':input[name*="['+t+']"]')}return n.length?i?n.closest(".yith-toggle-content-row"):n:null},t._applyFilterDependencies=function(i){e.each(t.dependencies,(function(e,n){const r=t._findFilterField(i,e);t._checkFilterFieldConditions(i,n)?r?.css({display:"table"}):r?.hide()}))},t._checkFilterFieldConditions=function(i,n){let r=!0;return e.each(n,(function(e,n){let o,a;r&&(o=t._findFilterField(i,e,!1),o?.length&&(a=o.first().is('input[type="radio"]')?o.filter(":checked").val().toString():o?.val()?.toString(),r=Array.isArray(n)?n.includes(a):"function"==typeof n?n(a):0===n.indexOf(":")?o.is(n):0===n.indexOf("!:")?!o.is(n.toString().substring(1)):0===n.indexOf("!")?n.toString().substring(1)!==a:n.toString()===a,void 0!==t.dependencies[e]&&(r=r&&t._checkFilterFieldConditions(i,t.dependencies[e]))))})),r},t._confirmAddAllTerms=function(e){let t=e.val(),i=e.data("taxonomies"),n=yith_wcan_admin.messages.confirm_add_all_terms;return!(i[t]?.terms_count&&i[t]?.terms_count>1)||(n=n.replace("%s",i[t]?.terms_count),confirm(n))},t.addFilter=function(){const i=wp.template("yith-wcan-filter")({id:t.nextRowIndex()}),n=e(i);return t.$filtersContainer.append(n),t.afterAddFilter(n),n},t.removeFilter=function(e){confirm(yith_wcan_admin.messages.confirm_delete)&&t.ajaxDeleteFilter(e).done((()=>{e.remove(),t.afterRemoveFilter()}))},t.getFilterData=function(i){return t.serialize(i,(e=>e.replace(/filters\[[0-9]+]\[([a-z_-]+)]/,"$1")),((t,i)=>!e(i).is('select[name*="terms"]')))},t.populateFilter=function(i,n){for(const r in n){const o=t.getRowIndex(i),a=n[r];let l="terms"===r?`filters_${o}_term_ids`:`filters_${o}_${r}`,s=i.find(`#${l}`);if(s.length||"price_ranges"===r)if("terms"===r){const n=a;if("object"!=typeof n)continue;for(const t in n){if(!n[t]?.label)continue;const i=e("<option/>",{value:t,text:n[t]?.label,selected:!0});s.append(i)}s.change(),t.updateTerms(i,!0);for(const e in n)for(const t in n[e]){const r=`filters_${o}_terms_${e}_${t}`,a=i.find(`#${r}`);a.length&&a.val(n[e][t])}}else if("price_ranges"===r){const e=a;if("object"!=typeof e)continue;for(const n in e){const r=e[n];t.addRange(i,r.min,r.max,r.unlimited)}}else s.is(":checkbox")?s.prop("checked","yes"===a).change():s.is('[data-type="radio"]')?s.find(":input").prop("checked",!1).filter('[value="'+a+'"]').prop("checked",!0).change():"title"===r?s.val(n[r]).keyup():s.val(n[r]).change()}},t.cloneFilter=function(i){t.closeAllFilters((()=>{const n=t.addFilter(),r=t.getRowIndex(i),o=t.currentRowIndex();i.find(":input").each((function(){let i,a,l=e(this),s=l.attr("id");void 0!==s&&(a=s.replace("filters_"+r+"_","filters_"+o+"_"),i=n.find("#"+a),i.length&&(i.is('input[type="radio"]')||i.is('input[type="checkbox"]')?i.prop("checked",l.is(":checked")):i.is("select")?(i.find("option").length||l.find("option").clone().appendTo(i),i.val(l.val())):i.val(l.val()),-1===a.indexOf("color_2")||l.prop("disabled")||t.showTermAdditionalColor(i.closest(".term-box")),-1!==a.indexOf("mode")&&t.showTermTab(i.closest(".term-box"),i.val()),-1!==a.indexOf("image")&&i.val()&&i.closest(".image-selector").find(".placeholder-image").hide().end().find(".selected-image").show().append(l.closest(".image-selector").find(".selected-image").find("img").clone()),i.change().keyup()))}))}))},t.saveFilter=function(e){if(!t.validateFilter(e))return!1;t.ajaxSaveFilter(e).done((i=>{t.maybeSetPresetId(i.id),t.closeFilter(e)}))},t.isFilterOpen=function(e){return e.hasClass("yith-toggle-row-opened")},t.openFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_down"),e.addClass("yith-toggle-row-opened").find(".yith-toggle-content").slideDown().promise()},t.isFilterClosed=function(e){return!t.isFilterOpen(e)},t.closeFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_right"),e.find(".yith-toggle-content").slideUp(400,(function(){e.removeClass("yith-toggle-row-opened")})).promise()},t.closeAllFilters=function(e){t.closeFilter(t.$filters).done((()=>{"function"==typeof e&&e()}))},t.loadMoreFilters=function(){let i=t.$page.val();t.doAjax("yith_wcan_load_more_filters",{preset:t.getPresetId(),page:++i,_wpnonce:yith_wcan_admin.nonce.load_more_filters},t.$loadMoreFiltersButtons,{method:"get"}).done((n=>{if(n){if(n.filters)for(const i in n.filters){const r=n.filters[i],o=wp.template("yith-wcan-filter")({id:i}),a=e(o);t.populateFilter(a,r),t.$filtersContainer.append(a),t.afterAddFilter(a),a.find(".heading-field").keyup()}n.has_more?t.$page.val(i):(t.$loadMoreFiltersButtons.remove(),t.$page.remove(),t.$page=null),t.updateFilters()}}))},t.updateFilters=function(){t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.updateRowIndex()},t.validateFilters=function(){let i=!0;return t.$filters.each((function(){if(!i)return;let n=e(this);i=t.validateFilter(n)})),i},t.validateFilter=function(e){const i=t.$layout.find(":checked").val(),n=e.find(".filter-title"),r=n?.val();if("horizontal"===i&&!r)return t.addInputValidationMessage(n,yith_wcan_admin.messages.filter_title_required),t.goToFilter(e),!1;let o=!0;return e.find(":input").each((function(){o&&(o=this.reportValidity())})),o},t.goToFilter=function(i,n){return t.isFilterOpen(i)?(n=n||i,e("html, body").stop(!0).animate({scrollTop:n.offset().top-100}).promise()):e("html, body").stop(!0).animate({scrollTop:i.offset().top-100}).promise().done((()=>{t.openFilter(i),n&&n.length&&e("html, body").animate({scrollTop:n.offset().top-100})}))},t.getRowIndex=function(e){const t=e.data("item_key");return t?parseInt(t):0},t.updateRowIndex=function(){let i=0;t.$filters.each((function(t){const n=e(this).data("item_key");i=i<n?n:i})),t.rowIndex=i},t.nextRowIndex=function(){return t.rowIndex||t.updateRowIndex(),++t.rowIndex},t.currentRowIndex=function(){return t.rowIndex||t.updateRowIndex(),t.rowIndex},t.getTerms=function(e){return e.find(".term-box")},t.getTermsType=function(e){const t=e.find(".filter-design")?.val();return"label"!==t&&"color"!==t?"labels_only":"color"===t?"complete":"image_only"},t.initTerms=function(i){const n=i.find(".term-box"),r=i.find(".order-by");n.each((function(){t.initTerm(e(this))})),r.on("change",(function(){const n=e(this).val();t["include"===n?"initTermsDragDrop":"destroyTermsDragDrop"](i)})).change()},t.initTerm=function(e){t.initTermTabs(e),t.initTermImageSelector(e),t.initTermAdditionalColor(e)},t.initTermTabs=function(i){i.find(".term-tab-header").on("click",(function(n){const r=e(this).data("tab");n.preventDefault(),t.showTermTab(i,r)})),t.showTermTab(i,i.find(".term-mode").val())},t.initTermAdditionalColor=function(i){i.find(".term-add-second-color").on("click",(function(n){e(this);n.preventDefault(),t.showTermAdditionalColor(i)})),i.find(".term-hide-second-color").on("click",(function(n){e(this);n.preventDefault(),t.hideTermAdditionalColor(i)}))},t.initTermImageSelector=function(i){let n,r=i.find(".image-selector"),o=r.find(".placeholder-image"),a=r.find(".selected-image"),l=a.find("img"),s=r.find(".term-image"),c=a.find(".clear-image");o.off("click").on("click",(function(){t.block(o),n||(n=wp.media({title:yith_wcan_admin.labels.upload_media,button:{text:yith_wcan_admin.labels.confirm_media},multiple:!1}),n.on("select",(function(){const i=n.state().get("selection").first().toJSON();l.remove(),l=e("<img/>",{src:i.url}),a.prepend(l),s.val(i.id),t.unblock(o),o.hide(),a.show()})),n.on("close",(function(){t.unblock(o)}))),n.open()})),c.off("click").on("click",(function(e){e.preventDefault(),s.val(""),a.hide(),o.show()}))},t.initTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone"})}catch(e){}},t.destroyTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable("destroy")}catch(e){}},t.showTermTab=function(e,t,i){const n=e.find(".term-tab-header"),r=e.find(".tab"),o=r.filter(".tab-"+t);if(!o.length||!n.is(":visible")&&!i)return;const a=e.find(".term-mode");n.removeClass("active").filter('[data-tab="'+t+'"]').addClass("active"),r.hide(),o.show(),a.val(t)},t.showTermAdditionalColor=function(e){e.find(".term-add-second-color").parent().hide().next(".additional-color").show().find(".wp-color-picker").prop("disabled",!1)},t.hideTermAdditionalColor=function(e){e.find(".term-hide-second-color").parent().find(".wp-color-picker").prop("disabled",!0).end().hide().prev("p").show()},t.updateTerms=function(i,n){const r=i.find(".terms-wrapper");if(!n&&!r.is(":visible"))return;const o=t._getSelectedTerms(i),a=r.find(".term-box"),l=[];o&&e.each(o,(function(n,r){const o=a.filter('[data-term_id="'+r.id+'"]');if(o.length)l.push(o);else{const n=wp.template("yith-wcan-filter-term")({id:t.getRowIndex(i),term_id:r.id,name:r.name,label:r.name,tooltip:""}),o=e(n);l.push(o)}})),a.detach(),l.length&&e.each(l,(function(e,i){r.append(i),t.afterAddTerm(i)})),t.updateTermFields(i,t.getTermsType(i)),i.trigger("yith_fields_init")},t.updateTermFields=function(i,n){const r=i.find(".term-box");switch(n){case"complete":r.find(".term-tab-headers").show().find('a[data-tab="color"], span').show(),r.find(".tab.tab-color").show(),r.find(".tab.tab-image").show(),r.each((function(){const i=e(this);t.showTermTab(i,i.find(".term-mode").val(),!0)}));break;case"colors_only":r.find(".term-tab-headers").show().find('a[data-tab="image"], span').hide(),r.find(".tab.tab-color").show(),r.find(".tab.tab-image").hide(),t.showTermTab(r,"image",!0);break;case"image_only":r.find(".term-tab-headers").show().find('a[data-tab="color"], span').hide(),r.find(".tab.tab-color").hide(),r.find(".tab.tab-image").show(),t.showTermTab(r,"image",!0);break;case"labels_only":default:r.find(".term-tab-headers").hide(),r.find(".tab.tab-color").hide(),r.find(".tab.tab-image").hide()}},t.afterAddTerm=function(e){t.initTerm(e)},t._getSelectedTerms=function(i){const n=i.find(".term-search").first(),r=[];if(!n.length)return r;const o=n.val();return o?(e.each(o,(function(e,i){const o=n.find('option[value="'+i+'"]');o.length&&r.push({id:i,name:t.removeHierarchyFromString(o.text())})})),r):r},t.initRanges=function(i){const n=i.find(".range-box");t.initAddRange(i),t.initRangesPosition(i),t.initRangesDragDrop(i),n.each((function(){t.initRange(e(this))}))},t.initRange=function(e){t.initRangeDependencies(e),t.initRangeRemove(e)},t.initAddRange=function(e){e.find(".add-price-range").on("click",(function(i){i.preventDefault(),t.addRange(e),t.initRangesPosition(e)}))},t.initRangeRemove=function(e){e.find("a.range-remove").on("click",(i=>{const n=t.getItemFilter(e);i.preventDefault(),e.remove(),t.initRangesPosition(n)}))},t.initRangeDependencies=function(t){t.find('[name*="unlimited"]').on("change",(function(){const t=e(this),i=t.closest(".range-box").find(".max");t.is(":checked")?i.hide():i.show()})).change()},t.initRangesPosition=function(t){t.find(".range-box").each((function(){const t=e(this),i=t.find(".unlimited"),n=i.find(":input");t.is(":last-child")?i.show():(n.prop("checked",!1).change(),i.hide())}))},t.initRangesDragDrop=function(i){i.find(".ranges-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop(){e(this).find(".range-box").each((function(t){e(this).data("range_id",t).find(":input").attr("name",(function(){return e(this).attr("name").replace(/\[price_ranges]\[[0-9]+]/,"[price_ranges]["+t+"]")})).attr("id",(function(){return e(this).attr("id").replace(/price_ranges_[0-9]+/,"price_ranges_"+t)}))})),t.initRangesPosition(i)}})},t.addRange=function(i,n="",r="",o=!1){const a=wp.template("yith-wcan-filter-range")({id:t.getRowIndex(i),range_id:t.getNextRangeIndex(i),min:0,max:0}),l=e(a);return l.find(".min").find(":input").val(n),l.find(".max").find(":input").val(r),l.find(".unlimited").find(":input").prop("checked",o),i.find(".ranges-wrapper").append(l),t.afterAddRange(l),l},t.afterAddRange=function(e){t.initRange(e)},t.getNextRangeIndex=function(e){let t=e.find(".ranges-wrapper"),i=t.data("index"),n=0;return i||(i=t.find(".range-box").length),n=++i,t.data("index",n),n},t.ajaxSaveFilter=function(i){const n=t.getPresetId(),r=t.getFilterData(i),o=i.attr("id").replace("filter_","");return r.terms_order=t.getTerms(i).toArray().map((t=>e(t).data("term_id"))),t.doAjax("yith_wcan_save_preset_filter",{preset:n,filter:r,filter_id:o,_wpnonce:yith_wcan_admin.nonce.save_preset_filter},i)},t.ajaxDeleteFilter=function(e){const i=t.getPresetId();if(!i)return jQuery.Deferred().resolve();const n=e.attr("id").replace("filter_","");return t.doAjax("yith_wcan_delete_preset_filter",{preset:i,filter_id:n,_wpnonce:yith_wcan_admin.nonce.delete_preset_filter})},t.doAjax=function(i,n,r,o){n||(n={}),n.action=i;let a={beforeSend:()=>{r&&r.length&&t.block(r)},complete:()=>{r&&r.length&&t.unblock(r)},data:n,method:"post",dataType:"json",url:ajaxurl};return o&&(a=e.extend(a,o)),e.ajax(a)},t.getItemFilter=function(e){return e.closest(".yith-toggle-row")},t.maybeShowEmptyBox=function(e,i){const n=e.children(".yith-wcan-admin-no-post");!n.length||n.is(":visible")||i.length||t.$loadMoreFiltersButtons.length||n.show()},t.maybeHideEmptyBox=function(e,t){const i=e.children(".yith-wcan-admin-no-post");i.length&&i.is(":visible")&&t.length&&i.hide()},t.block=function(t){void 0!==e.fn.block&&t.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},t.unblock=function(t){void 0!==e.fn.unblock&&t.unblock()},t.serialize=function(t,i,n){let r={},o=t.find(":input").not("[disabled]");return"function"==typeof n&&(o=o.filter(n)),o.each((function(){let t,n=e(this),o=n.attr("name");if(o&&(o=o.replace(/^(.*)\[]$/,"$1"),"function"==typeof i&&(o=i(o)),(!n.is('[type="checkbox"]')||n.is(":checked"))&&(!n.is('[type="radio"]')||n.is(":checked"))))if(t=n.val(),-1!==o.indexOf("[")){const i=o.split("[").map((e=>e.replace(/[\[, \]]/g,""))),n=i.shift(),a=i.reverse().reduce(((e,t)=>({[t]:e})),t);void 0===r[n]?r[n]=a:r[n]=e.extend(!0,r[n],a)}else r[o]=t})),r},t.getPresetId=function(){return e("#preset_id").val()},t.maybeSetPresetId=function(i){!t.getPresetId()&&i&&e("#preset_id").val(i)},t.removeHierarchyFromString=function(e){return e.replace(/^(.*>)([^>]+)$/,"$2").replace("&","&").trim()},t.addInputValidationMessage=function(t,i){const n=e("<span/>",{class:"validation-message",text:i});t.addClass("required-field-empty").addClass("validation-error").next(".validation-message").remove().end().after(n)},t.init()}
|
@@ -106,6 +106,13 @@ var YITH_WCAN_Filter = /*#__PURE__*/function () {
|
|
106 |
$('.woocommerce-ordering').on('change', 'select.orderby', function () {
|
107 |
$(this).closest('form').submit();
|
108 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
$(window).trigger('scroll');
|
110 |
$(document).trigger('yith-wcan-ajax-filtered', [response, filters]).trigger('yith_wcwl_reload_fragments');
|
111 |
} // build url to show
|
@@ -258,7 +265,10 @@ var YITH_WCAN_Filter = /*#__PURE__*/function () {
|
|
258 |
}
|
259 |
|
260 |
params = $.extend({
|
261 |
-
url: url
|
|
|
|
|
|
|
262 |
}, params);
|
263 |
this.xhr = $.ajax(params);
|
264 |
return this.xhr;
|
@@ -301,7 +311,16 @@ var YITH_WCAN_Filter = /*#__PURE__*/function () {
|
|
301 |
}, {
|
302 |
key: "isFilterParam",
|
303 |
value: function isFilterParam(param) {
|
304 |
-
var supportedParams = ['rating_filter', 'min_price', 'max_price', 'price_ranges', 'onsale_filter', 'instock_filter', 'featured_filter', 'orderby', 'product-page', yith_wcan_shortcodes.query_param]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
return i.replace('pa_', 'filter_');
|
306 |
}));
|
307 |
|
@@ -1391,6 +1410,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1391 |
|
1392 |
$toggle.off('click').on('click', function (ev) {
|
1393 |
ev.stopPropagation();
|
|
|
1394 |
$target.slideToggle(400, function () {
|
1395 |
$container.toggleClass('opened').toggleClass('closed');
|
1396 |
});
|
@@ -1547,12 +1567,22 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1547 |
} // close all collpasable before showing modal
|
1548 |
|
1549 |
}, {
|
1550 |
-
key: "
|
1551 |
-
value: function
|
1552 |
var _this5 = this;
|
1553 |
|
1554 |
this.$filters.not('.no-title').not(function (i, v) {
|
1555 |
return _this5.isFilterActive($(v));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1556 |
}).find('.filter-content').hide().end().find('.filter-title').addClass('closed').removeClass('opened');
|
1557 |
} // update status change flag, if filters have changed
|
1558 |
|
@@ -1590,13 +1620,13 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1590 |
value: function filter() {
|
1591 |
var _window,
|
1592 |
_filter$doFilter,
|
1593 |
-
|
1594 |
|
1595 |
var filter = (_window = window) === null || _window === void 0 ? void 0 : _window.product_filter;
|
1596 |
filter === null || filter === void 0 ? void 0 : (_filter$doFilter = filter.doFilter(this.getFiltersProperties(), this.target, this.preset)) === null || _filter$doFilter === void 0 ? void 0 : _filter$doFilter.done(function () {
|
1597 |
-
var newPreset = $(
|
1598 |
|
1599 |
-
if (!
|
1600 |
var targetOffset = newPreset.offset().top;
|
1601 |
|
1602 |
if (!!yith_wcan_shortcodes.scroll_target) {
|
@@ -1610,8 +1640,8 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1610 |
} // register new filters, clear status flag
|
1611 |
|
1612 |
|
1613 |
-
|
1614 |
-
|
1615 |
});
|
1616 |
|
1617 |
if (this.isMobile) {
|
@@ -1674,11 +1704,12 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1674 |
break;
|
1675 |
|
1676 |
case 'price_slider':
|
1677 |
-
var
|
|
|
1678 |
max = parseFloat($filter.find('.price-slider').data('max')),
|
1679 |
currentMin = parseFloat($filter.find('.price-slider-min').val()),
|
1680 |
currentMax = parseFloat($filter.find('.price-slider-max').val());
|
1681 |
-
active = currentMin
|
1682 |
break;
|
1683 |
|
1684 |
case 'orderby':
|
@@ -1940,7 +1971,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1940 |
}, {
|
1941 |
key: "maybeShowClearFilter",
|
1942 |
value: function maybeShowClearFilter($filter) {
|
1943 |
-
var
|
1944 |
|
1945 |
if (!this.isFilterActive($filter) || !yith_wcan_shortcodes.show_clear_filter) {
|
1946 |
return;
|
@@ -1956,12 +1987,12 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1956 |
}).prependTo($filter.find('.filter-content')).on('click', function (ev) {
|
1957 |
ev.preventDefault();
|
1958 |
|
1959 |
-
|
1960 |
|
1961 |
-
|
1962 |
|
1963 |
if (yith_wcan_shortcodes.instant_filters) {
|
1964 |
-
|
1965 |
}
|
1966 |
});
|
1967 |
} // show clearAll anchor, when on mobile layout
|
@@ -1969,7 +2000,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1969 |
}, {
|
1970 |
key: "maybeShowClearAllFilters",
|
1971 |
value: function maybeShowClearAllFilters() {
|
1972 |
-
var
|
1973 |
|
1974 |
if (!this.isAnyFilterActive() || !this.isMobile) {
|
1975 |
return;
|
@@ -1985,12 +2016,12 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
1985 |
}).prependTo(this.$preset.find('.filters-container')).on('click', function (ev) {
|
1986 |
ev.preventDefault();
|
1987 |
|
1988 |
-
|
1989 |
|
1990 |
-
|
1991 |
|
1992 |
if (yith_wcan_shortcodes.instant_filters) {
|
1993 |
-
|
1994 |
}
|
1995 |
});
|
1996 |
} // hide clear selection anchor
|
@@ -2036,7 +2067,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
2036 |
$dropdown.find('option').each(function () {
|
2037 |
var $option = $(this);
|
2038 |
|
2039 |
-
if ($option.val() === properties[taxonomy]) {
|
2040 |
$option.prop('selected', false);
|
2041 |
}
|
2042 |
});
|
@@ -2054,7 +2085,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
2054 |
value;
|
2055 |
value = $label.length ? $label.find(':input').val() : $anchor.data('term-slug');
|
2056 |
|
2057 |
-
if (value === properties[taxonomy]) {
|
2058 |
$item.children('label').children('a').click();
|
2059 |
$item.removeClass('active');
|
2060 |
}
|
@@ -2220,25 +2251,29 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
2220 |
}, {
|
2221 |
key: "openModal",
|
2222 |
value: function openModal() {
|
2223 |
-
var
|
2224 |
|
2225 |
if (!this.isMobile) {
|
2226 |
return;
|
2227 |
}
|
2228 |
|
2229 |
-
|
|
|
|
|
|
|
|
|
2230 |
|
2231 |
$('body').css('overflow', 'hidden').addClass('yith-wcan-preset-modal-open');
|
2232 |
this.$preset.show();
|
2233 |
setTimeout(function () {
|
2234 |
-
|
2235 |
}, 100);
|
2236 |
} // close filters modal, when in mobile layout
|
2237 |
|
2238 |
}, {
|
2239 |
key: "closeModal",
|
2240 |
value: function closeModal() {
|
2241 |
-
var
|
2242 |
|
2243 |
if (!this.isMobile) {
|
2244 |
return;
|
@@ -2246,7 +2281,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
|
|
2246 |
|
2247 |
this.$preset.removeClass('open');
|
2248 |
setTimeout(function () {
|
2249 |
-
|
2250 |
|
2251 |
$('body').css('overflow', 'auto').removeClass('yith-wcan-preset-modal-open');
|
2252 |
}, 300);
|
106 |
$('.woocommerce-ordering').on('change', 'select.orderby', function () {
|
107 |
$(this).closest('form').submit();
|
108 |
});
|
109 |
+
|
110 |
+
if (filters && !!Object.keys(filters).length) {
|
111 |
+
$('body').addClass('filtered');
|
112 |
+
} else {
|
113 |
+
$('body').removeClass('filtered');
|
114 |
+
}
|
115 |
+
|
116 |
$(window).trigger('scroll');
|
117 |
$(document).trigger('yith-wcan-ajax-filtered', [response, filters]).trigger('yith_wcwl_reload_fragments');
|
118 |
} // build url to show
|
265 |
}
|
266 |
|
267 |
params = $.extend({
|
268 |
+
url: url,
|
269 |
+
headers: {
|
270 |
+
'X-YITH-WCAN': 1
|
271 |
+
}
|
272 |
}, params);
|
273 |
this.xhr = $.ajax(params);
|
274 |
return this.xhr;
|
311 |
}, {
|
312 |
key: "isFilterParam",
|
313 |
value: function isFilterParam(param) {
|
314 |
+
var supportedParams = ['rating_filter', 'min_price', 'max_price', 'price_ranges', 'onsale_filter', 'instock_filter', 'featured_filter', 'orderby', 'product-page', yith_wcan_shortcodes.query_param],
|
315 |
+
customParams; // filter properties
|
316 |
+
|
317 |
+
customParams = $(document).triggerHandler('yith_wcan_supported_filters_parameters', [supportedParams]);
|
318 |
+
|
319 |
+
if (!!customParams) {
|
320 |
+
supportedParams = customParams;
|
321 |
+
}
|
322 |
+
|
323 |
+
supportedParams = supportedParams.concat(yith_wcan_shortcodes.supported_taxonomies.map(function (i) {
|
324 |
return i.replace('pa_', 'filter_');
|
325 |
}));
|
326 |
|
1410 |
|
1411 |
$toggle.off('click').on('click', function (ev) {
|
1412 |
ev.stopPropagation();
|
1413 |
+
ev.preventDefault();
|
1414 |
$target.slideToggle(400, function () {
|
1415 |
$container.toggleClass('opened').toggleClass('closed');
|
1416 |
});
|
1567 |
} // close all collpasable before showing modal
|
1568 |
|
1569 |
}, {
|
1570 |
+
key: "_openAllCollapsables",
|
1571 |
+
value: function _openAllCollapsables() {
|
1572 |
var _this5 = this;
|
1573 |
|
1574 |
this.$filters.not('.no-title').not(function (i, v) {
|
1575 |
return _this5.isFilterActive($(v));
|
1576 |
+
}).find('.filter-content').show().end().find('.filter-title').removeClass('closed').addClass('opened');
|
1577 |
+
} // close all collpasable before showing modal
|
1578 |
+
|
1579 |
+
}, {
|
1580 |
+
key: "_closeAllCollapsables",
|
1581 |
+
value: function _closeAllCollapsables() {
|
1582 |
+
var _this6 = this;
|
1583 |
+
|
1584 |
+
this.$filters.not('.no-title').not(function (i, v) {
|
1585 |
+
return _this6.isFilterActive($(v));
|
1586 |
}).find('.filter-content').hide().end().find('.filter-title').addClass('closed').removeClass('opened');
|
1587 |
} // update status change flag, if filters have changed
|
1588 |
|
1620 |
value: function filter() {
|
1621 |
var _window,
|
1622 |
_filter$doFilter,
|
1623 |
+
_this7 = this;
|
1624 |
|
1625 |
var filter = (_window = window) === null || _window === void 0 ? void 0 : _window.product_filter;
|
1626 |
filter === null || filter === void 0 ? void 0 : (_filter$doFilter = filter.doFilter(this.getFiltersProperties(), this.target, this.preset)) === null || _filter$doFilter === void 0 ? void 0 : _filter$doFilter.done(function () {
|
1627 |
+
var newPreset = $(_this7.preset);
|
1628 |
|
1629 |
+
if (!_this7.isMobile && newPreset.length && yith_wcan_shortcodes.scroll_top) {
|
1630 |
var targetOffset = newPreset.offset().top;
|
1631 |
|
1632 |
if (!!yith_wcan_shortcodes.scroll_target) {
|
1640 |
} // register new filters, clear status flag
|
1641 |
|
1642 |
|
1643 |
+
_this7.originalFilters = _this7.getFiltersProperties();
|
1644 |
+
_this7.dirty = false;
|
1645 |
});
|
1646 |
|
1647 |
if (this.isMobile) {
|
1704 |
break;
|
1705 |
|
1706 |
case 'price_slider':
|
1707 |
+
var step = parseFloat($filter.find('.price-slider').data('step')),
|
1708 |
+
min = parseFloat($filter.find('.price-slider').data('min')),
|
1709 |
max = parseFloat($filter.find('.price-slider').data('max')),
|
1710 |
currentMin = parseFloat($filter.find('.price-slider-min').val()),
|
1711 |
currentMax = parseFloat($filter.find('.price-slider-max').val());
|
1712 |
+
active = Math.abs(currentMin - min) >= step || Math.abs(currentMax - max) >= step;
|
1713 |
break;
|
1714 |
|
1715 |
case 'orderby':
|
1971 |
}, {
|
1972 |
key: "maybeShowClearFilter",
|
1973 |
value: function maybeShowClearFilter($filter) {
|
1974 |
+
var _this8 = this;
|
1975 |
|
1976 |
if (!this.isFilterActive($filter) || !yith_wcan_shortcodes.show_clear_filter) {
|
1977 |
return;
|
1987 |
}).prependTo($filter.find('.filter-content')).on('click', function (ev) {
|
1988 |
ev.preventDefault();
|
1989 |
|
1990 |
+
_this8.deactivateFilter($filter, false, yith_wcan_shortcodes.instant_filters);
|
1991 |
|
1992 |
+
_this8.maybeHideClearFilter($filter);
|
1993 |
|
1994 |
if (yith_wcan_shortcodes.instant_filters) {
|
1995 |
+
_this8.closeModal();
|
1996 |
}
|
1997 |
});
|
1998 |
} // show clearAll anchor, when on mobile layout
|
2000 |
}, {
|
2001 |
key: "maybeShowClearAllFilters",
|
2002 |
value: function maybeShowClearAllFilters() {
|
2003 |
+
var _this9 = this;
|
2004 |
|
2005 |
if (!this.isAnyFilterActive() || !this.isMobile) {
|
2006 |
return;
|
2016 |
}).prependTo(this.$preset.find('.filters-container')).on('click', function (ev) {
|
2017 |
ev.preventDefault();
|
2018 |
|
2019 |
+
_this9.deactivateAllFilters(yith_wcan_shortcodes.instant_filters);
|
2020 |
|
2021 |
+
_this9.maybeHideClearAllFilters();
|
2022 |
|
2023 |
if (yith_wcan_shortcodes.instant_filters) {
|
2024 |
+
_this9.closeModal();
|
2025 |
}
|
2026 |
});
|
2027 |
} // hide clear selection anchor
|
2067 |
$dropdown.find('option').each(function () {
|
2068 |
var $option = $(this);
|
2069 |
|
2070 |
+
if ($option.val().toString() === properties[taxonomy].toString()) {
|
2071 |
$option.prop('selected', false);
|
2072 |
}
|
2073 |
});
|
2085 |
value;
|
2086 |
value = $label.length ? $label.find(':input').val() : $anchor.data('term-slug');
|
2087 |
|
2088 |
+
if (value.toString() === properties[taxonomy].toString()) {
|
2089 |
$item.children('label').children('a').click();
|
2090 |
$item.removeClass('active');
|
2091 |
}
|
2251 |
}, {
|
2252 |
key: "openModal",
|
2253 |
value: function openModal() {
|
2254 |
+
var _this10 = this;
|
2255 |
|
2256 |
if (!this.isMobile) {
|
2257 |
return;
|
2258 |
}
|
2259 |
|
2260 |
+
if (yith_wcan_shortcodes.toggles_open_on_modal) {
|
2261 |
+
this._openAllCollapsables();
|
2262 |
+
} else {
|
2263 |
+
this._closeAllCollapsables();
|
2264 |
+
}
|
2265 |
|
2266 |
$('body').css('overflow', 'hidden').addClass('yith-wcan-preset-modal-open');
|
2267 |
this.$preset.show();
|
2268 |
setTimeout(function () {
|
2269 |
+
_this10.$preset.addClass('open');
|
2270 |
}, 100);
|
2271 |
} // close filters modal, when in mobile layout
|
2272 |
|
2273 |
}, {
|
2274 |
key: "closeModal",
|
2275 |
value: function closeModal() {
|
2276 |
+
var _this11 = this;
|
2277 |
|
2278 |
if (!this.isMobile) {
|
2279 |
return;
|
2281 |
|
2282 |
this.$preset.removeClass('open');
|
2283 |
setTimeout(function () {
|
2284 |
+
_this11.$preset.hide();
|
2285 |
|
2286 |
$('body').css('overflow', 'auto').removeClass('yith-wcan-preset-modal-open');
|
2287 |
}, 300);
|
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/config.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-filter.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-reset-button.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-dropdown.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-preset.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/index.js"],"names":["$","jQuery","YITH_WCAN_Filter","location","search","head","html","pageTitle","document","title","alternativeUrl","searchAlternativeUrl","doingAjax","initialized","yith_wcan_shortcodes","ajax_filters","pushUrlToHistory","filters","target","preset","targetUrl","$target","customFilters","triggerHandler","block","buildUrl","window","_doAjax","done","response","_beforeFilter","refreshFragments","unblock","_afterFilter","trigger","on","closest","submit","queryParam","query_param","params","url","base_url","origin","pathname","self","haveFilters","Object","keys","length","session_param","replace","RegExp","originalSearch","searchParams","split","reduce","a","v","items","isFilterParam","i","_cleanParam","defaultUrl","matches","indexOf","match","change_browser_url","navigator","userAgent","history","pushState","responseDom","createElement","$response","innerHTML","$preset","$destination","find","replaceWith","first","content","param","process_sanitize","skip_sanitize","encodeURIComponent","xhr","abort","$el","background","loader","message","overlayCSS","opacity","supportedParams","concat","supported_taxonomies","map","YITH_WCAN_Reset_Button","el","$reset","ev","preventDefault","each","data","deactivateAllFilters","closeModal","addClass","YITH_WCAN_Dropdown","opts","$originalSelect","is","defaultPerPage","defaultOrder","defaultAll","defaults","showSearch","paginate","perPage","order","getElements","labels","emptyLabel","empty_option","searchPlaceholder","search_placeholder","noItemsFound","no_items","showMore","show_more","options","_hideSelect","_initTemplate","_initActions","hide","$mainSpan","$labelSpan","getLabel","$dropdownSpan","$matchingItemsList","append","_initSearchTemplate","_initShowMoreTemplate","after","$_main","$_label","$_dropdown","$_items","$dropdwonSpan","$container","$search","name","type","placeholder","prependTo","$_search","$showMore","text","loadNextPage","bind","$_showMore","stopPropagation","toggleDropdown","_populateItems","$li","value","isActive","hasClass","isValueSelected","toggleClass","_changeItemStatus","siblings","removeClass","input","parent","prop","change","selfOriginated","_selectItem","_deselectItem","updateLabel","closeDropdown","_afterDropdownOpen","dropdowns","filter","select","_closeOtherDropdowns","val","limit","matchingElements","$options","getOptions","promise","Promise","resolve","t","label","regex","show","test","push","then","retrievedElements","_formatItems","indexes","hasMore","sort","b","mod","slice","active","option","getOptionByValue","$item","attr","$anchor","template","count","href","$checkbox","$label","prepend","page","parseInt","getMatchingElements","resultSet","matchingItems","_emptyItems","_hideLoadMore","currentPage","unshift","_generateItem","_showLoadMore","status","$option","hasSelectedValues","getSelectedLabels","join","getSelectedOptions","found","getSelectedValues","toString","values","YITH_WCAN_Preset","_regiterStatus","_initFilterButton","_initResponsive","_initFilters","getFilters","$filter","_initFilter","maybeShowClearAllFilters","$filterButtons","modal_on_mobile","media","matchMedia","mobile_media_query","isMobile","_afterLayoutChange","resize","handleChange","$currentFilter","multiple","$items","not","children","activeFilters","maybeFilter","maybeToggleClearAllFilters","maybeToggleClearFilter","delegateTarget","call","$input","_initTooltip","_initPriceSlider","_initDropdown","_initCollapsable","maybeShowClearFilter","_initCustomInput","position","th","tooltip","wrapperWidth","outerWidth","left","width","container","css","toFixed","fadeIn","fadeOut","remove","$dropdown","selectWoo","_initDropdownObject","terms_per_page","$minInput","$maxInput","min","parseFloat","max","currentMin","currentMax","step","handleSliderChange","sliderTimeout","clearTimeout","setTimeout","ionRangeSlider","skin","from","to","min_interval","values_separator","prettify","formatPrice","onChange","onFinish","add","off","_initTitleCollapsable","_initHierarchyCollapsable","$title","_initToggle","parents","show_current_children","$t","$toggle","appendTo","slideToggle","containerClass","wrap","originalFilters","getFiltersProperties","_addCloseModalButton","_addApplyFiltersModalButton","_switchToCollapsables","removeAttr","_removeCloseModalButton","_removeApplyFiltersModalButton","_switchBackCollapsables","$closeButton","close","modalElements","closeButton","$filterButton","show_results","applyFiltersButton","removeData","$filters","isFilterActive","end","currentFilters","currentStr","JSON","stringify","originalStr","dirty","$initiator","maybeRegisterStatusChange","instant_filters","product_filter","doFilter","newPreset","scroll_top","targetOffset","offset","top","scroll_target","scrollTarget","animate","scrollTop","getActiveFilters","filterType","filteredActive","properties","filteredProperties","$active","activeTerms","taxonomy","isAttr","relation","get","pop","glue","rating_filter","price_ranges","min_price","max_price","onsale_filter","instock_filter","featured_filter","orderby","filterProperties","getFilterProperties","mergeProperties","hasProp","includes","maybeHideClearFilter","isAnyFilterActive","maybeHideClearAllFilters","show_clear_filter","clear_selection","role","deactivateFilter","clear_all_selections","$activeItems","click","formattedRange","$priceSlider","getFiltersByProperties","_closeAllCollapsables","price","accounting","formatMoney","symbol","currency_format","decimal","thousand","precision","format","set1","set2","hasOwnProperty","newValue","index","arr","queryTypeParam","globalThis"],"mappings":"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","file":"yith-wcan-shortcodes.js","sourcesContent":["'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nconst $ = jQuery; // we can do this as WebPack will compact all together inside a closure.\n\nexport { $ };\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Filter {\n\t// currently executing xhr\n\txhr = null;\n\n\t// flag set during ajax call handling\n\tdoingAjax = false;\n\n\t// register original url search param\n\toriginalSearch = location.search;\n\n\t// flag set once init has executed\n\tinitialized = false;\n\n\t// init object\n\tconstructor() {\n\t\tconst head = $( 'head' ).html(),\n\t\t\tpageTitle = document.title,\n\t\t\talternativeUrl = this.searchAlternativeUrl( head );\n\n\t\talternativeUrl &&\n\t\t\t! this.doingAjax &&\n\t\t\t! this.initialized &&\n\t\t\t! yith_wcan_shortcodes.ajax_filters &&\n\t\t\tthis.pushUrlToHistory( alternativeUrl, pageTitle );\n\n\t\tthis.initialized = true;\n\t}\n\n\t// execute call to filter products in current view\n\tdoFilter( filters, target, preset ) {\n\t\tlet targetUrl,\n\t\t\t$target = target ? $( target ) : $( 'body' ),\n\t\t\tcustomFilters;\n\n\t\t// filter properties\n\t\tcustomFilters = $(\n\t\t\tdocument\n\t\t).triggerHandler( 'yith_wcan_filters_parameters', [ filters ] );\n\n\t\tif ( !! customFilters ) {\n\t\t\tfilters = customFilters;\n\t\t}\n\n\t\t// block elements before filtering\n\t\t$target && this.block( $target );\n\n\t\t// calculate target url\n\t\ttargetUrl = this.buildUrl( filters );\n\n\t\t// if no ajax, simply change page url\n\t\tif ( ! yith_wcan_shortcodes.ajax_filters ) {\n\t\t\twindow.location = targetUrl;\n\t\t\treturn;\n\t\t}\n\n\t\t// start doing ajax\n\t\tthis.doingAjax = true;\n\n\t\treturn this._doAjax( targetUrl ).done( ( response ) => {\n\t\t\ttargetUrl = this.searchAlternativeUrl( response, targetUrl );\n\n\t\t\tthis._beforeFilter( response, filters );\n\n\t\t\tthis.refreshFragments( target, preset, response );\n\t\t\tthis.pushUrlToHistory( targetUrl, response.pageTitle );\n\n\t\t\t$target && this.unblock( $target );\n\n\t\t\tthis._afterFilter( response, filters );\n\n\t\t\tthis.doingAjax = false;\n\t\t} );\n\t}\n\n\t// actions performed before filter\n\t_beforeFilter( response, filters ) {\n\t\t$( document ).trigger( 'yith-wcan-ajax-loading', [\n\t\t\tresponse,\n\t\t\tfilters,\n\t\t] );\n\t}\n\n\t// actions performed after filter\n\t_afterFilter( response, filters ) {\n\t\t$( '.woocommerce-ordering' ).on(\n\t\t\t'change',\n\t\t\t'select.orderby',\n\t\t\tfunction () {\n\t\t\t\t$( this ).closest( 'form' ).submit();\n\t\t\t}\n\t\t);\n\n\t\t$( window ).trigger( 'scroll' );\n\n\t\t$( document )\n\t\t\t.trigger( 'yith-wcan-ajax-filtered', [ response, filters ] )\n\t\t\t.trigger( 'yith_wcwl_reload_fragments' );\n\t}\n\n\t// build url to show\n\tbuildUrl( filters ) {\n\t\tlet queryParam = yith_wcan_shortcodes.query_param,\n\t\t\tparams = {},\n\t\t\tlocation = window.location,\n\t\t\turl = !! yith_wcan_shortcodes.base_url\n\t\t\t\t? yith_wcan_shortcodes.base_url\n\t\t\t\t: location?.origin + location?.pathname,\n\t\t\tsearch = '',\n\t\t\tself = this;\n\n\t\tconst haveFilters =\n\t\t\ttypeof filters === 'object' && Object.keys( filters ).length;\n\n\t\t// remove filter session from current url, if any\n\t\tif ( !! yith_wcan_shortcodes.session_param ) {\n\t\t\turl = url.replace(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t'/' + yith_wcan_shortcodes.session_param + '/[^/]*/'\n\t\t\t\t),\n\t\t\t\t''\n\t\t\t);\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams[ queryParam ] = 1;\n\t\t}\n\n\t\tif ( !! this.originalSearch ) {\n\t\t\tconst searchParams = this.originalSearch\n\t\t\t\t.replace( '?', '' )\n\t\t\t\t.split( '&' )\n\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\tconst items = v.split( '=' );\n\n\t\t\t\t\tif ( items.length === 2 ) {\n\t\t\t\t\t\tif ( this.isFilterParam( items[ 0 ] ) ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta[ items[ 0 ] ] = items[ 1 ];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn a;\n\t\t\t\t}, {} );\n\n\t\t\tparams = $.extend( params, searchParams );\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams = $.extend( params, filters );\n\t\t}\n\n\t\tsearch = Object.keys( params )\n\t\t\t.reduce( function ( a, i ) {\n\t\t\t\tconst v = params[ i ];\n\n\t\t\t\tif ( ! v || ! i ) {\n\t\t\t\t\treturn a;\n\t\t\t\t}\n\n\t\t\t\ta += self._cleanParam( i ) + '=' + self._cleanParam( v ) + '&';\n\n\t\t\t\treturn a;\n\t\t\t}, '?' )\n\t\t\t.replace( /&$/g, '' )\n\t\t\t.replace( /%2B/g, '+' )\n\t\t\t.replace( /%2C/g, ',' );\n\n\t\tif ( search.length > 1 ) {\n\t\t\turl += search;\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t// retrieves alternative sharing url in response body\n\tsearchAlternativeUrl( response, defaultUrl = '' ) {\n\t\tlet url = defaultUrl,\n\t\t\tmatches;\n\n\t\tif ( -1 === response.indexOf( 'yith_wcan:sharing_url' ) ) {\n\t\t\treturn url;\n\t\t}\n\n\t\tmatches = response.match(\n\t\t\t/<meta name=\"yith_wcan:sharing_url\" content=\"([^\"]*)\">/\n\t\t);\n\t\turl = matches && 1 in matches ? matches[ 1 ] : url;\n\n\t\treturn url;\n\t}\n\n\t// push url to browser history\n\tpushUrlToHistory( url, title ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes.change_browser_url ||\n\t\t\tnavigator.userAgent.match( /msie/i )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.history.pushState(\n\t\t\t{\n\t\t\t\tpageTitle: title,\n\t\t\t},\n\t\t\t'',\n\t\t\turl\n\t\t);\n\t}\n\n\t// replaces elements in the page with refreshed ones\n\trefreshFragments( target, preset, response ) {\n\t\tconst responseDom = document.createElement( 'html' ),\n\t\t\t$response = $( responseDom );\n\n\t\tresponseDom.innerHTML = response;\n\n\t\tif ( target ) {\n\t\t\tlet $preset = $( preset ),\n\t\t\t\t$target = $( target ),\n\t\t\t\t$destination;\n\n\t\t\tif ( $preset.length ) {\n\t\t\t\t$destination = $response.find( preset );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$preset.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( $target.length ) {\n\t\t\t\t$destination = $response.find( target );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$target.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst content = $( yith_wcan_shortcodes.content );\n\n\t\t\tif ( content.length ) {\n\t\t\t\tcontent.replaceWith(\n\t\t\t\t\t$response.find( yith_wcan_shortcodes.content )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t$( 'body' ).replaceWith( $response.find( 'body' ) );\n\t\t\t}\n\t\t}\n\n\t\t$( document ).trigger( 'yith_wcan_init_shortcodes' );\n\t}\n\n\t// clean url parameters\n\t_cleanParam( param ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes?.process_sanitize ||\n\t\t\tyith_wcan_shortcodes?.skip_sanitize\n\t\t) {\n\t\t\treturn param;\n\t\t}\n\n\t\treturn encodeURIComponent( param );\n\t}\n\n\t// executes Ajax calls\n\t_doAjax( url, params ) {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tparams = $.extend(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t},\n\t\t\tparams\n\t\t);\n\n\t\tthis.xhr = $.ajax( params );\n\n\t\treturn this.xhr;\n\t}\n\n\t// block dom elements\n\tblock( $el ) {\n\t\tif ( typeof $.fn.block === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet background = '#fff center center no-repeat';\n\n\t\tif ( yith_wcan_shortcodes?.loader ) {\n\t\t\tbackground = `url('${ yith_wcan_shortcodes.loader }') ${ background }`;\n\t\t}\n\n\t\t$el.block( {\n\t\t\tmessage: null,\n\t\t\toverlayCSS: {\n\t\t\t\tbackground,\n\t\t\t\topacity: 0.7,\n\t\t\t},\n\t\t} );\n\t}\n\n\t// unblock dom elements\n\tunblock( $el ) {\n\t\tif ( typeof $.fn.unblock === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$el.unblock();\n\t}\n\n\t// checks if param is one used by layared nav to filter products.\n\tisFilterParam( param ) {\n\t\tlet supportedParams = [\n\t\t\t'rating_filter',\n\t\t\t'min_price',\n\t\t\t'max_price',\n\t\t\t'price_ranges',\n\t\t\t'onsale_filter',\n\t\t\t'instock_filter',\n\t\t\t'featured_filter',\n\t\t\t'orderby',\n\t\t\t'product-page',\n\t\t\tyith_wcan_shortcodes.query_param,\n\t\t].concat(\n\t\t\tyith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>\n\t\t\t\ti.replace( 'pa_', 'filter_' )\n\t\t\t)\n\t\t);\n\n\t\tif ( -1 !== supportedParams.indexOf( param ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'filter_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'query_type_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Reset_Button {\n\t// current button\n\t$reset = null;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// current button\n\t\tthis.$reset = el;\n\n\t\tthis.$reset.on( 'click', function ( ev ) {\n\t\t\tev.preventDefault();\n\n\t\t\t$( '.yith-wcan-filters' ).each( function () {\n\t\t\t\tconst preset = $( this ).data( 'preset' );\n\n\t\t\t\tpreset.deactivateAllFilters( true );\n\t\t\t\tpreset.closeModal();\n\t\t\t} );\n\t\t} );\n\n\t\tthis.$reset.data( 'reset', this ).addClass( 'enhanced' );\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Dropdown {\n\t// current button\n\t$originalSelect = null;\n\n\t// main element\n\t$_main = null;\n\n\t// label element\n\t$_label = null;\n\n\t// dropdown\n\t$_dropdown = null;\n\n\t// search input\n\t$_search = null;\n\n\t// show more link\n\t$_showMore = null;\n\n\t// items list\n\t$_items = null;\n\n\t// current page\n\tcurrentPage = 1;\n\n\t// options\n\toptions = {};\n\n\t// init object\n\tconstructor( el, opts ) {\n\t\tthis.$originalSelect = el;\n\n\t\tif ( ! this.$originalSelect.is( 'select' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst defaultPerPage = this.$originalSelect.data( 'per_page' ),\n\t\t\tdefaultOrder = this.$originalSelect.data( 'order' ),\n\t\t\tdefaultAll = this.$originalSelect.data( 'all-label' ),\n\t\t\tdefaults = {\n\t\t\t\tshowSearch: this.$originalSelect.data( 'show_search' ),\n\t\t\t\tpaginate: this.$originalSelect.data( 'paginate' ),\n\t\t\t\tperPage: defaultPerPage ? defaultPerPage : 10,\n\t\t\t\torder: defaultOrder ? defaultOrder : 'ASC',\n\t\t\t\tgetElements: null,\n\t\t\t\tlabels: {\n\t\t\t\t\temptyLabel: defaultAll\n\t\t\t\t\t\t? defaultAll\n\t\t\t\t\t\t: yith_wcan_shortcodes.labels.empty_option,\n\t\t\t\t\tsearchPlaceholder:\n\t\t\t\t\t\tyith_wcan_shortcodes.labels.search_placeholder,\n\t\t\t\t\tnoItemsFound: yith_wcan_shortcodes.labels.no_items,\n\t\t\t\t\tshowMore: yith_wcan_shortcodes.labels.show_more,\n\t\t\t\t},\n\t\t\t};\n\n\t\tthis.options = $.extend( defaults, opts );\n\n\t\tthis._hideSelect();\n\t\tthis._initTemplate();\n\t\tthis._initActions();\n\n\t\tthis.$originalSelect.data( 'dropdown', this ).addClass( 'enhanced' );\n\t}\n\n\t// hide select\n\t_hideSelect() {\n\t\tthis.$originalSelect.hide();\n\t}\n\n\t// create dropdown\n\t_initTemplate() {\n\t\tconst $mainSpan = $( '<div/>', {\n\t\t\t\tclass: 'yith-wcan-dropdown closed',\n\t\t\t} ),\n\t\t\t$labelSpan = $( '<div/>', {\n\t\t\t\tclass: 'dropdown-label',\n\t\t\t\thtml: this.getLabel(),\n\t\t\t} ),\n\t\t\t$dropdownSpan = $( '<div>', {\n\t\t\t\tclass: 'dropdown-wrapper',\n\t\t\t} ),\n\t\t\t$matchingItemsList = $( '<ul/>', {\n\t\t\t\tclass: 'matching-items filter-items',\n\t\t\t} );\n\n\t\t$dropdownSpan.append( $matchingItemsList );\n\t\t$mainSpan.append( $labelSpan ).append( $dropdownSpan );\n\n\t\tif ( this.options.showSearch ) {\n\t\t\tthis._initSearchTemplate( $dropdownSpan );\n\t\t}\n\n\t\tif ( this.options.paginate ) {\n\t\t\tthis._initShowMoreTemplate( $dropdownSpan );\n\t\t}\n\n\t\tthis.$originalSelect.after( $mainSpan );\n\t\tthis.$_main = $mainSpan;\n\t\tthis.$_label = $labelSpan;\n\t\tthis.$_dropdown = $dropdownSpan;\n\t\tthis.$_items = $matchingItemsList;\n\t}\n\n\t// create search field\n\t_initSearchTemplate( $dropdwonSpan ) {\n\t\tconst $container = $( '<div/>', {\n\t\t\t\tclass: 'search-field-container',\n\t\t\t} ),\n\t\t\t$search = $( '<input/>', {\n\t\t\t\tname: 's',\n\t\t\t\tclass: 'search-field',\n\t\t\t\ttype: 'search',\n\t\t\t\tplaceholder: this.options.labels.searchPlaceholder,\n\t\t\t} );\n\n\t\t$container.append( $search ).prependTo( $dropdwonSpan );\n\t\tthis.$_search = $search;\n\t}\n\n\t// create showMore field\n\t_initShowMoreTemplate( $dropdwonSpan ) {\n\t\tconst $showMore = $( '<a/>', {\n\t\t\tclass: 'show-more',\n\t\t\ttext: this.options.labels.showMore.replace(\n\t\t\t\t'%d',\n\t\t\t\tthis.options.perPage\n\t\t\t),\n\t\t} );\n\n\t\t$showMore.on( 'click', this.loadNextPage.bind( this ) ).hide();\n\n\t\t$dropdwonSpan.append( $showMore );\n\t\tthis.$_showMore = $showMore;\n\t}\n\n\t// init actions performed over dropdown elements\n\t_initActions() {\n\t\tconst self = this;\n\n\t\t// main open event\n\t\tthis.$_main?.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t\tself.toggleDropdown();\n\t\t} );\n\t\tthis.$_dropdown.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t} );\n\n\t\t// search event\n\t\tthis.$_search?.on( 'keyup search', () => {\n\t\t\tself._populateItems();\n\t\t} );\n\n\t\t// select event\n\t\tthis.$_items.on( 'change', ':input', function () {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'li:not(.checkbox) a', function ( ev ) {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tif ( isActive ) {\n\t\t\t\t$li.siblings().removeClass( 'active' );\n\t\t\t}\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'label > a', function ( ev ) {\n\t\t\tconst input = $( this ).parent().find( ':input' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\tinput.is( '[type=\"radio\"]' ) ||\n\t\t\t\tinput.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\tinput.prop( 'checked', ! input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\tinput.change();\n\t\t} );\n\n\t\t// select change\n\t\tthis.$originalSelect.on( 'change', ( ev, selfOriginated ) => {\n\t\t\tif ( selfOriginated ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.$_items.find( 'li' ).each( function () {\n\t\t\t\tconst value = $( this ).data( 'value' );\n\n\t\t\t\tif ( self.isValueSelected( value ) ) {\n\t\t\t\t\tself._selectItem( value );\n\t\t\t\t} else {\n\t\t\t\t\tself._deselectItem( value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tself.updateLabel();\n\t\t} );\n\n\t\t// close dropdown on external click\n\t\t$( document ).on( 'click', this.closeDropdown.bind( this ) );\n\t}\n\n\t// open dropdown\n\topenDropdown() {\n\t\tthis.$_main?.addClass( 'open' ).removeClass( 'closed' );\n\t\tthis._afterDropdownOpen();\n\t}\n\n\t// close dropdown\n\tcloseDropdown() {\n\t\tthis.$_main?.removeClass( 'open' ).addClass( 'closed' );\n\t}\n\n\t// close other dropdowns\n\t_closeOtherDropdowns() {\n\t\tconst self = this,\n\t\t\tdropdowns = $( document )\n\t\t\t\t.find( 'select.enhanced' )\n\t\t\t\t.filter( function ( i, select ) {\n\t\t\t\t\tconst $el = $( select );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! $el.data( 'dropdown' ) &&\n\t\t\t\t\t\t! $el.is( self.$originalSelect )\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\tdropdowns.each( function () {\n\t\t\t$( this ).data( 'dropdown' ).closeDropdown();\n\t\t} );\n\t}\n\n\t// toggle dropdown\n\ttoggleDropdown() {\n\t\tthis.$_main?.toggleClass( 'open' ).toggleClass( 'closed' );\n\n\t\tif ( this.$_main?.hasClass( 'open' ) ) {\n\t\t\tthis._afterDropdownOpen();\n\t\t}\n\t}\n\n\t// perform operations after dropdown is open\n\t_afterDropdownOpen() {\n\t\tthis._closeOtherDropdowns();\n\n\t\tif ( this.$_search?.length ) {\n\t\t\tthis.$_search.val( '' );\n\t\t}\n\n\t\tthis._populateItems();\n\t}\n\n\t// get elements\n\tgetMatchingElements( search, limit ) {\n\t\tlet matchingElements = [],\n\t\t\t$options = this.getOptions(),\n\t\t\tpromise;\n\n\t\tpromise = new Promise( ( resolve ) => {\n\t\t\t// first of all, search across select option\n\t\t\t$options.each( function () {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\tvalue = t.val(),\n\t\t\t\t\tlabel = t.html(),\n\t\t\t\t\tregex = new RegExp( '.*' + search + '.*', 'i' ),\n\t\t\t\t\tshow =\n\t\t\t\t\t\t! search || regex.test( value ) || regex.test( label );\n\n\t\t\t\tif ( show ) {\n\t\t\t\t\tmatchingElements.push( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// then retrieve additional items\n\t\t\tif ( this.options.getElements ) {\n\t\t\t\t// we're expecting key => value pairs\n\t\t\t\tthis.options\n\t\t\t\t\t.getElements( search )\n\t\t\t\t\t.then( ( retrievedElements ) => {\n\t\t\t\t\t\tif ( retrievedElements ) {\n\t\t\t\t\t\t\t// reformat retrieved array\n\t\t\t\t\t\t\tretrievedElements = retrievedElements.reduce(\n\t\t\t\t\t\t\t\t( a, v, i ) => {\n\t\t\t\t\t\t\t\t\ta.push( { label: i, value: v } );\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// merge found results with options\n\t\t\t\t\t\t\tmatchingElements = $.extend(\n\t\t\t\t\t\t\t\tmatchingElements,\n\t\t\t\t\t\t\t\tretrievedElements\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t}\n\t\t} );\n\n\t\treturn promise;\n\t}\n\n\t// format items as key/value pairs for further processing\n\t_formatItems( items, limit ) {\n\t\tlet indexes = [],\n\t\t\thasMore = false;\n\n\t\t// remove duplicates and sort array of results\n\t\titems\n\t\t\t.filter( ( v ) => {\n\t\t\t\tif ( -1 === indexes.indexOf( v.value ) ) {\n\t\t\t\t\tindexes.push( v.value );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\tconst order = this.options.order,\n\t\t\t\t\tmod = order === 'ASC' ? 1 : -1;\n\n\t\t\t\tif ( a.value < b.value ) {\n\t\t\t\t\treturn -1 * mod;\n\t\t\t\t} else if ( a.value > b.value ) {\n\t\t\t\t\treturn mod;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t} );\n\n\t\t// paginate when needed\n\t\tif ( limit ) {\n\t\t\thasMore = limit < Object.keys( items ).length;\n\t\t\titems = items.slice( 0, limit );\n\t\t}\n\n\t\treturn {\n\t\t\titems,\n\t\t\thasMore,\n\t\t};\n\t}\n\n\t// generate item to append to items list\n\t_generateItem( value, label ) {\n\t\tlet active = this.isValueSelected( value ),\n\t\t\toption = this.getOptionByValue( value ),\n\t\t\t$item = $( '<li/>', {\n\t\t\t\t'data-value': value,\n\t\t\t\tclass: option.length ? option.attr( 'class' ) : '',\n\t\t\t} ),\n\t\t\t$anchor;\n\n\t\tif ( option.length ) {\n\t\t\tconst template = option.data( 'template' ),\n\t\t\t\tcount = option.data( 'count' );\n\n\t\t\tlabel = template ? template : label;\n\n\t\t\tif ( !! count ) {\n\t\t\t\tlabel += count;\n\t\t\t}\n\t\t}\n\n\t\t$anchor = $( '<a/>', {\n\t\t\thref: option.length ? option.data( 'filter_url' ) : '#',\n\t\t\thtml: label,\n\t\t\t'data-title': option.length ? option.data( 'title' ) : '',\n\t\t} );\n\n\t\tif ( this.$originalSelect.prop( 'multiple' ) ) {\n\t\t\tconst $checkbox = $( '<input/>', {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue,\n\t\t\t\t} ),\n\t\t\t\t$label = $( '<label>' );\n\n\t\t\t$checkbox.prop( 'checked', active );\n\t\t\t$label.prepend( $checkbox ).append( $anchor );\n\t\t\t$item.append( $label ).addClass( 'checkbox' );\n\t\t} else {\n\t\t\t$item.append( $anchor );\n\t\t}\n\n\t\tactive ? $item.addClass( 'active' ) : $item.removeClass( 'active' );\n\n\t\treturn $item;\n\t}\n\n\t// populate items list\n\t_populateItems( page ) {\n\t\tlet search = this.$_search?.length ? this.$_search.val() : '',\n\t\t\tperPage = this.options.paginate ? this.options.perPage : 0,\n\t\t\tlimit;\n\n\t\tpage = page ? parseInt( page ) : 1;\n\t\tlimit = page * perPage;\n\n\t\tthis.getMatchingElements( search, limit ).then( ( resultSet ) => {\n\t\t\tlet matchingItems = resultSet.items,\n\t\t\t\titems = [],\n\t\t\t\thasMore = false;\n\n\t\t\t// remove all previous items\n\t\t\tthis._emptyItems();\n\t\t\tthis._hideLoadMore();\n\n\t\t\tif ( ! matchingItems.length ) {\n\t\t\t\titems.push(\n\t\t\t\t\t$( '<li/>', { text: this.options.labels.noItemsFound } )\n\t\t\t\t);\n\n\t\t\t\tthis.currentPage = 1;\n\t\t\t} else {\n\t\t\t\tfor ( const v of matchingItems ) {\n\t\t\t\t\tif ( v.value === '' ) {\n\t\t\t\t\t\titems.unshift( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\titems.push( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.currentPage = page;\n\t\t\t\thasMore = resultSet.hasMore;\n\t\t\t}\n\n\t\t\tthis.$_items.append( items );\n\n\t\t\t$( document ).trigger( 'yith_wcan_dropdown_updated' );\n\n\t\t\tif ( hasMore ) {\n\t\t\t\tthis._showLoadMore();\n\t\t\t}\n\t\t} );\n\t}\n\n\t// load next page of items\n\tloadNextPage() {\n\t\tconst page = this.currentPage + 1;\n\n\t\tthis._populateItems( page );\n\t}\n\n\t// set an item as active\n\t_selectItem( value ) {\n\t\treturn this._changeItemStatus( value, true );\n\t}\n\n\t// disable an item\n\t_deselectItem( value ) {\n\t\treturn this._changeItemStatus( value, false );\n\t}\n\n\t// change item status\n\t_changeItemStatus( value, status ) {\n\t\tconst $option = this.$originalSelect.find(\n\t\t\t`option[value=\"${ value }\"]`\n\t\t);\n\n\t\tif ( $option.length ) {\n\t\t\t$option.prop( 'selected', status );\n\n\t\t\tthis.closeDropdown();\n\t\t\tthis.updateLabel();\n\n\t\t\tthis.$originalSelect.trigger( 'change', [ true ] );\n\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// empty items list\n\t_emptyItems() {\n\t\tthis.$_items.html( '' );\n\t}\n\n\t// show \"Load more\" link\n\t_showLoadMore() {\n\t\tthis.$_showMore.show();\n\t}\n\n\t// hide \"Load more\" link\n\t_hideLoadMore() {\n\t\tthis.$_showMore.hide();\n\t}\n\n\t// returns select label\n\tgetLabel() {\n\t\treturn this.hasSelectedValues()\n\t\t\t? this.getSelectedLabels().join( ', ' )\n\t\t\t: this.options.labels.emptyLabel;\n\t}\n\n\t// update label to match new selection\n\tupdateLabel() {\n\t\tconst label = this.getLabel();\n\n\t\tthis.$_label?.html( label );\n\t}\n\n\t// returns select options\n\tgetOptions() {\n\t\treturn this.$originalSelect.find( 'option' );\n\t}\n\n\t// checks whether select has selected values\n\thasSelectedValues() {\n\t\treturn this.getSelectedOptions().length;\n\t}\n\n\t// checks whether a value is selected\n\tisValueSelected( value ) {\n\t\tconst found = this.getSelectedValues().indexOf( value.toString() );\n\n\t\treturn -1 !== found;\n\t}\n\n\t// retrieve selected options\n\tgetSelectedOptions() {\n\t\treturn this.$originalSelect.find( 'option' ).filter( ':selected' );\n\t}\n\n\t// retrieves an option node by value\n\tgetOptionByValue( value ) {\n\t\treturn this.$originalSelect.find( `option[value=\"${ value }\"]` );\n\t}\n\n\t// retrieve labels for selected options\n\tgetSelectedLabels() {\n\t\tconst labels = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tlet $option = $( this ),\n\t\t\t\ttemplate = $option.data( 'template' );\n\n\t\t\ttemplate = template\n\t\t\t\t? template\n\t\t\t\t: $option.html().replace( /\\([0-9]*\\)/, '' );\n\n\t\t\tlabels.push( template );\n\t\t} );\n\n\t\treturn labels;\n\t}\n\n\t// retrieve values for selected options\n\tgetSelectedValues() {\n\t\tconst values = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tvalues.push( $( this ).val() );\n\t\t} );\n\n\t\treturn values;\n\t}\n\n\tdestroy() {\n\t\t// TBD\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\nimport YITH_WCAN_Dropdown from './yith-wcan-dropdown';\n\nexport default class YITH_WCAN_Preset {\n\t// main preset node\n\tpreset = false;\n\t$preset = false;\n\n\t// target of the filter, if any\n\ttarget = false;\n\t$target = false;\n\n\t// filters node\n\t$filters = false;\n\n\t// filter button\n\t$filterButtons = false;\n\n\t// nodes created just for modal layout\n\tmodalElements = {};\n\n\t// retains current status of filters\n\tactiveFilters = false;\n\n\t// mobile flag\n\tisMobile = false;\n\n\t// slider timeout\n\tsliderTimeout = false;\n\n\t// registers when status has changed\n\toriginalFilters = null;\n\tdirty = false;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// main preset node\n\t\tthis.preset = '#' + el.attr( 'id' );\n\t\tthis.$preset = el;\n\n\t\t// target of the filter, if any\n\t\tthis.target = this.$preset.data( 'target' );\n\t\tthis.$target = this.target ? $( this.target ) : false;\n\n\t\tthis._regiterStatus();\n\t\tthis._initFilterButton();\n\t\tthis._initResponsive();\n\t\tthis._initFilters();\n\t\tthis._initActions();\n\n\t\tthis.$preset\n\t\t\t.data( 'preset', this )\n\t\t\t.addClass( 'enhanced' )\n\t\t\t.trigger( 'yith_wcan_preset_initialized', [ this ] );\n\t}\n\n\t// init filters\n\t_initFilters() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself._initFilter( $filter );\n\t\t} );\n\n\t\tthis.maybeShowClearAllFilters();\n\t}\n\n\t// init filter button\n\t_initFilterButton() {\n\t\tthis.$filterButtons = this.$preset.find( '.apply-filters' );\n\n\t\tif ( ! this.$filterButtons.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// manage filter button\n\t\tthis.$filterButtons\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthis.filter();\n\t\t\t} )\n\t\t\t.hide();\n\t}\n\n\t// init generic actions\n\t_initActions() {\n\t\tthis.$preset.find( 'form' ).on( 'submit', ( ev ) => {\n\t\t\tev.preventDefault();\n\t\t} );\n\t}\n\n\t// init responsive\n\t_initResponsive() {\n\t\tif ( ! yith_wcan_shortcodes.modal_on_mobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = window.matchMedia(\n\t\t\t`(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`\n\t\t);\n\n\t\t$( window )\n\t\t\t.on( 'resize', () => {\n\t\t\t\tconst isMobile = !! media.matches;\n\n\t\t\t\tif ( isMobile !== this.isMobile ) {\n\t\t\t\t\tthis.isMobile = isMobile;\n\t\t\t\t\tthis._afterLayoutChange();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.resize();\n\t}\n\n\t// init filter\n\t_initFilter( $filter ) {\n\t\tconst self = this,\n\t\t\thandleChange = function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$currentFilter = t.closest( '.yith-wcan-filter' ),\n\t\t\t\t\tmultiple = $currentFilter.length\n\t\t\t\t\t\t? 'yes' === $currentFilter.data( 'multiple' )\n\t\t\t\t\t\t: false,\n\t\t\t\t\t$item = t.closest( '.filter-item' ),\n\t\t\t\t\t$items = $item.length\n\t\t\t\t\t\t? $currentFilter.find( '.filter-item' ).not( $item )\n\t\t\t\t\t\t: [];\n\n\t\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tev.preventDefault();\n\n\t\t\t\t$items.length &&\n\t\t\t\t\t! multiple &&\n\t\t\t\t\t$items\n\t\t\t\t\t\t.removeClass( 'active' )\n\t\t\t\t\t\t.children( 'label' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.parent( '.checked' )\n\t\t\t\t\t\t.removeClass( 'checked' );\n\t\t\t\t$item.length && $item.toggleClass( 'active' );\n\n\t\t\t\t// reset active filters.\n\t\t\t\tself.activeFilters = false;\n\n\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\tself.maybeToggleClearAllFilters();\n\t\t\t\tself.maybeToggleClearFilter( $currentFilter );\n\t\t\t};\n\n\t\t// handle filter activation/deactivation by click on label (no input involved)\n\t\t$filter\n\t\t\t.find( '.filter-item' )\n\t\t\t.not( '.checkbox' )\n\t\t\t.not( '.radio' )\n\t\t\t.on( 'click', 'a', function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\t\tif ( ! $( ev?.delegateTarget ).is( $item ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\thandleChange.call( this, ev );\n\t\t\t} );\n\n\t\t// handle filter activation/deactivation from input change\n\t\t$filter.find( ':input' ).on( 'change', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\tt.prop( 'checked', false );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\thandleChange.call( this, ev );\n\t\t} );\n\n\t\t// handle filter activation/deactivation by click on label (there is an input whose state can be switched)\n\t\t$filter.find( 'label > a' ).on( 'click', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst $input = t.parent().find( ':input' );\n\n\t\t\tif (\n\t\t\t\t$input.is( '[type=\"radio\"]' ) ||\n\t\t\t\t$input.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\t$input.prop( 'checked', ! $input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\t$input.change();\n\t\t} );\n\n\t\t// init tooltip\n\t\tthis._initTooltip( $filter );\n\n\t\t// init price slider\n\t\tthis._initPriceSlider( $filter );\n\n\t\t// init dropdown\n\t\tthis._initDropdown( $filter );\n\n\t\t// init collapsable\n\t\tthis._initCollapsable( $filter );\n\n\t\t// init clear anchors\n\t\tthis.maybeShowClearFilter( $filter );\n\n\t\t// init custom inputs\n\t\tif ( this.$preset?.hasClass( 'custom-style' ) ) {\n\t\t\tthis._initCustomInput( $filter );\n\t\t}\n\t}\n\n\t// init tooltip\n\t_initTooltip( $filter, position ) {\n\t\t$filter.find( '[data-title]' ).each( function () {\n\t\t\tconst t = $( this );\n\n\t\t\tif ( t.hasClass( 'tooltip-added' ) || ! t.data( 'title' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tt.on( 'mouseenter', function () {\n\t\t\t\tlet th = $( this ),\n\t\t\t\t\ttooltip = null,\n\t\t\t\t\twrapperWidth = th.outerWidth(),\n\t\t\t\t\tleft = 0,\n\t\t\t\t\twidth = 0;\n\n\t\t\t\tif (\n\t\t\t\t\t! position ||\n\t\t\t\t\t( 'top' !== position && 'right' !== position )\n\t\t\t\t) {\n\t\t\t\t\tconst container = th.closest( '.filter-item' );\n\n\t\t\t\t\tposition =\n\t\t\t\t\t\tcontainer.hasClass( 'color' ) ||\n\t\t\t\t\t\tcontainer.hasClass( 'label' )\n\t\t\t\t\t\t\t? 'top'\n\t\t\t\t\t\t\t: 'right';\n\t\t\t\t}\n\n\t\t\t\ttooltip = $( '<span>', {\n\t\t\t\t\tclass: 'yith-wcan-tooltip',\n\t\t\t\t\thtml: th.data( 'title' ),\n\t\t\t\t} );\n\n\t\t\t\tth.append( tooltip );\n\n\t\t\t\twidth = tooltip.outerWidth() + 6;\n\t\t\t\ttooltip.outerWidth( width );\n\n\t\t\t\tif ( 'top' === position ) {\n\t\t\t\t\tleft = ( wrapperWidth - width ) / 2;\n\t\t\t\t} else {\n\t\t\t\t\tleft = wrapperWidth + 15;\n\t\t\t\t}\n\n\t\t\t\ttooltip.css( { left: left.toFixed( 0 ) + 'px' } ).fadeIn( 200 );\n\n\t\t\t\tth.addClass( 'with-tooltip' );\n\t\t\t} ).on( 'mouseleave', function () {\n\t\t\t\tconst th = $( this );\n\n\t\t\t\tth.find( '.yith-wcan-tooltip' ).fadeOut( 200, function () {\n\t\t\t\t\tth.removeClass( 'with-tooltip' )\n\t\t\t\t\t\t.find( '.yith-wcan-tooltip' )\n\t\t\t\t\t\t.remove();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tt.addClass( 'tooltip-added' );\n\t\t} );\n\t}\n\n\t// init dropdown\n\t_initDropdown( $filter ) {\n\t\tconst $dropdown = $filter.find( 'select.filter-dropdown' );\n\n\t\tif ( ! $dropdown.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t$dropdown.hasClass( 'select2-hidden-accessible' ) &&\n\t\t\t'undefined' !== typeof $.fn.selectWoo\n\t\t) {\n\t\t\t$dropdown.selectWoo( 'destroy' );\n\t\t}\n\n\t\tthis._initDropdownObject( $dropdown, {\n\t\t\tpaginate: true,\n\t\t\tperPage: yith_wcan_shortcodes.terms_per_page,\n\t\t} );\n\t}\n\n\t// init dropdown object\n\t_initDropdownObject( $dropdown, opts ) {\n\t\treturn new YITH_WCAN_Dropdown( $dropdown, opts );\n\t}\n\n\t// init price slider\n\t_initPriceSlider( $filter ) {\n\t\tif ( ! $filter.hasClass( 'filter-price-slider' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst self = this,\n\t\t\t$container = $filter.find( '.price-slider' ),\n\t\t\t$minInput = $container.find( '.price-slider-min' ),\n\t\t\t$maxInput = $container.find( '.price-slider-max' ),\n\t\t\tmin = parseFloat( $container.data( 'min' ) ),\n\t\t\tmax = parseFloat( $container.data( 'max' ) ),\n\t\t\tcurrentMin = parseFloat( $minInput.val() ),\n\t\t\tcurrentMax = parseFloat( $maxInput.val() ),\n\t\t\tstep = parseFloat( $container.data( 'step' ) ),\n\t\t\thandleSliderChange = function () {\n\t\t\t\tif ( self.sliderTimeout ) {\n\t\t\t\t\tclearTimeout( self.sliderTimeout );\n\t\t\t\t}\n\n\t\t\t\tself.sliderTimeout = setTimeout( () => {\n\t\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\t}, 200 );\n\t\t\t};\n\n\t\t$filter.find( '.price-slider-ui' ).ionRangeSlider( {\n\t\t\tskin: 'round',\n\t\t\ttype: 'double',\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tfrom: currentMin,\n\t\t\tto: currentMax,\n\t\t\tmin_interval: step,\n\t\t\tvalues_separator: ' - ',\n\t\t\tprettify: ( v ) => this.formatPrice( v ),\n\t\t\tonChange: ( data ) => {\n\t\t\t\t$minInput.val( data.from );\n\t\t\t\t$maxInput.val( data.to );\n\t\t\t},\n\t\t\tonFinish: handleSliderChange,\n\t\t} );\n\n\t\t$minInput\n\t\t\t.add( $maxInput )\n\t\t\t.off( 'change' )\n\t\t\t.on( 'keyup', () => {\n\t\t\t\tif ( ! $minInput.val() || ! $maxInput.val() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleSliderChange();\n\t\t\t} );\n\t}\n\n\t// init collapsable\n\t_initCollapsable( $filter ) {\n\t\tthis._initTitleCollapsable( $filter );\n\t\tthis._initHierarchyCollapsable( $filter );\n\t}\n\n\t// init toggle on click of the title\n\t_initTitleCollapsable( $filter ) {\n\t\tconst $title = $filter.find( '.collapsable' );\n\n\t\tif ( ! $title.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initToggle( $title, $title, $filter.find( '.filter-content' ) );\n\t}\n\n\t// init toggle on click of the parent li\n\t_initHierarchyCollapsable( $filter ) {\n\t\tconst $items = $filter.find( '.hierarchy-collapsable' );\n\n\t\tif ( ! $items.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// set parents of currently active term as open\n\t\tconst self = this,\n\t\t\tactive = $filter.find( '.active' );\n\n\t\tif ( active.length ) {\n\t\t\tactive\n\t\t\t\t.parents( '.hierarchy-collapsable' )\n\t\t\t\t.removeClass( 'closed' )\n\t\t\t\t.addClass( 'opened' );\n\n\t\t\tif (\n\t\t\t\tactive.hasClass( 'hierarchy-collapsable' ) &&\n\t\t\t\tyith_wcan_shortcodes.show_current_children\n\t\t\t) {\n\t\t\t\tactive.removeClass( 'closed' ).addClass( 'opened' );\n\t\t\t}\n\t\t}\n\n\t\t$items.each( function () {\n\t\t\tconst $t = $( this ),\n\t\t\t\t$toggle = $( '<span/>', {\n\t\t\t\t\tclass: 'toggle-handle',\n\t\t\t\t} );\n\n\t\t\t$toggle.appendTo( $t );\n\n\t\t\tself._initToggle( $toggle, $t, $t.children( 'ul.filter-items' ) );\n\t\t} );\n\t}\n\n\t// init toggle to generic toggle/target pair\n\t_initToggle( $toggle, $container, $target ) {\n\t\tif ( $container.hasClass( 'closed' ) ) {\n\t\t\t$target.hide();\n\t\t}\n\n\t\t$toggle.off( 'click' ).on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\n\t\t\t$target.slideToggle( 400, () => {\n\t\t\t\t$container.toggleClass( 'opened' ).toggleClass( 'closed' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// init custom input\n\t_initCustomInput( $filter ) {\n\t\t$filter.find( ':input' ).each( function () {\n\t\t\tlet input = $( this ),\n\t\t\t\ttype = input.attr( 'type' ),\n\t\t\t\tcontainerClass = `${ type }button`,\n\t\t\t\tcontainer;\n\n\t\t\tif ( 'checkbox' !== type && 'radio' !== type ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.closest( `.${ containerClass }` ).length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.is( ':checked' ) ) {\n\t\t\t\tcontainerClass += ' checked';\n\t\t\t}\n\n\t\t\tcontainer = $( '<span/>', {\n\t\t\t\tclass: containerClass,\n\t\t\t} );\n\n\t\t\tinput.wrap( container ).on( 'change', function () {\n\t\t\t\tconst t = $( this );\n\n\t\t\t\tt.prop( 'checked' )\n\t\t\t\t\t? t.parent().addClass( 'checked' )\n\t\t\t\t\t: t.parent().removeClass( 'checked' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// register initial status\n\t_regiterStatus() {\n\t\tthis.originalFilters = this.getFiltersProperties();\n\t}\n\n\t// trigger handling after layout change\n\t_afterLayoutChange() {\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset\n\t\t\t\t.addClass( 'filters-modal' )\n\t\t\t\t.attr( 'role', 'dialog' )\n\t\t\t\t.attr( 'tabindex', '-1' )\n\t\t\t\t.hide();\n\n\t\t\tthis._addCloseModalButton();\n\t\t\tthis._addApplyFiltersModalButton();\n\t\t\tthis._switchToCollapsables();\n\n\t\t\tthis.$filterButtons?.hide();\n\t\t} else {\n\t\t\tthis.$preset\n\t\t\t\t.removeClass( 'filters-modal' )\n\t\t\t\t.removeClass( 'open' )\n\t\t\t\t.removeAttr( 'role' )\n\t\t\t\t.removeAttr( 'tabindex' )\n\t\t\t\t.show();\n\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\n\t\t\tthis._removeCloseModalButton();\n\t\t\tthis._removeApplyFiltersModalButton();\n\t\t\tthis._switchBackCollapsables();\n\n\t\t\tthis.$filterButtons?.show();\n\t\t}\n\t}\n\n\t// add modal close button\n\t_addCloseModalButton() {\n\t\tconst $closeButton = $( '<a/>', {\n\t\t\tclass: 'close-button',\n\t\t\thtml: '×',\n\t\t\t'data-dismiss': 'modal',\n\t\t\t'aria-label': yith_wcan_shortcodes.labels.close,\n\t\t} );\n\n\t\t$closeButton\n\t\t\t.prependTo( this.$preset )\n\t\t\t.on( 'click', this.closeModal.bind( this ) );\n\t\tthis.modalElements.closeButton = $closeButton;\n\t}\n\n\t// remove modal close button\n\t_removeCloseModalButton() {\n\t\tthis.modalElements?.closeButton?.remove();\n\t}\n\n\t// show main filter button for the modal\n\t_addApplyFiltersModalButton() {\n\t\tconst $filterButton = $( '<button/>', {\n\t\t\tclass: 'apply-filters main-modal-button',\n\t\t\thtml: yith_wcan_shortcodes.labels.show_results,\n\t\t\t'data-dismiss': 'modal',\n\t\t} );\n\n\t\t$filterButton.appendTo( this.$preset ).on( 'click', () => {\n\t\t\tthis.filter();\n\t\t\tthis.closeModal();\n\t\t} );\n\t\tthis.modalElements.applyFiltersButton = $filterButton;\n\t}\n\n\t// hide main filter button for the modal\n\t_removeApplyFiltersModalButton() {\n\t\tthis.modalElements?.applyFiltersButton?.remove();\n\t}\n\n\t// convert all filters to collapsable\n\t_switchToCollapsables() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif ( ! $title.length || $title.hasClass( 'collapsable' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title.addClass( 'collapsable' ).data( 'disable-collapse', true );\n\n\t\t\tself._initTitleCollapsable( $filter );\n\t\t} );\n\t}\n\n\t// switch back filters to their previous collapsable state\n\t_switchBackCollapsables() {\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif (\n\t\t\t\t! $title.length ||\n\t\t\t\t! $title.hasClass( 'collapsable' ) ||\n\t\t\t\t! $title.data( 'disable-collapse' )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title\n\t\t\t\t.removeClass( 'collapsable' )\n\t\t\t\t.removeData( 'disable-collapse', true )\n\t\t\t\t.off( 'click' );\n\n\t\t\t$filter.find( '.filter-content' ).show();\n\t\t} );\n\t}\n\n\t// close all collpasable before showing modal\n\t_closeAllCollapsables() {\n\t\tthis.$filters\n\t\t\t.not( '.no-title' )\n\t\t\t.not( ( i, v ) => {\n\t\t\t\treturn this.isFilterActive( $( v ) );\n\t\t\t} )\n\t\t\t.find( '.filter-content' )\n\t\t\t.hide()\n\t\t\t.end()\n\t\t\t.find( '.filter-title' )\n\t\t\t.addClass( 'closed' )\n\t\t\t.removeClass( 'opened' );\n\t}\n\n\t// update status change flag, if filters have changed\n\tmaybeRegisterStatusChange() {\n\t\tconst currentFilters = this.getFiltersProperties(),\n\t\t\tcurrentStr = JSON.stringify( currentFilters ),\n\t\t\toriginalStr = JSON.stringify( this.originalFilters );\n\n\t\tthis.dirty = currentStr !== originalStr;\n\t}\n\n\t// apply filters when possible\n\tmaybeFilter( $initiator ) {\n\t\t// register status change\n\t\tthis.maybeRegisterStatusChange();\n\n\t\t// filter, or show filter button.\n\t\tif ( yith_wcan_shortcodes.instant_filters && ! this.isMobile ) {\n\t\t\tthis.filter();\n\t\t} else if (\n\t\t\t! yith_wcan_shortcodes.instant_filters &&\n\t\t\t! this.isMobile\n\t\t) {\n\t\t\tthis.dirty\n\t\t\t\t? this.$filterButtons?.show()\n\t\t\t\t: this.$filterButtons?.hide();\n\t\t} else if ( this.isMobile && this.dirty ) {\n\t\t\tthis.$preset.addClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.show();\n\t\t}\n\t}\n\n\t// main filtering method\n\tfilter() {\n\t\tconst filter = window?.product_filter;\n\n\t\tfilter\n\t\t\t?.doFilter( this.getFiltersProperties(), this.target, this.preset )\n\t\t\t?.done( () => {\n\t\t\t\tlet newPreset = $( this.preset );\n\n\t\t\t\tif (\n\t\t\t\t\t! this.isMobile &&\n\t\t\t\t\tnewPreset.length &&\n\t\t\t\t\tyith_wcan_shortcodes.scroll_top\n\t\t\t\t) {\n\t\t\t\t\tlet targetOffset = newPreset.offset().top;\n\n\t\t\t\t\tif ( !! yith_wcan_shortcodes.scroll_target ) {\n\t\t\t\t\t\tconst scrollTarget = $(\n\t\t\t\t\t\t\tyith_wcan_shortcodes.scroll_target\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttargetOffset = scrollTarget.length\n\t\t\t\t\t\t\t? scrollTarget.offset().top\n\t\t\t\t\t\t\t: targetOffset;\n\t\t\t\t\t}\n\t\t\t\t\t$( 'body, html' ).animate( {\n\t\t\t\t\t\tscrollTop: targetOffset - 100,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// register new filters, clear status flag\n\t\t\t\tthis.originalFilters = this.getFiltersProperties();\n\t\t\t\tthis.dirty = false;\n\t\t\t} );\n\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset.removeClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.hide();\n\t\t}\n\t}\n\n\t// get all filter nodes\n\tgetFilters() {\n\t\tif ( false === this.$filters ) {\n\t\t\tthis.$filters = this.$preset.find( '.yith-wcan-filter' );\n\t\t}\n\n\t\treturn this.$filters;\n\t}\n\n\t// retrieves all filters that we want to apply\n\tgetActiveFilters() {\n\t\tif ( false === this.activeFilters ) {\n\t\t\tthis.activeFilters = this.getFiltersProperties();\n\t\t}\n\n\t\treturn this.activeFilters;\n\t}\n\n\t// check whether there is any filter active\n\tisAnyFilterActive() {\n\t\treturn !! Object.keys( this.getActiveFilters() ).length;\n\t}\n\n\t// checks whether current filter is active\n\tisFilterActive( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tactive,\n\t\t\tfilteredActive;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tactive = 'object' === typeof val ? !! val?.length : !! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tactive = $filter.find( '.filter-item' ).filter( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst min = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'min' )\n\t\t\t\t\t),\n\t\t\t\t\tmax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'max' )\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMin = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t\t);\n\n\t\t\t\tactive = currentMin > min || currentMax < max;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tactive =\n\t\t\t\t\t'menu_order' !== $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tactive = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredActive = $filter.triggerHandler( 'yith_wcan_is_filter_active', [\n\t\t\tactive,\n\t\t\tthis,\n\t\t] );\n\t\tactive =\n\t\t\ttypeof filteredActive !== 'undefined' ? filteredActive : active;\n\n\t\treturn active;\n\t}\n\n\t// count the number of active items per filter\n\tcountActiveItems( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tcount;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tcount = 'object' === typeof val ? val?.length : +!! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tcount = $filter.find( '.filter-items' ).find( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tif ( this.isFilterActive( $filter ) ) {\n\t\t\t\t\tcount = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\tdefault:\n\t\t\t\tcount = 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t// retrieves filter properties for the filter\n\tgetFilterProperties( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tmultiple = 'yes' === $filter.data( 'multiple' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' ),\n\t\t\tproperties = {},\n\t\t\tfilteredProperties,\n\t\t\t$active;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tlet activeTerms = [],\n\t\t\t\t\ttaxonomy = $filter.data( 'taxonomy' ),\n\t\t\t\t\tisAttr = 0 === taxonomy.indexOf( 'filter' ),\n\t\t\t\t\trelation = $filter.data( 'relation' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tactiveTerms = $dropdown.val();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTerms.push( $dropdown.val() );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tactiveTerms = $active.get().reduce( function ( a, v ) {\n\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t: v.data( 'term-slug' );\n\n\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\treturn a;\n\t\t\t\t\t}, activeTerms );\n\t\t\t\t}\n\n\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.pop();\n\t\t\t\t} else {\n\t\t\t\t\tconst glue = ! isAttr && 'and' === relation ? '+' : ',';\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.join( glue );\n\t\t\t\t}\n\n\t\t\t\tif ( isAttr ) {\n\t\t\t\t\tproperties[\n\t\t\t\t\t\ttaxonomy.replace( 'filter_', 'query_type_' )\n\t\t\t\t\t] = relation;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tproperties.rating_filter = $dropdown.val();\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\t\t$active = $active.first();\n\t\t\t\t\t\tproperties.rating_filter = $active.is( 'label' )\n\t\t\t\t\t\t\t? $active.find( ':input' ).val()\n\t\t\t\t\t\t\t: $active.data( 'rating' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.rating_filter = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( function ( a, v ) {\n\t\t\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t\t\t: v.data( 'rating' );\n\n\t\t\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $dropdown.val().join( ',' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 0 ];\n\t\t\t\t\t\tproperties.max_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 1 ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\t\t\t\tlet min = $( v ).data( 'range-min' ),\n\t\t\t\t\t\t\t\t\tmax = $( v ).data( 'range-max' );\n\n\t\t\t\t\t\t\t\ta += ( max ? `${ min }-${ max }` : min ) + ',';\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, '' )\n\t\t\t\t\t\t\t.replace( /^(.*),$/, '$1' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-min' )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-max' )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t);\n\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( $filter.find( '.filter-on-sale' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.onsale_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-in-stock' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.instock_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-featured' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.featured_filter = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tproperties.orderby = $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredProperties = $filter.triggerHandler(\n\t\t\t'yith_wcan_filter_properties',\n\t\t\t[ properties, self ]\n\t\t);\n\t\tproperties =\n\t\t\ttypeof filteredProperties !== 'undefined'\n\t\t\t\t? filteredProperties\n\t\t\t\t: properties;\n\n\t\treturn properties;\n\t}\n\n\t// retrieves properties for all filters of the preset\n\tgetFiltersProperties() {\n\t\tlet properties = {};\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tconst filterProperties = self.getFilterProperties( $filter );\n\n\t\t\t\tproperties = self.mergeProperties(\n\t\t\t\t\tproperties,\n\t\t\t\t\tfilterProperties,\n\t\t\t\t\t$filter\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn properties;\n\t}\n\n\t// retrieve filters matching any of the properties passed\n\tgetFiltersByProperties( properties ) {\n\t\tconst self = this;\n\n\t\treturn this.getFilters().filter( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tlet filterProperties = self.getFilterProperties( $filter ),\n\t\t\t\t\thasProp = false;\n\n\t\t\t\tfor ( const prop in properties ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[ 'min_price', 'max_price', 'price_ranges' ].includes(\n\t\t\t\t\t\t\tprop\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t( filterProperties.min_price ||\n\t\t\t\t\t\t\tfilterProperties.price_ranges )\n\t\t\t\t\t) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if ( filterProperties[ prop ] ) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn hasProp;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t// show clear selection anchor\n\tmaybeToggleClearFilter( $filter ) {\n\t\tif ( ! this.isFilterActive( $filter ) ) {\n\t\t\tthis.maybeHideClearFilter( $filter );\n\t\t} else {\n\t\t\tthis.maybeShowClearFilter( $filter );\n\t\t}\n\t}\n\n\t// show clear all selections anchor\n\tmaybeToggleClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() ) {\n\t\t\tthis.maybeHideClearAllFilters();\n\t\t} else {\n\t\t\tthis.maybeShowClearAllFilters();\n\t\t}\n\t}\n\n\t// show clear selection anchor\n\tmaybeShowClearFilter( $filter ) {\n\t\tif (\n\t\t\t! this.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\t$filter.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_selection,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( $filter.find( '.filter-content' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateFilter(\n\t\t\t\t\t$filter,\n\t\t\t\t\tfalse,\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearFilter( $filter );\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeShowClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() || ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\tthis.$preset.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_all_selections,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( this.$preset.find( '.filters-container' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateAllFilters(\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearAllFilters();\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// hide clear selection anchor\n\tmaybeHideClearFilter( $filter ) {\n\t\tif (\n\t\t\tthis.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\t$filter.find( '.clear-selection' ).remove();\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeHideClearAllFilters() {\n\t\tif ( this.isAnyFilterActive() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\tthis.$preset\n\t\t\t.find( '.filters-container' )\n\t\t\t.children( '.clear-selection' )\n\t\t\t.remove();\n\t}\n\n\t// deactivate filter\n\tdeactivateFilter( $filter, properties, doFilter ) {\n\t\tconst filterType = $filter.data( 'filter-type' ),\n\t\t\t$items = $filter.find( '.filter-item' ),\n\t\t\t$activeItems = $items.filter( '.active' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' );\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tconst taxonomy = $filter.data( 'taxonomy' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif ( $option.val() === properties[ taxonomy ] ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'term-slug' );\n\n\t\t\t\t\t\tif ( value === properties[ taxonomy ] ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif ( $option.val() === properties.rating_filter ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'rating' );\n\n\t\t\t\t\t\tif ( value === properties.rating_filter ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this ),\n\t\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t\t? `-${ properties.max_price }`\n\t\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\t\tif ( $option.val() === formattedRange ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tformattedRange,\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'min_price' ) +\n\t\t\t\t\t\t\t ( $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t? '-' + $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\tif ( properties.min_price ) {\n\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t? '-' + properties.max_price\n\t\t\t\t\t\t\t\t\t: '' );\n\t\t\t\t\t\t} else if ( properties.price_ranges ) {\n\t\t\t\t\t\t\tformattedRange = properties.price_ranges;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( value === formattedRange ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst $priceSlider = $filter.find( '.price-slider' );\n\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-min' )\n\t\t\t\t\t.val( $priceSlider.data( 'min' ) );\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-max' )\n\t\t\t\t\t.val( $priceSlider.data( 'max' ) )\n\t\t\t\t\t.change();\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\t$filter.find( 'select' ).val( 'menu_order' );\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\n\t\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\tif ( properties?.instock_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.onsale_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.featured_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate all filters\n\tdeactivateAllFilters( doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFilters();\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter );\n\t\t} );\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate filters that matches a specific set of properties\n\tdeactivateFilterByProperties( properties, doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFiltersByProperties( properties );\n\n\t\tif ( ! $filters.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter, properties, doFilter );\n\t\t} );\n\t}\n\n\t// open filters as a modal, when in mobile layout\n\topenModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._closeAllCollapsables();\n\n\t\t$( 'body' )\n\t\t\t.css( 'overflow', 'hidden' )\n\t\t\t.addClass( 'yith-wcan-preset-modal-open' );\n\n\t\tthis.$preset.show();\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.addClass( 'open' );\n\t\t}, 100 );\n\t}\n\n\t// close filters modal, when in mobile layout\n\tcloseModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$preset.removeClass( 'open' );\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.hide();\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\t\t}, 300 );\n\t}\n\n\t// utility that formats the price according to store configuration.\n\tformatPrice( price ) {\n\t\tif ( 'undefined' !== typeof accounting ) {\n\t\t\tprice = accounting.formatMoney( price, {\n\t\t\t\tsymbol: yith_wcan_shortcodes.currency_format.symbol,\n\t\t\t\tdecimal: yith_wcan_shortcodes.currency_format.decimal,\n\t\t\t\tthousand: yith_wcan_shortcodes.currency_format.thousand,\n\t\t\t\tprecision: 0,\n\t\t\t\tformat: yith_wcan_shortcodes.currency_format.format,\n\t\t\t} );\n\t\t}\n\n\t\treturn price;\n\t}\n\n\t// utility that merges together sets of filter properties\n\tmergeProperties( set1, set2, $filter ) {\n\t\t// search for common properties\n\t\tfor ( const prop in set2 ) {\n\t\t\tif ( ! set2.hasOwnProperty( prop ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !! set1[ prop ] ) {\n\t\t\t\tswitch ( prop ) {\n\t\t\t\t\tcase 'rating_filter':\n\t\t\t\t\tcase 'min_price':\n\t\t\t\t\tcase 'max_price':\n\t\t\t\t\tcase 'onsale_filter':\n\t\t\t\t\tcase 'instock_filter':\n\t\t\t\t\tcase 'orderby':\n\t\t\t\t\t\t// just override default value\n\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif ( 0 === prop.indexOf( 'query_type_' ) ) {\n\t\t\t\t\t\t\t// query_type param\n\t\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// we're dealing with taxonomy\n\t\t\t\t\t\t\tconst isAttr = 0 === prop.indexOf( 'filter_' ),\n\t\t\t\t\t\t\t\tglue = isAttr ? ',' : '+';\n\n\t\t\t\t\t\t\tlet newValue =\n\t\t\t\t\t\t\t\tset1[ prop ].replace( ',', glue ) +\n\t\t\t\t\t\t\t\tglue +\n\t\t\t\t\t\t\t\tset2[ prop ].replace( ',', glue );\n\n\t\t\t\t\t\t\tnewValue = newValue\n\t\t\t\t\t\t\t\t.split( glue )\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t( value, index, arr ) =>\n\t\t\t\t\t\t\t\t\t\tarr.indexOf( value ) === index\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( glue );\n\n\t\t\t\t\t\t\tset1[ prop ] = newValue;\n\n\t\t\t\t\t\t\tif ( isAttr ) {\n\t\t\t\t\t\t\t\tconst queryTypeParam = prop.replace(\n\t\t\t\t\t\t\t\t\t'filter_',\n\t\t\t\t\t\t\t\t\t'query_type_'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tset1[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t\tset2[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdelete set2[ prop ];\n\t\t\t}\n\t\t}\n\n\t\t$.extend( set1, set2 );\n\n\t\treturn set1;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport YITH_WCAN_Filter from './modules/yith-wcan-filter';\nimport YITH_WCAN_Reset_Button from './modules/yith-wcan-reset-button';\nimport YITH_WCAN_Preset from './modules/yith-wcan-preset';\n\njQuery( function ( $ ) {\n\t$( document )\n\t\t.on(\n\t\t\t'yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode',\n\t\t\tfunction () {\n\t\t\t\t$( '.yith-wcan-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Preset( $( this ) );\n\t\t\t\t\t} );\n\n\t\t\t\t$( '.yith-wcan-reset-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Reset_Button( $( this ) );\n\t\t\t\t\t} );\n\t\t\t}\n\t\t)\n\t\t.trigger( 'yith_wcan_init_shortcodes' );\n\n\tglobalThis.product_filter = new YITH_WCAN_Filter();\n} );\n"],"sourceRoot":""}
|
1 |
+
{"version":3,"sources":["webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/config.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-filter.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-reset-button.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-dropdown.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-preset.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/index.js"],"names":["$","jQuery","YITH_WCAN_Filter","location","search","head","html","pageTitle","document","title","alternativeUrl","searchAlternativeUrl","doingAjax","initialized","yith_wcan_shortcodes","ajax_filters","pushUrlToHistory","filters","target","preset","targetUrl","$target","customFilters","triggerHandler","block","buildUrl","window","_doAjax","done","response","_beforeFilter","refreshFragments","unblock","_afterFilter","trigger","on","closest","submit","Object","keys","length","addClass","removeClass","queryParam","query_param","params","url","base_url","origin","pathname","self","haveFilters","session_param","replace","RegExp","originalSearch","searchParams","split","reduce","a","v","items","isFilterParam","i","_cleanParam","defaultUrl","matches","indexOf","match","change_browser_url","navigator","userAgent","history","pushState","responseDom","createElement","$response","innerHTML","$preset","$destination","find","replaceWith","first","content","param","process_sanitize","skip_sanitize","encodeURIComponent","xhr","abort","headers","$el","background","loader","message","overlayCSS","opacity","supportedParams","customParams","concat","supported_taxonomies","map","YITH_WCAN_Reset_Button","el","$reset","ev","preventDefault","each","data","deactivateAllFilters","closeModal","YITH_WCAN_Dropdown","opts","$originalSelect","is","defaultPerPage","defaultOrder","defaultAll","defaults","showSearch","paginate","perPage","order","getElements","labels","emptyLabel","empty_option","searchPlaceholder","search_placeholder","noItemsFound","no_items","showMore","show_more","options","_hideSelect","_initTemplate","_initActions","hide","$mainSpan","$labelSpan","getLabel","$dropdownSpan","$matchingItemsList","append","_initSearchTemplate","_initShowMoreTemplate","after","$_main","$_label","$_dropdown","$_items","$dropdwonSpan","$container","$search","name","type","placeholder","prependTo","$_search","$showMore","text","loadNextPage","bind","$_showMore","stopPropagation","toggleDropdown","_populateItems","$li","value","isActive","hasClass","isValueSelected","toggleClass","_changeItemStatus","siblings","input","parent","prop","change","selfOriginated","_selectItem","_deselectItem","updateLabel","closeDropdown","_afterDropdownOpen","dropdowns","filter","select","_closeOtherDropdowns","val","limit","matchingElements","$options","getOptions","promise","Promise","resolve","t","label","regex","show","test","push","then","retrievedElements","_formatItems","indexes","hasMore","sort","b","mod","slice","active","option","getOptionByValue","$item","attr","$anchor","template","count","href","$checkbox","$label","prepend","page","parseInt","getMatchingElements","resultSet","matchingItems","_emptyItems","_hideLoadMore","currentPage","unshift","_generateItem","_showLoadMore","status","$option","hasSelectedValues","getSelectedLabels","join","getSelectedOptions","found","getSelectedValues","toString","values","YITH_WCAN_Preset","_regiterStatus","_initFilterButton","_initResponsive","_initFilters","getFilters","$filter","_initFilter","maybeShowClearAllFilters","$filterButtons","modal_on_mobile","media","matchMedia","mobile_media_query","isMobile","_afterLayoutChange","resize","handleChange","$currentFilter","multiple","$items","not","children","activeFilters","maybeFilter","maybeToggleClearAllFilters","maybeToggleClearFilter","delegateTarget","call","$input","_initTooltip","_initPriceSlider","_initDropdown","_initCollapsable","maybeShowClearFilter","_initCustomInput","position","th","tooltip","wrapperWidth","outerWidth","left","width","container","css","toFixed","fadeIn","fadeOut","remove","$dropdown","selectWoo","_initDropdownObject","terms_per_page","$minInput","$maxInput","min","parseFloat","max","currentMin","currentMax","step","handleSliderChange","sliderTimeout","clearTimeout","setTimeout","ionRangeSlider","skin","from","to","min_interval","values_separator","prettify","formatPrice","onChange","onFinish","add","off","_initTitleCollapsable","_initHierarchyCollapsable","$title","_initToggle","parents","show_current_children","$t","$toggle","appendTo","slideToggle","containerClass","wrap","originalFilters","getFiltersProperties","_addCloseModalButton","_addApplyFiltersModalButton","_switchToCollapsables","removeAttr","_removeCloseModalButton","_removeApplyFiltersModalButton","_switchBackCollapsables","$closeButton","close","modalElements","closeButton","$filterButton","show_results","applyFiltersButton","removeData","$filters","isFilterActive","end","currentFilters","currentStr","JSON","stringify","originalStr","dirty","$initiator","maybeRegisterStatusChange","instant_filters","product_filter","doFilter","newPreset","scroll_top","targetOffset","offset","top","scroll_target","scrollTarget","animate","scrollTop","getActiveFilters","filterType","filteredActive","Math","abs","properties","filteredProperties","$active","activeTerms","taxonomy","isAttr","relation","get","pop","glue","rating_filter","price_ranges","min_price","max_price","onsale_filter","instock_filter","featured_filter","orderby","filterProperties","getFilterProperties","mergeProperties","hasProp","includes","maybeHideClearFilter","isAnyFilterActive","maybeHideClearAllFilters","show_clear_filter","clear_selection","role","deactivateFilter","clear_all_selections","$activeItems","click","formattedRange","$priceSlider","getFiltersByProperties","toggles_open_on_modal","_openAllCollapsables","_closeAllCollapsables","price","accounting","formatMoney","symbol","currency_format","decimal","thousand","precision","format","set1","set2","hasOwnProperty","newValue","index","arr","queryTypeParam","globalThis"],"mappings":"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","file":"yith-wcan-shortcodes.js","sourcesContent":["'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nconst $ = jQuery; // we can do this as WebPack will compact all together inside a closure.\n\nexport { $ };\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Filter {\n\t// currently executing xhr\n\txhr = null;\n\n\t// flag set during ajax call handling\n\tdoingAjax = false;\n\n\t// register original url search param\n\toriginalSearch = location.search;\n\n\t// flag set once init has executed\n\tinitialized = false;\n\n\t// init object\n\tconstructor() {\n\t\tconst head = $( 'head' ).html(),\n\t\t\tpageTitle = document.title,\n\t\t\talternativeUrl = this.searchAlternativeUrl( head );\n\n\t\talternativeUrl &&\n\t\t\t! this.doingAjax &&\n\t\t\t! this.initialized &&\n\t\t\t! yith_wcan_shortcodes.ajax_filters &&\n\t\t\tthis.pushUrlToHistory( alternativeUrl, pageTitle );\n\n\t\tthis.initialized = true;\n\t}\n\n\t// execute call to filter products in current view\n\tdoFilter( filters, target, preset ) {\n\t\tlet targetUrl,\n\t\t\t$target = target ? $( target ) : $( 'body' ),\n\t\t\tcustomFilters;\n\n\t\t// filter properties\n\t\tcustomFilters = $(\n\t\t\tdocument\n\t\t).triggerHandler( 'yith_wcan_filters_parameters', [ filters ] );\n\n\t\tif ( !! customFilters ) {\n\t\t\tfilters = customFilters;\n\t\t}\n\n\t\t// block elements before filtering\n\t\t$target && this.block( $target );\n\n\t\t// calculate target url\n\t\ttargetUrl = this.buildUrl( filters );\n\n\t\t// if no ajax, simply change page url\n\t\tif ( ! yith_wcan_shortcodes.ajax_filters ) {\n\t\t\twindow.location = targetUrl;\n\t\t\treturn;\n\t\t}\n\n\t\t// start doing ajax\n\t\tthis.doingAjax = true;\n\n\t\treturn this._doAjax( targetUrl ).done( ( response ) => {\n\t\t\ttargetUrl = this.searchAlternativeUrl( response, targetUrl );\n\n\t\t\tthis._beforeFilter( response, filters );\n\n\t\t\tthis.refreshFragments( target, preset, response );\n\t\t\tthis.pushUrlToHistory( targetUrl, response.pageTitle );\n\n\t\t\t$target && this.unblock( $target );\n\n\t\t\tthis._afterFilter( response, filters );\n\n\t\t\tthis.doingAjax = false;\n\t\t} );\n\t}\n\n\t// actions performed before filter\n\t_beforeFilter( response, filters ) {\n\t\t$( document ).trigger( 'yith-wcan-ajax-loading', [\n\t\t\tresponse,\n\t\t\tfilters,\n\t\t] );\n\t}\n\n\t// actions performed after filter\n\t_afterFilter( response, filters ) {\n\t\t$( '.woocommerce-ordering' ).on(\n\t\t\t'change',\n\t\t\t'select.orderby',\n\t\t\tfunction () {\n\t\t\t\t$( this ).closest( 'form' ).submit();\n\t\t\t}\n\t\t);\n\n\t\tif ( filters && !! Object.keys( filters ).length ) {\n\t\t\t$( 'body' ).addClass( 'filtered' );\n\t\t} else {\n\t\t\t$( 'body' ).removeClass( 'filtered' );\n\t\t}\n\n\t\t$( window ).trigger( 'scroll' );\n\n\t\t$( document )\n\t\t\t.trigger( 'yith-wcan-ajax-filtered', [ response, filters ] )\n\t\t\t.trigger( 'yith_wcwl_reload_fragments' );\n\t}\n\n\t// build url to show\n\tbuildUrl( filters ) {\n\t\tlet queryParam = yith_wcan_shortcodes.query_param,\n\t\t\tparams = {},\n\t\t\tlocation = window.location,\n\t\t\turl = !! yith_wcan_shortcodes.base_url\n\t\t\t\t? yith_wcan_shortcodes.base_url\n\t\t\t\t: location?.origin + location?.pathname,\n\t\t\tsearch = '',\n\t\t\tself = this;\n\n\t\tconst haveFilters =\n\t\t\ttypeof filters === 'object' && Object.keys( filters ).length;\n\n\t\t// remove filter session from current url, if any\n\t\tif ( !! yith_wcan_shortcodes.session_param ) {\n\t\t\turl = url.replace(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t'/' + yith_wcan_shortcodes.session_param + '/[^/]*/'\n\t\t\t\t),\n\t\t\t\t''\n\t\t\t);\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams[ queryParam ] = 1;\n\t\t}\n\n\t\tif ( !! this.originalSearch ) {\n\t\t\tconst searchParams = this.originalSearch\n\t\t\t\t.replace( '?', '' )\n\t\t\t\t.split( '&' )\n\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\tconst items = v.split( '=' );\n\n\t\t\t\t\tif ( items.length === 2 ) {\n\t\t\t\t\t\tif ( this.isFilterParam( items[ 0 ] ) ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta[ items[ 0 ] ] = items[ 1 ];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn a;\n\t\t\t\t}, {} );\n\n\t\t\tparams = $.extend( params, searchParams );\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams = $.extend( params, filters );\n\t\t}\n\n\t\tsearch = Object.keys( params )\n\t\t\t.reduce( function ( a, i ) {\n\t\t\t\tconst v = params[ i ];\n\n\t\t\t\tif ( ! v || ! i ) {\n\t\t\t\t\treturn a;\n\t\t\t\t}\n\n\t\t\t\ta += self._cleanParam( i ) + '=' + self._cleanParam( v ) + '&';\n\n\t\t\t\treturn a;\n\t\t\t}, '?' )\n\t\t\t.replace( /&$/g, '' )\n\t\t\t.replace( /%2B/g, '+' )\n\t\t\t.replace( /%2C/g, ',' );\n\n\t\tif ( search.length > 1 ) {\n\t\t\turl += search;\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t// retrieves alternative sharing url in response body\n\tsearchAlternativeUrl( response, defaultUrl = '' ) {\n\t\tlet url = defaultUrl,\n\t\t\tmatches;\n\n\t\tif ( -1 === response.indexOf( 'yith_wcan:sharing_url' ) ) {\n\t\t\treturn url;\n\t\t}\n\n\t\tmatches = response.match(\n\t\t\t/<meta name=\"yith_wcan:sharing_url\" content=\"([^\"]*)\">/\n\t\t);\n\t\turl = matches && 1 in matches ? matches[ 1 ] : url;\n\n\t\treturn url;\n\t}\n\n\t// push url to browser history\n\tpushUrlToHistory( url, title ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes.change_browser_url ||\n\t\t\tnavigator.userAgent.match( /msie/i )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.history.pushState(\n\t\t\t{\n\t\t\t\tpageTitle: title,\n\t\t\t},\n\t\t\t'',\n\t\t\turl\n\t\t);\n\t}\n\n\t// replaces elements in the page with refreshed ones\n\trefreshFragments( target, preset, response ) {\n\t\tconst responseDom = document.createElement( 'html' ),\n\t\t\t$response = $( responseDom );\n\n\t\tresponseDom.innerHTML = response;\n\n\t\tif ( target ) {\n\t\t\tlet $preset = $( preset ),\n\t\t\t\t$target = $( target ),\n\t\t\t\t$destination;\n\n\t\t\tif ( $preset.length ) {\n\t\t\t\t$destination = $response.find( preset );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$preset.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( $target.length ) {\n\t\t\t\t$destination = $response.find( target );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$target.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst content = $( yith_wcan_shortcodes.content );\n\n\t\t\tif ( content.length ) {\n\t\t\t\tcontent.replaceWith(\n\t\t\t\t\t$response.find( yith_wcan_shortcodes.content )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t$( 'body' ).replaceWith( $response.find( 'body' ) );\n\t\t\t}\n\t\t}\n\n\t\t$( document ).trigger( 'yith_wcan_init_shortcodes' );\n\t}\n\n\t// clean url parameters\n\t_cleanParam( param ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes?.process_sanitize ||\n\t\t\tyith_wcan_shortcodes?.skip_sanitize\n\t\t) {\n\t\t\treturn param;\n\t\t}\n\n\t\treturn encodeURIComponent( param );\n\t}\n\n\t// executes Ajax calls\n\t_doAjax( url, params ) {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tparams = $.extend(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\theaders: {\n\t\t\t\t\t'X-YITH-WCAN': 1,\n\t\t\t\t},\n\t\t\t},\n\t\t\tparams\n\t\t);\n\n\t\tthis.xhr = $.ajax( params );\n\n\t\treturn this.xhr;\n\t}\n\n\t// block dom elements\n\tblock( $el ) {\n\t\tif ( typeof $.fn.block === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet background = '#fff center center no-repeat';\n\n\t\tif ( yith_wcan_shortcodes?.loader ) {\n\t\t\tbackground = `url('${ yith_wcan_shortcodes.loader }') ${ background }`;\n\t\t}\n\n\t\t$el.block( {\n\t\t\tmessage: null,\n\t\t\toverlayCSS: {\n\t\t\t\tbackground,\n\t\t\t\topacity: 0.7,\n\t\t\t},\n\t\t} );\n\t}\n\n\t// unblock dom elements\n\tunblock( $el ) {\n\t\tif ( typeof $.fn.unblock === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$el.unblock();\n\t}\n\n\t// checks if param is one used by layared nav to filter products.\n\tisFilterParam( param ) {\n\t\tlet supportedParams = [\n\t\t\t\t'rating_filter',\n\t\t\t\t'min_price',\n\t\t\t\t'max_price',\n\t\t\t\t'price_ranges',\n\t\t\t\t'onsale_filter',\n\t\t\t\t'instock_filter',\n\t\t\t\t'featured_filter',\n\t\t\t\t'orderby',\n\t\t\t\t'product-page',\n\t\t\t\tyith_wcan_shortcodes.query_param,\n\t\t\t],\n\t\t\tcustomParams;\n\n\t\t// filter properties\n\t\tcustomParams = $(\n\t\t\tdocument\n\t\t).triggerHandler( 'yith_wcan_supported_filters_parameters', [\n\t\t\tsupportedParams,\n\t\t] );\n\n\t\tif ( !! customParams ) {\n\t\t\tsupportedParams = customParams;\n\t\t}\n\n\t\tsupportedParams = supportedParams.concat(\n\t\t\tyith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>\n\t\t\t\ti.replace( 'pa_', 'filter_' )\n\t\t\t)\n\t\t);\n\n\t\tif ( -1 !== supportedParams.indexOf( param ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'filter_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'query_type_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Reset_Button {\n\t// current button\n\t$reset = null;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// current button\n\t\tthis.$reset = el;\n\n\t\tthis.$reset.on( 'click', function ( ev ) {\n\t\t\tev.preventDefault();\n\n\t\t\t$( '.yith-wcan-filters' ).each( function () {\n\t\t\t\tconst preset = $( this ).data( 'preset' );\n\n\t\t\t\tpreset.deactivateAllFilters( true );\n\t\t\t\tpreset.closeModal();\n\t\t\t} );\n\t\t} );\n\n\t\tthis.$reset.data( 'reset', this ).addClass( 'enhanced' );\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Dropdown {\n\t// current button\n\t$originalSelect = null;\n\n\t// main element\n\t$_main = null;\n\n\t// label element\n\t$_label = null;\n\n\t// dropdown\n\t$_dropdown = null;\n\n\t// search input\n\t$_search = null;\n\n\t// show more link\n\t$_showMore = null;\n\n\t// items list\n\t$_items = null;\n\n\t// current page\n\tcurrentPage = 1;\n\n\t// options\n\toptions = {};\n\n\t// init object\n\tconstructor( el, opts ) {\n\t\tthis.$originalSelect = el;\n\n\t\tif ( ! this.$originalSelect.is( 'select' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst defaultPerPage = this.$originalSelect.data( 'per_page' ),\n\t\t\tdefaultOrder = this.$originalSelect.data( 'order' ),\n\t\t\tdefaultAll = this.$originalSelect.data( 'all-label' ),\n\t\t\tdefaults = {\n\t\t\t\tshowSearch: this.$originalSelect.data( 'show_search' ),\n\t\t\t\tpaginate: this.$originalSelect.data( 'paginate' ),\n\t\t\t\tperPage: defaultPerPage ? defaultPerPage : 10,\n\t\t\t\torder: defaultOrder ? defaultOrder : 'ASC',\n\t\t\t\tgetElements: null,\n\t\t\t\tlabels: {\n\t\t\t\t\temptyLabel: defaultAll\n\t\t\t\t\t\t? defaultAll\n\t\t\t\t\t\t: yith_wcan_shortcodes.labels.empty_option,\n\t\t\t\t\tsearchPlaceholder:\n\t\t\t\t\t\tyith_wcan_shortcodes.labels.search_placeholder,\n\t\t\t\t\tnoItemsFound: yith_wcan_shortcodes.labels.no_items,\n\t\t\t\t\tshowMore: yith_wcan_shortcodes.labels.show_more,\n\t\t\t\t},\n\t\t\t};\n\n\t\tthis.options = $.extend( defaults, opts );\n\n\t\tthis._hideSelect();\n\t\tthis._initTemplate();\n\t\tthis._initActions();\n\n\t\tthis.$originalSelect.data( 'dropdown', this ).addClass( 'enhanced' );\n\t}\n\n\t// hide select\n\t_hideSelect() {\n\t\tthis.$originalSelect.hide();\n\t}\n\n\t// create dropdown\n\t_initTemplate() {\n\t\tconst $mainSpan = $( '<div/>', {\n\t\t\t\tclass: 'yith-wcan-dropdown closed',\n\t\t\t} ),\n\t\t\t$labelSpan = $( '<div/>', {\n\t\t\t\tclass: 'dropdown-label',\n\t\t\t\thtml: this.getLabel(),\n\t\t\t} ),\n\t\t\t$dropdownSpan = $( '<div>', {\n\t\t\t\tclass: 'dropdown-wrapper',\n\t\t\t} ),\n\t\t\t$matchingItemsList = $( '<ul/>', {\n\t\t\t\tclass: 'matching-items filter-items',\n\t\t\t} );\n\n\t\t$dropdownSpan.append( $matchingItemsList );\n\t\t$mainSpan.append( $labelSpan ).append( $dropdownSpan );\n\n\t\tif ( this.options.showSearch ) {\n\t\t\tthis._initSearchTemplate( $dropdownSpan );\n\t\t}\n\n\t\tif ( this.options.paginate ) {\n\t\t\tthis._initShowMoreTemplate( $dropdownSpan );\n\t\t}\n\n\t\tthis.$originalSelect.after( $mainSpan );\n\t\tthis.$_main = $mainSpan;\n\t\tthis.$_label = $labelSpan;\n\t\tthis.$_dropdown = $dropdownSpan;\n\t\tthis.$_items = $matchingItemsList;\n\t}\n\n\t// create search field\n\t_initSearchTemplate( $dropdwonSpan ) {\n\t\tconst $container = $( '<div/>', {\n\t\t\t\tclass: 'search-field-container',\n\t\t\t} ),\n\t\t\t$search = $( '<input/>', {\n\t\t\t\tname: 's',\n\t\t\t\tclass: 'search-field',\n\t\t\t\ttype: 'search',\n\t\t\t\tplaceholder: this.options.labels.searchPlaceholder,\n\t\t\t} );\n\n\t\t$container.append( $search ).prependTo( $dropdwonSpan );\n\t\tthis.$_search = $search;\n\t}\n\n\t// create showMore field\n\t_initShowMoreTemplate( $dropdwonSpan ) {\n\t\tconst $showMore = $( '<a/>', {\n\t\t\tclass: 'show-more',\n\t\t\ttext: this.options.labels.showMore.replace(\n\t\t\t\t'%d',\n\t\t\t\tthis.options.perPage\n\t\t\t),\n\t\t} );\n\n\t\t$showMore.on( 'click', this.loadNextPage.bind( this ) ).hide();\n\n\t\t$dropdwonSpan.append( $showMore );\n\t\tthis.$_showMore = $showMore;\n\t}\n\n\t// init actions performed over dropdown elements\n\t_initActions() {\n\t\tconst self = this;\n\n\t\t// main open event\n\t\tthis.$_main?.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t\tself.toggleDropdown();\n\t\t} );\n\t\tthis.$_dropdown.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t} );\n\n\t\t// search event\n\t\tthis.$_search?.on( 'keyup search', () => {\n\t\t\tself._populateItems();\n\t\t} );\n\n\t\t// select event\n\t\tthis.$_items.on( 'change', ':input', function () {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'li:not(.checkbox) a', function ( ev ) {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tif ( isActive ) {\n\t\t\t\t$li.siblings().removeClass( 'active' );\n\t\t\t}\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'label > a', function ( ev ) {\n\t\t\tconst input = $( this ).parent().find( ':input' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\tinput.is( '[type=\"radio\"]' ) ||\n\t\t\t\tinput.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\tinput.prop( 'checked', ! input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\tinput.change();\n\t\t} );\n\n\t\t// select change\n\t\tthis.$originalSelect.on( 'change', ( ev, selfOriginated ) => {\n\t\t\tif ( selfOriginated ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.$_items.find( 'li' ).each( function () {\n\t\t\t\tconst value = $( this ).data( 'value' );\n\n\t\t\t\tif ( self.isValueSelected( value ) ) {\n\t\t\t\t\tself._selectItem( value );\n\t\t\t\t} else {\n\t\t\t\t\tself._deselectItem( value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tself.updateLabel();\n\t\t} );\n\n\t\t// close dropdown on external click\n\t\t$( document ).on( 'click', this.closeDropdown.bind( this ) );\n\t}\n\n\t// open dropdown\n\topenDropdown() {\n\t\tthis.$_main?.addClass( 'open' ).removeClass( 'closed' );\n\t\tthis._afterDropdownOpen();\n\t}\n\n\t// close dropdown\n\tcloseDropdown() {\n\t\tthis.$_main?.removeClass( 'open' ).addClass( 'closed' );\n\t}\n\n\t// close other dropdowns\n\t_closeOtherDropdowns() {\n\t\tconst self = this,\n\t\t\tdropdowns = $( document )\n\t\t\t\t.find( 'select.enhanced' )\n\t\t\t\t.filter( function ( i, select ) {\n\t\t\t\t\tconst $el = $( select );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! $el.data( 'dropdown' ) &&\n\t\t\t\t\t\t! $el.is( self.$originalSelect )\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\tdropdowns.each( function () {\n\t\t\t$( this ).data( 'dropdown' ).closeDropdown();\n\t\t} );\n\t}\n\n\t// toggle dropdown\n\ttoggleDropdown() {\n\t\tthis.$_main?.toggleClass( 'open' ).toggleClass( 'closed' );\n\n\t\tif ( this.$_main?.hasClass( 'open' ) ) {\n\t\t\tthis._afterDropdownOpen();\n\t\t}\n\t}\n\n\t// perform operations after dropdown is open\n\t_afterDropdownOpen() {\n\t\tthis._closeOtherDropdowns();\n\n\t\tif ( this.$_search?.length ) {\n\t\t\tthis.$_search.val( '' );\n\t\t}\n\n\t\tthis._populateItems();\n\t}\n\n\t// get elements\n\tgetMatchingElements( search, limit ) {\n\t\tlet matchingElements = [],\n\t\t\t$options = this.getOptions(),\n\t\t\tpromise;\n\n\t\tpromise = new Promise( ( resolve ) => {\n\t\t\t// first of all, search across select option\n\t\t\t$options.each( function () {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\tvalue = t.val(),\n\t\t\t\t\tlabel = t.html(),\n\t\t\t\t\tregex = new RegExp( '.*' + search + '.*', 'i' ),\n\t\t\t\t\tshow =\n\t\t\t\t\t\t! search || regex.test( value ) || regex.test( label );\n\n\t\t\t\tif ( show ) {\n\t\t\t\t\tmatchingElements.push( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// then retrieve additional items\n\t\t\tif ( this.options.getElements ) {\n\t\t\t\t// we're expecting key => value pairs\n\t\t\t\tthis.options\n\t\t\t\t\t.getElements( search )\n\t\t\t\t\t.then( ( retrievedElements ) => {\n\t\t\t\t\t\tif ( retrievedElements ) {\n\t\t\t\t\t\t\t// reformat retrieved array\n\t\t\t\t\t\t\tretrievedElements = retrievedElements.reduce(\n\t\t\t\t\t\t\t\t( a, v, i ) => {\n\t\t\t\t\t\t\t\t\ta.push( { label: i, value: v } );\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// merge found results with options\n\t\t\t\t\t\t\tmatchingElements = $.extend(\n\t\t\t\t\t\t\t\tmatchingElements,\n\t\t\t\t\t\t\t\tretrievedElements\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t}\n\t\t} );\n\n\t\treturn promise;\n\t}\n\n\t// format items as key/value pairs for further processing\n\t_formatItems( items, limit ) {\n\t\tlet indexes = [],\n\t\t\thasMore = false;\n\n\t\t// remove duplicates and sort array of results\n\t\titems\n\t\t\t.filter( ( v ) => {\n\t\t\t\tif ( -1 === indexes.indexOf( v.value ) ) {\n\t\t\t\t\tindexes.push( v.value );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\tconst order = this.options.order,\n\t\t\t\t\tmod = order === 'ASC' ? 1 : -1;\n\n\t\t\t\tif ( a.value < b.value ) {\n\t\t\t\t\treturn -1 * mod;\n\t\t\t\t} else if ( a.value > b.value ) {\n\t\t\t\t\treturn mod;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t} );\n\n\t\t// paginate when needed\n\t\tif ( limit ) {\n\t\t\thasMore = limit < Object.keys( items ).length;\n\t\t\titems = items.slice( 0, limit );\n\t\t}\n\n\t\treturn {\n\t\t\titems,\n\t\t\thasMore,\n\t\t};\n\t}\n\n\t// generate item to append to items list\n\t_generateItem( value, label ) {\n\t\tlet active = this.isValueSelected( value ),\n\t\t\toption = this.getOptionByValue( value ),\n\t\t\t$item = $( '<li/>', {\n\t\t\t\t'data-value': value,\n\t\t\t\tclass: option.length ? option.attr( 'class' ) : '',\n\t\t\t} ),\n\t\t\t$anchor;\n\n\t\tif ( option.length ) {\n\t\t\tconst template = option.data( 'template' ),\n\t\t\t\tcount = option.data( 'count' );\n\n\t\t\tlabel = template ? template : label;\n\n\t\t\tif ( !! count ) {\n\t\t\t\tlabel += count;\n\t\t\t}\n\t\t}\n\n\t\t$anchor = $( '<a/>', {\n\t\t\thref: option.length ? option.data( 'filter_url' ) : '#',\n\t\t\thtml: label,\n\t\t\t'data-title': option.length ? option.data( 'title' ) : '',\n\t\t} );\n\n\t\tif ( this.$originalSelect.prop( 'multiple' ) ) {\n\t\t\tconst $checkbox = $( '<input/>', {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue,\n\t\t\t\t} ),\n\t\t\t\t$label = $( '<label>' );\n\n\t\t\t$checkbox.prop( 'checked', active );\n\t\t\t$label.prepend( $checkbox ).append( $anchor );\n\t\t\t$item.append( $label ).addClass( 'checkbox' );\n\t\t} else {\n\t\t\t$item.append( $anchor );\n\t\t}\n\n\t\tactive ? $item.addClass( 'active' ) : $item.removeClass( 'active' );\n\n\t\treturn $item;\n\t}\n\n\t// populate items list\n\t_populateItems( page ) {\n\t\tlet search = this.$_search?.length ? this.$_search.val() : '',\n\t\t\tperPage = this.options.paginate ? this.options.perPage : 0,\n\t\t\tlimit;\n\n\t\tpage = page ? parseInt( page ) : 1;\n\t\tlimit = page * perPage;\n\n\t\tthis.getMatchingElements( search, limit ).then( ( resultSet ) => {\n\t\t\tlet matchingItems = resultSet.items,\n\t\t\t\titems = [],\n\t\t\t\thasMore = false;\n\n\t\t\t// remove all previous items\n\t\t\tthis._emptyItems();\n\t\t\tthis._hideLoadMore();\n\n\t\t\tif ( ! matchingItems.length ) {\n\t\t\t\titems.push(\n\t\t\t\t\t$( '<li/>', { text: this.options.labels.noItemsFound } )\n\t\t\t\t);\n\n\t\t\t\tthis.currentPage = 1;\n\t\t\t} else {\n\t\t\t\tfor ( const v of matchingItems ) {\n\t\t\t\t\tif ( v.value === '' ) {\n\t\t\t\t\t\titems.unshift( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\titems.push( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.currentPage = page;\n\t\t\t\thasMore = resultSet.hasMore;\n\t\t\t}\n\n\t\t\tthis.$_items.append( items );\n\n\t\t\t$( document ).trigger( 'yith_wcan_dropdown_updated' );\n\n\t\t\tif ( hasMore ) {\n\t\t\t\tthis._showLoadMore();\n\t\t\t}\n\t\t} );\n\t}\n\n\t// load next page of items\n\tloadNextPage() {\n\t\tconst page = this.currentPage + 1;\n\n\t\tthis._populateItems( page );\n\t}\n\n\t// set an item as active\n\t_selectItem( value ) {\n\t\treturn this._changeItemStatus( value, true );\n\t}\n\n\t// disable an item\n\t_deselectItem( value ) {\n\t\treturn this._changeItemStatus( value, false );\n\t}\n\n\t// change item status\n\t_changeItemStatus( value, status ) {\n\t\tconst $option = this.$originalSelect.find(\n\t\t\t`option[value=\"${ value }\"]`\n\t\t);\n\n\t\tif ( $option.length ) {\n\t\t\t$option.prop( 'selected', status );\n\n\t\t\tthis.closeDropdown();\n\t\t\tthis.updateLabel();\n\n\t\t\tthis.$originalSelect.trigger( 'change', [ true ] );\n\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// empty items list\n\t_emptyItems() {\n\t\tthis.$_items.html( '' );\n\t}\n\n\t// show \"Load more\" link\n\t_showLoadMore() {\n\t\tthis.$_showMore.show();\n\t}\n\n\t// hide \"Load more\" link\n\t_hideLoadMore() {\n\t\tthis.$_showMore.hide();\n\t}\n\n\t// returns select label\n\tgetLabel() {\n\t\treturn this.hasSelectedValues()\n\t\t\t? this.getSelectedLabels().join( ', ' )\n\t\t\t: this.options.labels.emptyLabel;\n\t}\n\n\t// update label to match new selection\n\tupdateLabel() {\n\t\tconst label = this.getLabel();\n\n\t\tthis.$_label?.html( label );\n\t}\n\n\t// returns select options\n\tgetOptions() {\n\t\treturn this.$originalSelect.find( 'option' );\n\t}\n\n\t// checks whether select has selected values\n\thasSelectedValues() {\n\t\treturn this.getSelectedOptions().length;\n\t}\n\n\t// checks whether a value is selected\n\tisValueSelected( value ) {\n\t\tconst found = this.getSelectedValues().indexOf( value.toString() );\n\n\t\treturn -1 !== found;\n\t}\n\n\t// retrieve selected options\n\tgetSelectedOptions() {\n\t\treturn this.$originalSelect.find( 'option' ).filter( ':selected' );\n\t}\n\n\t// retrieves an option node by value\n\tgetOptionByValue( value ) {\n\t\treturn this.$originalSelect.find( `option[value=\"${ value }\"]` );\n\t}\n\n\t// retrieve labels for selected options\n\tgetSelectedLabels() {\n\t\tconst labels = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tlet $option = $( this ),\n\t\t\t\ttemplate = $option.data( 'template' );\n\n\t\t\ttemplate = template\n\t\t\t\t? template\n\t\t\t\t: $option.html().replace( /\\([0-9]*\\)/, '' );\n\n\t\t\tlabels.push( template );\n\t\t} );\n\n\t\treturn labels;\n\t}\n\n\t// retrieve values for selected options\n\tgetSelectedValues() {\n\t\tconst values = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tvalues.push( $( this ).val() );\n\t\t} );\n\n\t\treturn values;\n\t}\n\n\tdestroy() {\n\t\t// TBD\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\nimport YITH_WCAN_Dropdown from './yith-wcan-dropdown';\n\nexport default class YITH_WCAN_Preset {\n\t// main preset node\n\tpreset = false;\n\t$preset = false;\n\n\t// target of the filter, if any\n\ttarget = false;\n\t$target = false;\n\n\t// filters node\n\t$filters = false;\n\n\t// filter button\n\t$filterButtons = false;\n\n\t// nodes created just for modal layout\n\tmodalElements = {};\n\n\t// retains current status of filters\n\tactiveFilters = false;\n\n\t// mobile flag\n\tisMobile = false;\n\n\t// slider timeout\n\tsliderTimeout = false;\n\n\t// registers when status has changed\n\toriginalFilters = null;\n\tdirty = false;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// main preset node\n\t\tthis.preset = '#' + el.attr( 'id' );\n\t\tthis.$preset = el;\n\n\t\t// target of the filter, if any\n\t\tthis.target = this.$preset.data( 'target' );\n\t\tthis.$target = this.target ? $( this.target ) : false;\n\n\t\tthis._regiterStatus();\n\t\tthis._initFilterButton();\n\t\tthis._initResponsive();\n\t\tthis._initFilters();\n\t\tthis._initActions();\n\n\t\tthis.$preset\n\t\t\t.data( 'preset', this )\n\t\t\t.addClass( 'enhanced' )\n\t\t\t.trigger( 'yith_wcan_preset_initialized', [ this ] );\n\t}\n\n\t// init filters\n\t_initFilters() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself._initFilter( $filter );\n\t\t} );\n\n\t\tthis.maybeShowClearAllFilters();\n\t}\n\n\t// init filter button\n\t_initFilterButton() {\n\t\tthis.$filterButtons = this.$preset.find( '.apply-filters' );\n\n\t\tif ( ! this.$filterButtons.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// manage filter button\n\t\tthis.$filterButtons\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthis.filter();\n\t\t\t} )\n\t\t\t.hide();\n\t}\n\n\t// init generic actions\n\t_initActions() {\n\t\tthis.$preset.find( 'form' ).on( 'submit', ( ev ) => {\n\t\t\tev.preventDefault();\n\t\t} );\n\t}\n\n\t// init responsive\n\t_initResponsive() {\n\t\tif ( ! yith_wcan_shortcodes.modal_on_mobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = window.matchMedia(\n\t\t\t`(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`\n\t\t);\n\n\t\t$( window )\n\t\t\t.on( 'resize', () => {\n\t\t\t\tconst isMobile = !! media.matches;\n\n\t\t\t\tif ( isMobile !== this.isMobile ) {\n\t\t\t\t\tthis.isMobile = isMobile;\n\t\t\t\t\tthis._afterLayoutChange();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.resize();\n\t}\n\n\t// init filter\n\t_initFilter( $filter ) {\n\t\tconst self = this,\n\t\t\thandleChange = function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$currentFilter = t.closest( '.yith-wcan-filter' ),\n\t\t\t\t\tmultiple = $currentFilter.length\n\t\t\t\t\t\t? 'yes' === $currentFilter.data( 'multiple' )\n\t\t\t\t\t\t: false,\n\t\t\t\t\t$item = t.closest( '.filter-item' ),\n\t\t\t\t\t$items = $item.length\n\t\t\t\t\t\t? $currentFilter.find( '.filter-item' ).not( $item )\n\t\t\t\t\t\t: [];\n\n\t\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tev.preventDefault();\n\n\t\t\t\t$items.length &&\n\t\t\t\t\t! multiple &&\n\t\t\t\t\t$items\n\t\t\t\t\t\t.removeClass( 'active' )\n\t\t\t\t\t\t.children( 'label' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.parent( '.checked' )\n\t\t\t\t\t\t.removeClass( 'checked' );\n\t\t\t\t$item.length && $item.toggleClass( 'active' );\n\n\t\t\t\t// reset active filters.\n\t\t\t\tself.activeFilters = false;\n\n\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\tself.maybeToggleClearAllFilters();\n\t\t\t\tself.maybeToggleClearFilter( $currentFilter );\n\t\t\t};\n\n\t\t// handle filter activation/deactivation by click on label (no input involved)\n\t\t$filter\n\t\t\t.find( '.filter-item' )\n\t\t\t.not( '.checkbox' )\n\t\t\t.not( '.radio' )\n\t\t\t.on( 'click', 'a', function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\t\tif ( ! $( ev?.delegateTarget ).is( $item ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\thandleChange.call( this, ev );\n\t\t\t} );\n\n\t\t// handle filter activation/deactivation from input change\n\t\t$filter.find( ':input' ).on( 'change', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\tt.prop( 'checked', false );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\thandleChange.call( this, ev );\n\t\t} );\n\n\t\t// handle filter activation/deactivation by click on label (there is an input whose state can be switched)\n\t\t$filter.find( 'label > a' ).on( 'click', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst $input = t.parent().find( ':input' );\n\n\t\t\tif (\n\t\t\t\t$input.is( '[type=\"radio\"]' ) ||\n\t\t\t\t$input.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\t$input.prop( 'checked', ! $input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\t$input.change();\n\t\t} );\n\n\t\t// init tooltip\n\t\tthis._initTooltip( $filter );\n\n\t\t// init price slider\n\t\tthis._initPriceSlider( $filter );\n\n\t\t// init dropdown\n\t\tthis._initDropdown( $filter );\n\n\t\t// init collapsable\n\t\tthis._initCollapsable( $filter );\n\n\t\t// init clear anchors\n\t\tthis.maybeShowClearFilter( $filter );\n\n\t\t// init custom inputs\n\t\tif ( this.$preset?.hasClass( 'custom-style' ) ) {\n\t\t\tthis._initCustomInput( $filter );\n\t\t}\n\t}\n\n\t// init tooltip\n\t_initTooltip( $filter, position ) {\n\t\t$filter.find( '[data-title]' ).each( function () {\n\t\t\tconst t = $( this );\n\n\t\t\tif ( t.hasClass( 'tooltip-added' ) || ! t.data( 'title' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tt.on( 'mouseenter', function () {\n\t\t\t\tlet th = $( this ),\n\t\t\t\t\ttooltip = null,\n\t\t\t\t\twrapperWidth = th.outerWidth(),\n\t\t\t\t\tleft = 0,\n\t\t\t\t\twidth = 0;\n\n\t\t\t\tif (\n\t\t\t\t\t! position ||\n\t\t\t\t\t( 'top' !== position && 'right' !== position )\n\t\t\t\t) {\n\t\t\t\t\tconst container = th.closest( '.filter-item' );\n\n\t\t\t\t\tposition =\n\t\t\t\t\t\tcontainer.hasClass( 'color' ) ||\n\t\t\t\t\t\tcontainer.hasClass( 'label' )\n\t\t\t\t\t\t\t? 'top'\n\t\t\t\t\t\t\t: 'right';\n\t\t\t\t}\n\n\t\t\t\ttooltip = $( '<span>', {\n\t\t\t\t\tclass: 'yith-wcan-tooltip',\n\t\t\t\t\thtml: th.data( 'title' ),\n\t\t\t\t} );\n\n\t\t\t\tth.append( tooltip );\n\n\t\t\t\twidth = tooltip.outerWidth() + 6;\n\t\t\t\ttooltip.outerWidth( width );\n\n\t\t\t\tif ( 'top' === position ) {\n\t\t\t\t\tleft = ( wrapperWidth - width ) / 2;\n\t\t\t\t} else {\n\t\t\t\t\tleft = wrapperWidth + 15;\n\t\t\t\t}\n\n\t\t\t\ttooltip.css( { left: left.toFixed( 0 ) + 'px' } ).fadeIn( 200 );\n\n\t\t\t\tth.addClass( 'with-tooltip' );\n\t\t\t} ).on( 'mouseleave', function () {\n\t\t\t\tconst th = $( this );\n\n\t\t\t\tth.find( '.yith-wcan-tooltip' ).fadeOut( 200, function () {\n\t\t\t\t\tth.removeClass( 'with-tooltip' )\n\t\t\t\t\t\t.find( '.yith-wcan-tooltip' )\n\t\t\t\t\t\t.remove();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tt.addClass( 'tooltip-added' );\n\t\t} );\n\t}\n\n\t// init dropdown\n\t_initDropdown( $filter ) {\n\t\tconst $dropdown = $filter.find( 'select.filter-dropdown' );\n\n\t\tif ( ! $dropdown.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t$dropdown.hasClass( 'select2-hidden-accessible' ) &&\n\t\t\t'undefined' !== typeof $.fn.selectWoo\n\t\t) {\n\t\t\t$dropdown.selectWoo( 'destroy' );\n\t\t}\n\n\t\tthis._initDropdownObject( $dropdown, {\n\t\t\tpaginate: true,\n\t\t\tperPage: yith_wcan_shortcodes.terms_per_page,\n\t\t} );\n\t}\n\n\t// init dropdown object\n\t_initDropdownObject( $dropdown, opts ) {\n\t\treturn new YITH_WCAN_Dropdown( $dropdown, opts );\n\t}\n\n\t// init price slider\n\t_initPriceSlider( $filter ) {\n\t\tif ( ! $filter.hasClass( 'filter-price-slider' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst self = this,\n\t\t\t$container = $filter.find( '.price-slider' ),\n\t\t\t$minInput = $container.find( '.price-slider-min' ),\n\t\t\t$maxInput = $container.find( '.price-slider-max' ),\n\t\t\tmin = parseFloat( $container.data( 'min' ) ),\n\t\t\tmax = parseFloat( $container.data( 'max' ) ),\n\t\t\tcurrentMin = parseFloat( $minInput.val() ),\n\t\t\tcurrentMax = parseFloat( $maxInput.val() ),\n\t\t\tstep = parseFloat( $container.data( 'step' ) ),\n\t\t\thandleSliderChange = function () {\n\t\t\t\tif ( self.sliderTimeout ) {\n\t\t\t\t\tclearTimeout( self.sliderTimeout );\n\t\t\t\t}\n\n\t\t\t\tself.sliderTimeout = setTimeout( () => {\n\t\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\t}, 200 );\n\t\t\t};\n\n\t\t$filter.find( '.price-slider-ui' ).ionRangeSlider( {\n\t\t\tskin: 'round',\n\t\t\ttype: 'double',\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tfrom: currentMin,\n\t\t\tto: currentMax,\n\t\t\tmin_interval: step,\n\t\t\tvalues_separator: ' - ',\n\t\t\tprettify: ( v ) => this.formatPrice( v ),\n\t\t\tonChange: ( data ) => {\n\t\t\t\t$minInput.val( data.from );\n\t\t\t\t$maxInput.val( data.to );\n\t\t\t},\n\t\t\tonFinish: handleSliderChange,\n\t\t} );\n\n\t\t$minInput\n\t\t\t.add( $maxInput )\n\t\t\t.off( 'change' )\n\t\t\t.on( 'keyup', () => {\n\t\t\t\tif ( ! $minInput.val() || ! $maxInput.val() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleSliderChange();\n\t\t\t} );\n\t}\n\n\t// init collapsable\n\t_initCollapsable( $filter ) {\n\t\tthis._initTitleCollapsable( $filter );\n\t\tthis._initHierarchyCollapsable( $filter );\n\t}\n\n\t// init toggle on click of the title\n\t_initTitleCollapsable( $filter ) {\n\t\tconst $title = $filter.find( '.collapsable' );\n\n\t\tif ( ! $title.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initToggle( $title, $title, $filter.find( '.filter-content' ) );\n\t}\n\n\t// init toggle on click of the parent li\n\t_initHierarchyCollapsable( $filter ) {\n\t\tconst $items = $filter.find( '.hierarchy-collapsable' );\n\n\t\tif ( ! $items.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// set parents of currently active term as open\n\t\tconst self = this,\n\t\t\tactive = $filter.find( '.active' );\n\n\t\tif ( active.length ) {\n\t\t\tactive\n\t\t\t\t.parents( '.hierarchy-collapsable' )\n\t\t\t\t.removeClass( 'closed' )\n\t\t\t\t.addClass( 'opened' );\n\n\t\t\tif (\n\t\t\t\tactive.hasClass( 'hierarchy-collapsable' ) &&\n\t\t\t\tyith_wcan_shortcodes.show_current_children\n\t\t\t) {\n\t\t\t\tactive.removeClass( 'closed' ).addClass( 'opened' );\n\t\t\t}\n\t\t}\n\n\t\t$items.each( function () {\n\t\t\tconst $t = $( this ),\n\t\t\t\t$toggle = $( '<span/>', {\n\t\t\t\t\tclass: 'toggle-handle',\n\t\t\t\t} );\n\n\t\t\t$toggle.appendTo( $t );\n\n\t\t\tself._initToggle( $toggle, $t, $t.children( 'ul.filter-items' ) );\n\t\t} );\n\t}\n\n\t// init toggle to generic toggle/target pair\n\t_initToggle( $toggle, $container, $target ) {\n\t\tif ( $container.hasClass( 'closed' ) ) {\n\t\t\t$target.hide();\n\t\t}\n\n\t\t$toggle.off( 'click' ).on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\n\t\t\t$target.slideToggle( 400, () => {\n\t\t\t\t$container.toggleClass( 'opened' ).toggleClass( 'closed' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// init custom input\n\t_initCustomInput( $filter ) {\n\t\t$filter.find( ':input' ).each( function () {\n\t\t\tlet input = $( this ),\n\t\t\t\ttype = input.attr( 'type' ),\n\t\t\t\tcontainerClass = `${ type }button`,\n\t\t\t\tcontainer;\n\n\t\t\tif ( 'checkbox' !== type && 'radio' !== type ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.closest( `.${ containerClass }` ).length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.is( ':checked' ) ) {\n\t\t\t\tcontainerClass += ' checked';\n\t\t\t}\n\n\t\t\tcontainer = $( '<span/>', {\n\t\t\t\tclass: containerClass,\n\t\t\t} );\n\n\t\t\tinput.wrap( container ).on( 'change', function () {\n\t\t\t\tconst t = $( this );\n\n\t\t\t\tt.prop( 'checked' )\n\t\t\t\t\t? t.parent().addClass( 'checked' )\n\t\t\t\t\t: t.parent().removeClass( 'checked' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// register initial status\n\t_regiterStatus() {\n\t\tthis.originalFilters = this.getFiltersProperties();\n\t}\n\n\t// trigger handling after layout change\n\t_afterLayoutChange() {\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset\n\t\t\t\t.addClass( 'filters-modal' )\n\t\t\t\t.attr( 'role', 'dialog' )\n\t\t\t\t.attr( 'tabindex', '-1' )\n\t\t\t\t.hide();\n\n\t\t\tthis._addCloseModalButton();\n\t\t\tthis._addApplyFiltersModalButton();\n\t\t\tthis._switchToCollapsables();\n\n\t\t\tthis.$filterButtons?.hide();\n\t\t} else {\n\t\t\tthis.$preset\n\t\t\t\t.removeClass( 'filters-modal' )\n\t\t\t\t.removeClass( 'open' )\n\t\t\t\t.removeAttr( 'role' )\n\t\t\t\t.removeAttr( 'tabindex' )\n\t\t\t\t.show();\n\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\n\t\t\tthis._removeCloseModalButton();\n\t\t\tthis._removeApplyFiltersModalButton();\n\t\t\tthis._switchBackCollapsables();\n\n\t\t\tthis.$filterButtons?.show();\n\t\t}\n\t}\n\n\t// add modal close button\n\t_addCloseModalButton() {\n\t\tconst $closeButton = $( '<a/>', {\n\t\t\tclass: 'close-button',\n\t\t\thtml: '×',\n\t\t\t'data-dismiss': 'modal',\n\t\t\t'aria-label': yith_wcan_shortcodes.labels.close,\n\t\t} );\n\n\t\t$closeButton\n\t\t\t.prependTo( this.$preset )\n\t\t\t.on( 'click', this.closeModal.bind( this ) );\n\t\tthis.modalElements.closeButton = $closeButton;\n\t}\n\n\t// remove modal close button\n\t_removeCloseModalButton() {\n\t\tthis.modalElements?.closeButton?.remove();\n\t}\n\n\t// show main filter button for the modal\n\t_addApplyFiltersModalButton() {\n\t\tconst $filterButton = $( '<button/>', {\n\t\t\tclass: 'apply-filters main-modal-button',\n\t\t\thtml: yith_wcan_shortcodes.labels.show_results,\n\t\t\t'data-dismiss': 'modal',\n\t\t} );\n\n\t\t$filterButton.appendTo( this.$preset ).on( 'click', () => {\n\t\t\tthis.filter();\n\t\t\tthis.closeModal();\n\t\t} );\n\t\tthis.modalElements.applyFiltersButton = $filterButton;\n\t}\n\n\t// hide main filter button for the modal\n\t_removeApplyFiltersModalButton() {\n\t\tthis.modalElements?.applyFiltersButton?.remove();\n\t}\n\n\t// convert all filters to collapsable\n\t_switchToCollapsables() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif ( ! $title.length || $title.hasClass( 'collapsable' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title.addClass( 'collapsable' ).data( 'disable-collapse', true );\n\n\t\t\tself._initTitleCollapsable( $filter );\n\t\t} );\n\t}\n\n\t// switch back filters to their previous collapsable state\n\t_switchBackCollapsables() {\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif (\n\t\t\t\t! $title.length ||\n\t\t\t\t! $title.hasClass( 'collapsable' ) ||\n\t\t\t\t! $title.data( 'disable-collapse' )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title\n\t\t\t\t.removeClass( 'collapsable' )\n\t\t\t\t.removeData( 'disable-collapse', true )\n\t\t\t\t.off( 'click' );\n\n\t\t\t$filter.find( '.filter-content' ).show();\n\t\t} );\n\t}\n\n\t// close all collpasable before showing modal\n\t_openAllCollapsables() {\n\t\tthis.$filters\n\t\t\t.not( '.no-title' )\n\t\t\t.not( ( i, v ) => {\n\t\t\t\treturn this.isFilterActive( $( v ) );\n\t\t\t} )\n\t\t\t.find( '.filter-content' )\n\t\t\t.show()\n\t\t\t.end()\n\t\t\t.find( '.filter-title' )\n\t\t\t.removeClass( 'closed' )\n\t\t\t.addClass( 'opened' );\n\t}\n\n\t// close all collpasable before showing modal\n\t_closeAllCollapsables() {\n\t\tthis.$filters\n\t\t\t.not( '.no-title' )\n\t\t\t.not( ( i, v ) => {\n\t\t\t\treturn this.isFilterActive( $( v ) );\n\t\t\t} )\n\t\t\t.find( '.filter-content' )\n\t\t\t.hide()\n\t\t\t.end()\n\t\t\t.find( '.filter-title' )\n\t\t\t.addClass( 'closed' )\n\t\t\t.removeClass( 'opened' );\n\t}\n\n\t// update status change flag, if filters have changed\n\tmaybeRegisterStatusChange() {\n\t\tconst currentFilters = this.getFiltersProperties(),\n\t\t\tcurrentStr = JSON.stringify( currentFilters ),\n\t\t\toriginalStr = JSON.stringify( this.originalFilters );\n\n\t\tthis.dirty = currentStr !== originalStr;\n\t}\n\n\t// apply filters when possible\n\tmaybeFilter( $initiator ) {\n\t\t// register status change\n\t\tthis.maybeRegisterStatusChange();\n\n\t\t// filter, or show filter button.\n\t\tif ( yith_wcan_shortcodes.instant_filters && ! this.isMobile ) {\n\t\t\tthis.filter();\n\t\t} else if (\n\t\t\t! yith_wcan_shortcodes.instant_filters &&\n\t\t\t! this.isMobile\n\t\t) {\n\t\t\tthis.dirty\n\t\t\t\t? this.$filterButtons?.show()\n\t\t\t\t: this.$filterButtons?.hide();\n\t\t} else if ( this.isMobile && this.dirty ) {\n\t\t\tthis.$preset.addClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.show();\n\t\t}\n\t}\n\n\t// main filtering method\n\tfilter() {\n\t\tconst filter = window?.product_filter;\n\n\t\tfilter\n\t\t\t?.doFilter( this.getFiltersProperties(), this.target, this.preset )\n\t\t\t?.done( () => {\n\t\t\t\tlet newPreset = $( this.preset );\n\n\t\t\t\tif (\n\t\t\t\t\t! this.isMobile &&\n\t\t\t\t\tnewPreset.length &&\n\t\t\t\t\tyith_wcan_shortcodes.scroll_top\n\t\t\t\t) {\n\t\t\t\t\tlet targetOffset = newPreset.offset().top;\n\n\t\t\t\t\tif ( !! yith_wcan_shortcodes.scroll_target ) {\n\t\t\t\t\t\tconst scrollTarget = $(\n\t\t\t\t\t\t\tyith_wcan_shortcodes.scroll_target\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttargetOffset = scrollTarget.length\n\t\t\t\t\t\t\t? scrollTarget.offset().top\n\t\t\t\t\t\t\t: targetOffset;\n\t\t\t\t\t}\n\t\t\t\t\t$( 'body, html' ).animate( {\n\t\t\t\t\t\tscrollTop: targetOffset - 100,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// register new filters, clear status flag\n\t\t\t\tthis.originalFilters = this.getFiltersProperties();\n\t\t\t\tthis.dirty = false;\n\t\t\t} );\n\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset.removeClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.hide();\n\t\t}\n\t}\n\n\t// get all filter nodes\n\tgetFilters() {\n\t\tif ( false === this.$filters ) {\n\t\t\tthis.$filters = this.$preset.find( '.yith-wcan-filter' );\n\t\t}\n\n\t\treturn this.$filters;\n\t}\n\n\t// retrieves all filters that we want to apply\n\tgetActiveFilters() {\n\t\tif ( false === this.activeFilters ) {\n\t\t\tthis.activeFilters = this.getFiltersProperties();\n\t\t}\n\n\t\treturn this.activeFilters;\n\t}\n\n\t// check whether there is any filter active\n\tisAnyFilterActive() {\n\t\treturn !! Object.keys( this.getActiveFilters() ).length;\n\t}\n\n\t// checks whether current filter is active\n\tisFilterActive( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tactive,\n\t\t\tfilteredActive;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tactive = 'object' === typeof val ? !! val?.length : !! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tactive = $filter.find( '.filter-item' ).filter( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst step = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'step' )\n\t\t\t\t\t),\n\t\t\t\t\tmin = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'min' )\n\t\t\t\t\t),\n\t\t\t\t\tmax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'max' )\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMin = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t\t);\n\n\t\t\t\tactive =\n\t\t\t\t\tMath.abs( currentMin - min ) >= step ||\n\t\t\t\t\tMath.abs( currentMax - max ) >= step;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tactive =\n\t\t\t\t\t'menu_order' !== $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tactive = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredActive = $filter.triggerHandler( 'yith_wcan_is_filter_active', [\n\t\t\tactive,\n\t\t\tthis,\n\t\t] );\n\t\tactive =\n\t\t\ttypeof filteredActive !== 'undefined' ? filteredActive : active;\n\n\t\treturn active;\n\t}\n\n\t// count the number of active items per filter\n\tcountActiveItems( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tcount;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tcount = 'object' === typeof val ? val?.length : +!! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tcount = $filter.find( '.filter-items' ).find( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tif ( this.isFilterActive( $filter ) ) {\n\t\t\t\t\tcount = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\tdefault:\n\t\t\t\tcount = 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t// retrieves filter properties for the filter\n\tgetFilterProperties( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tmultiple = 'yes' === $filter.data( 'multiple' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' ),\n\t\t\tproperties = {},\n\t\t\tfilteredProperties,\n\t\t\t$active;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tlet activeTerms = [],\n\t\t\t\t\ttaxonomy = $filter.data( 'taxonomy' ),\n\t\t\t\t\tisAttr = 0 === taxonomy.indexOf( 'filter' ),\n\t\t\t\t\trelation = $filter.data( 'relation' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tactiveTerms = $dropdown.val();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTerms.push( $dropdown.val() );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tactiveTerms = $active.get().reduce( function ( a, v ) {\n\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t: v.data( 'term-slug' );\n\n\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\treturn a;\n\t\t\t\t\t}, activeTerms );\n\t\t\t\t}\n\n\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.pop();\n\t\t\t\t} else {\n\t\t\t\t\tconst glue = ! isAttr && 'and' === relation ? '+' : ',';\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.join( glue );\n\t\t\t\t}\n\n\t\t\t\tif ( isAttr ) {\n\t\t\t\t\tproperties[\n\t\t\t\t\t\ttaxonomy.replace( 'filter_', 'query_type_' )\n\t\t\t\t\t] = relation;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tproperties.rating_filter = $dropdown.val();\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\t\t$active = $active.first();\n\t\t\t\t\t\tproperties.rating_filter = $active.is( 'label' )\n\t\t\t\t\t\t\t? $active.find( ':input' ).val()\n\t\t\t\t\t\t\t: $active.data( 'rating' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.rating_filter = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( function ( a, v ) {\n\t\t\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t\t\t: v.data( 'rating' );\n\n\t\t\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $dropdown.val().join( ',' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 0 ];\n\t\t\t\t\t\tproperties.max_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 1 ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\t\t\t\tlet min = $( v ).data( 'range-min' ),\n\t\t\t\t\t\t\t\t\tmax = $( v ).data( 'range-max' );\n\n\t\t\t\t\t\t\t\ta += ( max ? `${ min }-${ max }` : min ) + ',';\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, '' )\n\t\t\t\t\t\t\t.replace( /^(.*),$/, '$1' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-min' )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-max' )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t);\n\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( $filter.find( '.filter-on-sale' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.onsale_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-in-stock' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.instock_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-featured' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.featured_filter = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tproperties.orderby = $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredProperties = $filter.triggerHandler(\n\t\t\t'yith_wcan_filter_properties',\n\t\t\t[ properties, self ]\n\t\t);\n\t\tproperties =\n\t\t\ttypeof filteredProperties !== 'undefined'\n\t\t\t\t? filteredProperties\n\t\t\t\t: properties;\n\n\t\treturn properties;\n\t}\n\n\t// retrieves properties for all filters of the preset\n\tgetFiltersProperties() {\n\t\tlet properties = {};\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tconst filterProperties = self.getFilterProperties( $filter );\n\n\t\t\t\tproperties = self.mergeProperties(\n\t\t\t\t\tproperties,\n\t\t\t\t\tfilterProperties,\n\t\t\t\t\t$filter\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn properties;\n\t}\n\n\t// retrieve filters matching any of the properties passed\n\tgetFiltersByProperties( properties ) {\n\t\tconst self = this;\n\n\t\treturn this.getFilters().filter( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tlet filterProperties = self.getFilterProperties( $filter ),\n\t\t\t\t\thasProp = false;\n\n\t\t\t\tfor ( const prop in properties ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[ 'min_price', 'max_price', 'price_ranges' ].includes(\n\t\t\t\t\t\t\tprop\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t( filterProperties.min_price ||\n\t\t\t\t\t\t\tfilterProperties.price_ranges )\n\t\t\t\t\t) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if ( filterProperties[ prop ] ) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn hasProp;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t// show clear selection anchor\n\tmaybeToggleClearFilter( $filter ) {\n\t\tif ( ! this.isFilterActive( $filter ) ) {\n\t\t\tthis.maybeHideClearFilter( $filter );\n\t\t} else {\n\t\t\tthis.maybeShowClearFilter( $filter );\n\t\t}\n\t}\n\n\t// show clear all selections anchor\n\tmaybeToggleClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() ) {\n\t\t\tthis.maybeHideClearAllFilters();\n\t\t} else {\n\t\t\tthis.maybeShowClearAllFilters();\n\t\t}\n\t}\n\n\t// show clear selection anchor\n\tmaybeShowClearFilter( $filter ) {\n\t\tif (\n\t\t\t! this.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\t$filter.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_selection,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( $filter.find( '.filter-content' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateFilter(\n\t\t\t\t\t$filter,\n\t\t\t\t\tfalse,\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearFilter( $filter );\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeShowClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() || ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\tthis.$preset.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_all_selections,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( this.$preset.find( '.filters-container' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateAllFilters(\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearAllFilters();\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// hide clear selection anchor\n\tmaybeHideClearFilter( $filter ) {\n\t\tif (\n\t\t\tthis.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\t$filter.find( '.clear-selection' ).remove();\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeHideClearAllFilters() {\n\t\tif ( this.isAnyFilterActive() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\tthis.$preset\n\t\t\t.find( '.filters-container' )\n\t\t\t.children( '.clear-selection' )\n\t\t\t.remove();\n\t}\n\n\t// deactivate filter\n\tdeactivateFilter( $filter, properties, doFilter ) {\n\t\tconst filterType = $filter.data( 'filter-type' ),\n\t\t\t$items = $filter.find( '.filter-item' ),\n\t\t\t$activeItems = $items.filter( '.active' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' );\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tconst taxonomy = $filter.data( 'taxonomy' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t$option.val().toString() ===\n\t\t\t\t\t\t\t\tproperties[ taxonomy ].toString()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'term-slug' );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvalue.toString() ===\n\t\t\t\t\t\t\tproperties[ taxonomy ].toString()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif ( $option.val() === properties.rating_filter ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'rating' );\n\n\t\t\t\t\t\tif ( value === properties.rating_filter ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this ),\n\t\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t\t? `-${ properties.max_price }`\n\t\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\t\tif ( $option.val() === formattedRange ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tformattedRange,\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'min_price' ) +\n\t\t\t\t\t\t\t ( $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t? '-' + $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\tif ( properties.min_price ) {\n\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t? '-' + properties.max_price\n\t\t\t\t\t\t\t\t\t: '' );\n\t\t\t\t\t\t} else if ( properties.price_ranges ) {\n\t\t\t\t\t\t\tformattedRange = properties.price_ranges;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( value === formattedRange ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst $priceSlider = $filter.find( '.price-slider' );\n\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-min' )\n\t\t\t\t\t.val( $priceSlider.data( 'min' ) );\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-max' )\n\t\t\t\t\t.val( $priceSlider.data( 'max' ) )\n\t\t\t\t\t.change();\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\t$filter.find( 'select' ).val( 'menu_order' );\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\n\t\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\tif ( properties?.instock_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.onsale_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.featured_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate all filters\n\tdeactivateAllFilters( doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFilters();\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter );\n\t\t} );\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate filters that matches a specific set of properties\n\tdeactivateFilterByProperties( properties, doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFiltersByProperties( properties );\n\n\t\tif ( ! $filters.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter, properties, doFilter );\n\t\t} );\n\t}\n\n\t// open filters as a modal, when in mobile layout\n\topenModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( yith_wcan_shortcodes.toggles_open_on_modal ) {\n\t\t\tthis._openAllCollapsables();\n\t\t} else {\n\t\t\tthis._closeAllCollapsables();\n\t\t}\n\n\t\t$( 'body' )\n\t\t\t.css( 'overflow', 'hidden' )\n\t\t\t.addClass( 'yith-wcan-preset-modal-open' );\n\n\t\tthis.$preset.show();\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.addClass( 'open' );\n\t\t}, 100 );\n\t}\n\n\t// close filters modal, when in mobile layout\n\tcloseModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$preset.removeClass( 'open' );\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.hide();\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\t\t}, 300 );\n\t}\n\n\t// utility that formats the price according to store configuration.\n\tformatPrice( price ) {\n\t\tif ( 'undefined' !== typeof accounting ) {\n\t\t\tprice = accounting.formatMoney( price, {\n\t\t\t\tsymbol: yith_wcan_shortcodes.currency_format.symbol,\n\t\t\t\tdecimal: yith_wcan_shortcodes.currency_format.decimal,\n\t\t\t\tthousand: yith_wcan_shortcodes.currency_format.thousand,\n\t\t\t\tprecision: 0,\n\t\t\t\tformat: yith_wcan_shortcodes.currency_format.format,\n\t\t\t} );\n\t\t}\n\n\t\treturn price;\n\t}\n\n\t// utility that merges together sets of filter properties\n\tmergeProperties( set1, set2, $filter ) {\n\t\t// search for common properties\n\t\tfor ( const prop in set2 ) {\n\t\t\tif ( ! set2.hasOwnProperty( prop ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !! set1[ prop ] ) {\n\t\t\t\tswitch ( prop ) {\n\t\t\t\t\tcase 'rating_filter':\n\t\t\t\t\tcase 'min_price':\n\t\t\t\t\tcase 'max_price':\n\t\t\t\t\tcase 'onsale_filter':\n\t\t\t\t\tcase 'instock_filter':\n\t\t\t\t\tcase 'orderby':\n\t\t\t\t\t\t// just override default value\n\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif ( 0 === prop.indexOf( 'query_type_' ) ) {\n\t\t\t\t\t\t\t// query_type param\n\t\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// we're dealing with taxonomy\n\t\t\t\t\t\t\tconst isAttr = 0 === prop.indexOf( 'filter_' ),\n\t\t\t\t\t\t\t\tglue = isAttr ? ',' : '+';\n\n\t\t\t\t\t\t\tlet newValue =\n\t\t\t\t\t\t\t\tset1[ prop ].replace( ',', glue ) +\n\t\t\t\t\t\t\t\tglue +\n\t\t\t\t\t\t\t\tset2[ prop ].replace( ',', glue );\n\n\t\t\t\t\t\t\tnewValue = newValue\n\t\t\t\t\t\t\t\t.split( glue )\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t( value, index, arr ) =>\n\t\t\t\t\t\t\t\t\t\tarr.indexOf( value ) === index\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( glue );\n\n\t\t\t\t\t\t\tset1[ prop ] = newValue;\n\n\t\t\t\t\t\t\tif ( isAttr ) {\n\t\t\t\t\t\t\t\tconst queryTypeParam = prop.replace(\n\t\t\t\t\t\t\t\t\t'filter_',\n\t\t\t\t\t\t\t\t\t'query_type_'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tset1[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t\tset2[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdelete set2[ prop ];\n\t\t\t}\n\t\t}\n\n\t\t$.extend( set1, set2 );\n\n\t\treturn set1;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport YITH_WCAN_Filter from './modules/yith-wcan-filter';\nimport YITH_WCAN_Reset_Button from './modules/yith-wcan-reset-button';\nimport YITH_WCAN_Preset from './modules/yith-wcan-preset';\n\njQuery( function ( $ ) {\n\t$( document )\n\t\t.on(\n\t\t\t'yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode',\n\t\t\tfunction () {\n\t\t\t\t$( '.yith-wcan-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Preset( $( this ) );\n\t\t\t\t\t} );\n\n\t\t\t\t$( '.yith-wcan-reset-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Reset_Button( $( this ) );\n\t\t\t\t\t} );\n\t\t\t}\n\t\t)\n\t\t.trigger( 'yith_wcan_init_shortcodes' );\n\n\tglobalThis.product_filter = new YITH_WCAN_Filter();\n} );\n"],"sourceRoot":""}
|
@@ -1 +1 @@
|
|
1 |
-
(()=>{"use strict";var e=jQuery;function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var n=function(){function n(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),a(this,"xhr",null),a(this,"doingAjax",!1),a(this,"originalSearch",location.search),a(this,"initialized",!1);var t=e("head").html(),i=document.title,r=this.searchAlternativeUrl(t);r&&!this.doingAjax&&!this.initialized&&!yith_wcan_shortcodes.ajax_filters&&this.pushUrlToHistory(r,i),this.initialized=!0}var r,l,s;return r=n,(l=[{key:"doFilter",value:function(t,i,a){var n,r,l=this,s=e(i||"body");if((r=e(document).triggerHandler("yith_wcan_filters_parameters",[t]))&&(t=r),s&&this.block(s),n=this.buildUrl(t),yith_wcan_shortcodes.ajax_filters)return this.doingAjax=!0,this._doAjax(n).done((function(e){n=l.searchAlternativeUrl(e,n),l._beforeFilter(e,t),l.refreshFragments(i,a,e),l.pushUrlToHistory(n,e.pageTitle),s&&l.unblock(s),l._afterFilter(e,t),l.doingAjax=!1}));window.location=n}},{key:"_beforeFilter",value:function(t,i){e(document).trigger("yith-wcan-ajax-loading",[t,i])}},{key:"_afterFilter",value:function(t,i){e(".woocommerce-ordering").on("change","select.orderby",(function(){e(this).closest("form").submit()})),e(window).trigger("scroll"),e(document).trigger("yith-wcan-ajax-filtered",[t,i]).trigger("yith_wcwl_reload_fragments")}},{key:"buildUrl",value:function(i){var a,n=this,r=yith_wcan_shortcodes.query_param,l={},s=window.location,o=yith_wcan_shortcodes.base_url?yith_wcan_shortcodes.base_url:(null==s?void 0:s.origin)+(null==s?void 0:s.pathname),c=this,h="object"===t(i)&&Object.keys(i).length;if(yith_wcan_shortcodes.session_param&&(o=o.replace(new RegExp("/"+yith_wcan_shortcodes.session_param+"/[^/]*/"),"")),h&&(l[r]=1),this.originalSearch){var d=this.originalSearch.replace("?","").split("&").reduce((function(e,t){var i=t.split("=");if(2===i.length){if(n.isFilterParam(i[0]))return e;e[i[0]]=i[1]}return e}),{});l=e.extend(l,d)}return h&&(l=e.extend(l,i)),(a=Object.keys(l).reduce((function(e,t){var i=l[t];return i&&t?e+=c._cleanParam(t)+"="+c._cleanParam(i)+"&":e}),"?").replace(/&$/g,"").replace(/%2B/g,"+").replace(/%2C/g,",")).length>1&&(o+=a),o}},{key:"searchAlternativeUrl",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=i;return-1===e.indexOf("yith_wcan:sharing_url")?a:a=(t=e.match(/<meta name="yith_wcan:sharing_url" content="([^"]*)">/))&&1 in t?t[1]:a}},{key:"pushUrlToHistory",value:function(e,t){yith_wcan_shortcodes.change_browser_url&&!navigator.userAgent.match(/msie/i)&&window.history.pushState({pageTitle:t},"",e)}},{key:"refreshFragments",value:function(t,i,a){var n=document.createElement("html"),r=e(n);if(n.innerHTML=a,t){var l,s=e(i),o=e(t);s.length&&(l=r.find(i)).length&&s.replaceWith(l.first()),o.length&&(l=r.find(t)).length&&o.replaceWith(l.first())}else{var c=e(yith_wcan_shortcodes.content);c.length?c.replaceWith(r.find(yith_wcan_shortcodes.content)):e("body").replaceWith(r.find("body"))}e(document).trigger("yith_wcan_init_shortcodes")}},{key:"_cleanParam",value:function(e){var t,i;return null===(t=yith_wcan_shortcodes)||void 0===t||!t.process_sanitize||null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.skip_sanitize?e:encodeURIComponent(e)}},{key:"_doAjax",value:function(t,i){return this.xhr&&this.xhr.abort(),i=e.extend({url:t},i),this.xhr=e.ajax(i),this.xhr}},{key:"block",value:function(t){var i;if(void 0!==e.fn.block){var a="#fff center center no-repeat";null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.loader&&(a="url('".concat(yith_wcan_shortcodes.loader,"') ").concat(a)),t.block({message:null,overlayCSS:{background:a,opacity:.7}})}}},{key:"unblock",value:function(t){void 0!==e.fn.unblock&&t.unblock()}},{key:"isFilterParam",value:function(e){return-1!==["rating_filter","min_price","max_price","price_ranges","onsale_filter","instock_filter","featured_filter","orderby","product-page",yith_wcan_shortcodes.query_param].concat(yith_wcan_shortcodes.supported_taxonomies.map((function(e){return e.replace("pa_","filter_")}))).indexOf(e)||-1!==e.indexOf("filter_")||-1!==e.indexOf("query_type_")}}])&&i(r.prototype,l),s&&i(r,s),n}();var r=function t(i){var a,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=null,(n="$reset")in(a=this)?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,this.$reset=i,this.$reset.on("click",(function(t){t.preventDefault(),e(".yith-wcan-filters").each((function(){var t=e(this).data("preset");t.deactivateAllFilters(!0),t.closeModal()}))})),this.$reset.data("reset",this).addClass("enhanced")};function l(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var a=0,n=function(){};return{s:n,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,l=!0,o=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return l=e.done,e},e:function(e){o=!0,r=e},f:function(){try{l||null==i.return||i.return()}finally{if(o)throw r}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,a=new Array(t);i<t;i++)a[i]=e[i];return a}function o(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var h=function(){function t(i,a){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,"$originalSelect",null),c(this,"$_main",null),c(this,"$_label",null),c(this,"$_dropdown",null),c(this,"$_search",null),c(this,"$_showMore",null),c(this,"$_items",null),c(this,"currentPage",1),c(this,"options",{}),this.$originalSelect=i,this.$originalSelect.is("select")){var n=this.$originalSelect.data("per_page"),r=this.$originalSelect.data("order"),l=this.$originalSelect.data("all-label"),s={showSearch:this.$originalSelect.data("show_search"),paginate:this.$originalSelect.data("paginate"),perPage:n||10,order:r||"ASC",getElements:null,labels:{emptyLabel:l||yith_wcan_shortcodes.labels.empty_option,searchPlaceholder:yith_wcan_shortcodes.labels.search_placeholder,noItemsFound:yith_wcan_shortcodes.labels.no_items,showMore:yith_wcan_shortcodes.labels.show_more}};this.options=e.extend(s,a),this._hideSelect(),this._initTemplate(),this._initActions(),this.$originalSelect.data("dropdown",this).addClass("enhanced")}}var i,a,n;return i=t,(a=[{key:"_hideSelect",value:function(){this.$originalSelect.hide()}},{key:"_initTemplate",value:function(){var t=e("<div/>",{class:"yith-wcan-dropdown closed"}),i=e("<div/>",{class:"dropdown-label",html:this.getLabel()}),a=e("<div>",{class:"dropdown-wrapper"}),n=e("<ul/>",{class:"matching-items filter-items"});a.append(n),t.append(i).append(a),this.options.showSearch&&this._initSearchTemplate(a),this.options.paginate&&this._initShowMoreTemplate(a),this.$originalSelect.after(t),this.$_main=t,this.$_label=i,this.$_dropdown=a,this.$_items=n}},{key:"_initSearchTemplate",value:function(t){var i=e("<div/>",{class:"search-field-container"}),a=e("<input/>",{name:"s",class:"search-field",type:"search",placeholder:this.options.labels.searchPlaceholder});i.append(a).prependTo(t),this.$_search=a}},{key:"_initShowMoreTemplate",value:function(t){var i=e("<a/>",{class:"show-more",text:this.options.labels.showMore.replace("%d",this.options.perPage)});i.on("click",this.loadNextPage.bind(this)).hide(),t.append(i),this.$_showMore=i}},{key:"_initActions",value:function(){var t,i,a=this;null===(t=this.$_main)||void 0===t||t.on("click",(function(e){e.stopPropagation(),a.toggleDropdown()})),this.$_dropdown.on("click",(function(e){e.stopPropagation()})),null===(i=this.$_search)||void 0===i||i.on("keyup search",(function(){a._populateItems()})),this.$_items.on("change",":input",(function(){var t,i=e(this).closest("li"),n=i.data("value");if(i.hasClass("disabled")&&!a.isValueSelected(n))return!1;i.toggleClass("active"),t=i.hasClass("active"),a._changeItemStatus(n,t)})),this.$_items.on("click","li:not(.checkbox) a",(function(t){var i,n=e(this).closest("li"),r=n.data("value");if(t.preventDefault(),n.hasClass("disabled")&&!a.isValueSelected(r))return!1;n.toggleClass("active"),(i=n.hasClass("active"))&&n.siblings().removeClass("active"),a._changeItemStatus(r,i)})),this.$_items.on("click","label > a",(function(t){var i=e(this).parent().find(":input");t.preventDefault(),(i.is('[type="radio"]')||i.is('[type="checkbox"]'))&&i.prop("checked",!i.prop("checked")),i.change()})),this.$originalSelect.on("change",(function(t,i){i||(a.$_items.find("li").each((function(){var t=e(this).data("value");a.isValueSelected(t)?a._selectItem(t):a._deselectItem(t)})),a.updateLabel())})),e(document).on("click",this.closeDropdown.bind(this))}},{key:"openDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.addClass("open").removeClass("closed"),this._afterDropdownOpen()}},{key:"closeDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.removeClass("open").addClass("closed")}},{key:"_closeOtherDropdowns",value:function(){var t=this;e(document).find("select.enhanced").filter((function(i,a){var n=e(a);return!!n.data("dropdown")&&!n.is(t.$originalSelect)})).each((function(){e(this).data("dropdown").closeDropdown()}))}},{key:"toggleDropdown",value:function(){var e,t;null===(e=this.$_main)||void 0===e||e.toggleClass("open").toggleClass("closed"),null!==(t=this.$_main)&&void 0!==t&&t.hasClass("open")&&this._afterDropdownOpen()}},{key:"_afterDropdownOpen",value:function(){var e;this._closeOtherDropdowns(),null!==(e=this.$_search)&&void 0!==e&&e.length&&this.$_search.val(""),this._populateItems()}},{key:"getMatchingElements",value:function(t,i){var a=this,n=[],r=this.getOptions();return new Promise((function(l){r.each((function(){var i=e(this),a=i.val(),r=i.html(),l=new RegExp(".*"+t+".*","i");(!t||l.test(a)||l.test(r))&&n.push({value:a,label:r})})),a.options.getElements?a.options.getElements(t).then((function(t){t&&(t=t.reduce((function(e,t,i){return e.push({label:i,value:t}),e}),[]),n=e.extend(n,t)),l(a._formatItems(n,i))})):l(a._formatItems(n,i))}))}},{key:"_formatItems",value:function(e,t){var i=this,a=[],n=!1;return e.filter((function(e){return-1===a.indexOf(e.value)&&(a.push(e.value),!0)})).sort((function(e,t){var a="ASC"===i.options.order?1:-1;return e.value<t.value?-1*a:e.value>t.value?a:0})),t&&(n=t<Object.keys(e).length,e=e.slice(0,t)),{items:e,hasMore:n}}},{key:"_generateItem",value:function(t,i){var a,n=this.isValueSelected(t),r=this.getOptionByValue(t),l=e("<li/>",{"data-value":t,class:r.length?r.attr("class"):""});if(r.length){var s=r.data("template"),o=r.data("count");i=s||i,o&&(i+=o)}if(a=e("<a/>",{href:r.length?r.data("filter_url"):"#",html:i,"data-title":r.length?r.data("title"):""}),this.$originalSelect.prop("multiple")){var c=e("<input/>",{type:"checkbox",value:t}),h=e("<label>");c.prop("checked",n),h.prepend(c).append(a),l.append(h).addClass("checkbox")}else l.append(a);return n?l.addClass("active"):l.removeClass("active"),l}},{key:"_populateItems",value:function(t){var i,a,n=this,r=null!==(i=this.$_search)&&void 0!==i&&i.length?this.$_search.val():"",s=this.options.paginate?this.options.perPage:0;a=(t=t?parseInt(t):1)*s,this.getMatchingElements(r,a).then((function(i){var a=i.items,r=[],s=!1;if(n._emptyItems(),n._hideLoadMore(),a.length){var o,c=l(a);try{for(c.s();!(o=c.n()).done;){var h=o.value;""===h.value?r.unshift(n._generateItem(h.value,h.label)):r.push(n._generateItem(h.value,h.label))}}catch(e){c.e(e)}finally{c.f()}n.currentPage=t,s=i.hasMore}else r.push(e("<li/>",{text:n.options.labels.noItemsFound})),n.currentPage=1;n.$_items.append(r),e(document).trigger("yith_wcan_dropdown_updated"),s&&n._showLoadMore()}))}},{key:"loadNextPage",value:function(){var e=this.currentPage+1;this._populateItems(e)}},{key:"_selectItem",value:function(e){return this._changeItemStatus(e,!0)}},{key:"_deselectItem",value:function(e){return this._changeItemStatus(e,!1)}},{key:"_changeItemStatus",value:function(e,t){var i=this.$originalSelect.find('option[value="'.concat(e,'"]'));return!!i.length&&(i.prop("selected",t),this.closeDropdown(),this.updateLabel(),this.$originalSelect.trigger("change",[!0]),!0)}},{key:"_emptyItems",value:function(){this.$_items.html("")}},{key:"_showLoadMore",value:function(){this.$_showMore.show()}},{key:"_hideLoadMore",value:function(){this.$_showMore.hide()}},{key:"getLabel",value:function(){return this.hasSelectedValues()?this.getSelectedLabels().join(", "):this.options.labels.emptyLabel}},{key:"updateLabel",value:function(){var e,t=this.getLabel();null===(e=this.$_label)||void 0===e||e.html(t)}},{key:"getOptions",value:function(){return this.$originalSelect.find("option")}},{key:"hasSelectedValues",value:function(){return this.getSelectedOptions().length}},{key:"isValueSelected",value:function(e){return-1!==this.getSelectedValues().indexOf(e.toString())}},{key:"getSelectedOptions",value:function(){return this.$originalSelect.find("option").filter(":selected")}},{key:"getOptionByValue",value:function(e){return this.$originalSelect.find('option[value="'.concat(e,'"]'))}},{key:"getSelectedLabels",value:function(){var t=[];return this.getSelectedOptions().each((function(){var i=e(this),a=i.data("template");a=a||i.html().replace(/\([0-9]*\)/,""),t.push(a)})),t}},{key:"getSelectedValues",value:function(){var t=[];return this.getSelectedOptions().each((function(){t.push(e(this).val())})),t}},{key:"destroy",value:function(){}}])&&o(i.prototype,a),n&&o(i,n),t}();function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var p=function(){function t(i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,"preset",!1),f(this,"$preset",!1),f(this,"target",!1),f(this,"$target",!1),f(this,"$filters",!1),f(this,"$filterButtons",!1),f(this,"modalElements",{}),f(this,"activeFilters",!1),f(this,"isMobile",!1),f(this,"sliderTimeout",!1),f(this,"originalFilters",null),f(this,"dirty",!1),this.preset="#"+i.attr("id"),this.$preset=i,this.target=this.$preset.data("target"),this.$target=!!this.target&&e(this.target),this._regiterStatus(),this._initFilterButton(),this._initResponsive(),this._initFilters(),this._initActions(),this.$preset.data("preset",this).addClass("enhanced").trigger("yith_wcan_preset_initialized",[this])}var i,a,n;return i=t,(a=[{key:"_initFilters",value:function(){var t=this;this.getFilters().each((function(){var i=e(this);t._initFilter(i)})),this.maybeShowClearAllFilters()}},{key:"_initFilterButton",value:function(){var e=this;this.$filterButtons=this.$preset.find(".apply-filters"),this.$filterButtons.length&&this.$filterButtons.on("click",(function(t){t.preventDefault(),e.filter()})).hide()}},{key:"_initActions",value:function(){this.$preset.find("form").on("submit",(function(e){e.preventDefault()}))}},{key:"_initResponsive",value:function(){var t=this;if(yith_wcan_shortcodes.modal_on_mobile){var i=window.matchMedia("(max-width: ".concat(yith_wcan_shortcodes.mobile_media_query,"px)"));e(window).on("resize",(function(){var e=!!i.matches;e!==t.isMobile&&(t.isMobile=e,t._afterLayoutChange())})).resize()}}},{key:"_initFilter",value:function(t){var i,a=this,n=function(i){var n=e(this),r=n.closest(".yith-wcan-filter"),l=!!r.length&&"yes"===r.data("multiple"),s=n.closest(".filter-item"),o=s.length?r.find(".filter-item").not(s):[];if(s.is(".disabled")&&!s.is(".active"))return i.preventDefault(),!1;i.preventDefault(),o.length&&!l&&o.removeClass("active").children("label").find(":input").prop("checked",!1).parent(".checked").removeClass("checked"),s.length&&s.toggleClass("active"),a.activeFilters=!1,a.maybeFilter(t),a.maybeToggleClearAllFilters(),a.maybeToggleClearFilter(r)};t.find(".filter-item").not(".checkbox").not(".radio").on("click","a",(function(t){var i=e(this).closest(".filter-item");if(!e(null==t?void 0:t.delegateTarget).is(i))return!1;n.call(this,t)})),t.find(":input").on("change",(function(t){var i=e(this),a=i.closest(".filter-item");if(a.is(".disabled")&&!a.is(".active"))return i.prop("checked",!1),!1;n.call(this,t)})),t.find("label > a").on("click",(function(t){var i=e(this),a=i.closest(".filter-item");if(t.preventDefault(),a.is(".disabled")&&!a.is(".active"))return!1;var n=i.parent().find(":input");(n.is('[type="radio"]')||n.is('[type="checkbox"]'))&&n.prop("checked",!n.prop("checked")),n.change()})),this._initTooltip(t),this._initPriceSlider(t),this._initDropdown(t),this._initCollapsable(t),this.maybeShowClearFilter(t),null!==(i=this.$preset)&&void 0!==i&&i.hasClass("custom-style")&&this._initCustomInput(t)}},{key:"_initTooltip",value:function(t,i){t.find("[data-title]").each((function(){var t=e(this);!t.hasClass("tooltip-added")&&t.data("title")&&(t.on("mouseenter",(function(){var t,a=e(this),n=null,r=a.outerWidth(),l=0;if(!i||"top"!==i&&"right"!==i){var s=a.closest(".filter-item");i=s.hasClass("color")||s.hasClass("label")?"top":"right"}n=e("<span>",{class:"yith-wcan-tooltip",html:a.data("title")}),a.append(n),t=n.outerWidth()+6,n.outerWidth(t),l="top"===i?(r-t)/2:r+15,n.css({left:l.toFixed(0)+"px"}).fadeIn(200),a.addClass("with-tooltip")})).on("mouseleave",(function(){var t=e(this);t.find(".yith-wcan-tooltip").fadeOut(200,(function(){t.removeClass("with-tooltip").find(".yith-wcan-tooltip").remove()}))})),t.addClass("tooltip-added"))}))}},{key:"_initDropdown",value:function(t){var i=t.find("select.filter-dropdown");i.length&&(i.hasClass("select2-hidden-accessible")&&void 0!==e.fn.selectWoo&&i.selectWoo("destroy"),this._initDropdownObject(i,{paginate:!0,perPage:yith_wcan_shortcodes.terms_per_page}))}},{key:"_initDropdownObject",value:function(e,t){return new h(e,t)}},{key:"_initPriceSlider",value:function(e){var t=this;if(e.hasClass("filter-price-slider")){var i=this,a=e.find(".price-slider"),n=a.find(".price-slider-min"),r=a.find(".price-slider-max"),l=parseFloat(a.data("min")),s=parseFloat(a.data("max")),o=parseFloat(n.val()),c=parseFloat(r.val()),h=parseFloat(a.data("step")),d=function(){i.sliderTimeout&&clearTimeout(i.sliderTimeout),i.sliderTimeout=setTimeout((function(){i.maybeFilter(e)}),200)};e.find(".price-slider-ui").ionRangeSlider({skin:"round",type:"double",min:l,max:s,step:h,from:o,to:c,min_interval:h,values_separator:" - ",prettify:function(e){return t.formatPrice(e)},onChange:function(e){n.val(e.from),r.val(e.to)},onFinish:d}),n.add(r).off("change").on("keyup",(function(){n.val()&&r.val()&&d()}))}}},{key:"_initCollapsable",value:function(e){this._initTitleCollapsable(e),this._initHierarchyCollapsable(e)}},{key:"_initTitleCollapsable",value:function(e){var t=e.find(".collapsable");t.length&&this._initToggle(t,t,e.find(".filter-content"))}},{key:"_initHierarchyCollapsable",value:function(t){var i=t.find(".hierarchy-collapsable");if(i.length){var a=this,n=t.find(".active");n.length&&(n.parents(".hierarchy-collapsable").removeClass("closed").addClass("opened"),n.hasClass("hierarchy-collapsable")&&yith_wcan_shortcodes.show_current_children&&n.removeClass("closed").addClass("opened")),i.each((function(){var t=e(this),i=e("<span/>",{class:"toggle-handle"});i.appendTo(t),a._initToggle(i,t,t.children("ul.filter-items"))}))}}},{key:"_initToggle",value:function(e,t,i){t.hasClass("closed")&&i.hide(),e.off("click").on("click",(function(e){e.stopPropagation(),i.slideToggle(400,(function(){t.toggleClass("opened").toggleClass("closed")}))}))}},{key:"_initCustomInput",value:function(t){t.find(":input").each((function(){var t,i=e(this),a=i.attr("type"),n="".concat(a,"button");"checkbox"!==a&&"radio"!==a||i.closest(".".concat(n)).length||(i.is(":checked")&&(n+=" checked"),t=e("<span/>",{class:n}),i.wrap(t).on("change",(function(){var t=e(this);t.prop("checked")?t.parent().addClass("checked"):t.parent().removeClass("checked")})))}))}},{key:"_regiterStatus",value:function(){this.originalFilters=this.getFiltersProperties()}},{key:"_afterLayoutChange",value:function(){var t,i;this.isMobile?(this.$preset.addClass("filters-modal").attr("role","dialog").attr("tabindex","-1").hide(),this._addCloseModalButton(),this._addApplyFiltersModalButton(),this._switchToCollapsables(),null===(t=this.$filterButtons)||void 0===t||t.hide()):(this.$preset.removeClass("filters-modal").removeClass("open").removeAttr("role").removeAttr("tabindex").show(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open"),this._removeCloseModalButton(),this._removeApplyFiltersModalButton(),this._switchBackCollapsables(),null===(i=this.$filterButtons)||void 0===i||i.show())}},{key:"_addCloseModalButton",value:function(){var t=e("<a/>",{class:"close-button",html:"×","data-dismiss":"modal","aria-label":yith_wcan_shortcodes.labels.close});t.prependTo(this.$preset).on("click",this.closeModal.bind(this)),this.modalElements.closeButton=t}},{key:"_removeCloseModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.closeButton)||void 0===t||t.remove()}},{key:"_addApplyFiltersModalButton",value:function(){var t=this,i=e("<button/>",{class:"apply-filters main-modal-button",html:yith_wcan_shortcodes.labels.show_results,"data-dismiss":"modal"});i.appendTo(this.$preset).on("click",(function(){t.filter(),t.closeModal()})),this.modalElements.applyFiltersButton=i}},{key:"_removeApplyFiltersModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.applyFiltersButton)||void 0===t||t.remove()}},{key:"_switchToCollapsables",value:function(){var t=this;this.getFilters().each((function(){var i=e(this),a=i.find(".filter-title");a.length&&!a.hasClass("collapsable")&&(a.addClass("collapsable").data("disable-collapse",!0),t._initTitleCollapsable(i))}))}},{key:"_switchBackCollapsables",value:function(){this.getFilters().each((function(){var t=e(this),i=t.find(".filter-title");i.length&&i.hasClass("collapsable")&&i.data("disable-collapse")&&(i.removeClass("collapsable").removeData("disable-collapse",!0).off("click"),t.find(".filter-content").show())}))}},{key:"_closeAllCollapsables",value:function(){var t=this;this.$filters.not(".no-title").not((function(i,a){return t.isFilterActive(e(a))})).find(".filter-content").hide().end().find(".filter-title").addClass("closed").removeClass("opened")}},{key:"maybeRegisterStatusChange",value:function(){var e=this.getFiltersProperties(),t=JSON.stringify(e),i=JSON.stringify(this.originalFilters);this.dirty=t!==i}},{key:"maybeFilter",value:function(e){if(this.maybeRegisterStatusChange(),yith_wcan_shortcodes.instant_filters&&!this.isMobile)this.filter();else if(yith_wcan_shortcodes.instant_filters||this.isMobile){if(this.isMobile&&this.dirty){var t;this.$preset.addClass("with-filter-button"),null===(t=this.modalElements.applyFiltersButton)||void 0===t||t.show()}}else{var i,a;this.dirty?null===(i=this.$filterButtons)||void 0===i||i.show():null===(a=this.$filterButtons)||void 0===a||a.hide()}}},{key:"filter",value:function(){var t,i,a,n=this,r=null===(t=window)||void 0===t?void 0:t.product_filter;null==r||null===(i=r.doFilter(this.getFiltersProperties(),this.target,this.preset))||void 0===i||i.done((function(){var t=e(n.preset);if(!n.isMobile&&t.length&&yith_wcan_shortcodes.scroll_top){var i=t.offset().top;if(yith_wcan_shortcodes.scroll_target){var a=e(yith_wcan_shortcodes.scroll_target);i=a.length?a.offset().top:i}e("body, html").animate({scrollTop:i-100})}n.originalFilters=n.getFiltersProperties(),n.dirty=!1})),this.isMobile&&(this.$preset.removeClass("with-filter-button"),null===(a=this.modalElements.applyFiltersButton)||void 0===a||a.hide())}},{key:"getFilters",value:function(){return!1===this.$filters&&(this.$filters=this.$preset.find(".yith-wcan-filter")),this.$filters}},{key:"getActiveFilters",value:function(){return!1===this.activeFilters&&(this.activeFilters=this.getFiltersProperties()),this.activeFilters}},{key:"isAnyFilterActive",value:function(){return!!Object.keys(this.getActiveFilters()).length}},{key:"isFilterActive",value:function(e){var t,i;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var a=e.find(".filter-dropdown");if(a.length){var n=a.val();t="object"===d(n)?!(null==n||!n.length):!!n;break}case"stock_sale":t=e.find(".filter-item").filter(".active").length;break;case"price_slider":var r=parseFloat(e.find(".price-slider").data("min")),l=parseFloat(e.find(".price-slider").data("max")),s=parseFloat(e.find(".price-slider-min").val()),o=parseFloat(e.find(".price-slider-max").val());t=s>r||o<l;break;case"orderby":t="menu_order"!==e.find(".filter-order-by").val();break;default:t=!1}return t=void 0!==(i=e.triggerHandler("yith_wcan_is_filter_active",[t,this]))?i:t}},{key:"countActiveItems",value:function(e){var t;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var i=e.find(".filter-dropdown");if(i.length){var a=i.val();t="object"===d(a)?null==a?void 0:a.length:+!!a;break}case"stock_sale":t=e.find(".filter-items").find(".active").length;break;case"orderby":this.isFilterActive(e)&&(t=1);break;case"price_slider":default:t=0}return t}},{key:"getFilterProperties",value:function(t){var i,a,n=t.data("filter-type"),r="yes"===t.data("multiple"),l=t.find(".filter-dropdown"),s={};switch(n){case"tax":var o=[],c=t.data("taxonomy"),h=0===c.indexOf("filter"),d=t.data("relation");if(l.length?r?o=l.val():o.push(l.val()):o=(a=t.find(".filter-item").filter(".active").children("a, label")).get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("term-slug"))?(t.push(a),t):t}),o),r){var u=h||"and"!==d?",":"+";s[c]=o.join(u)}else s[c]=o.pop();h&&(s[c.replace("filter_","query_type_")]=d);break;case"review":l.length?s.rating_filter=l.val():(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.rating_filter=a.get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("rating"))?(t.push(a),t):t}),[]).join(","):(a=a.first(),s.rating_filter=a.is("label")?a.find(":input").val():a.data("rating")));break;case"price_range":l.length?r?s.price_ranges=l.val().join(","):(s.min_price=l.val().split("-")[0],s.max_price=l.val().split("-")[1]):(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.price_ranges=a.get().reduce((function(t,i){var a=e(i).data("range-min"),n=e(i).data("range-max");return t+=(n?"".concat(a,"-").concat(n):a)+","}),"").replace(/^(.*),$/,"$1"):(s.min_price=parseFloat(a.first().data("range-min")),s.max_price=parseFloat(a.first().data("range-max"))));break;case"price_slider":s.min_price=parseFloat(t.find(".price-slider-min").val()),s.max_price=parseFloat(t.find(".price-slider-max").val());break;case"stock_sale":t.find(".filter-on-sale").is(".active")&&(s.onsale_filter=1),t.find(".filter-in-stock").is(".active")&&(s.instock_filter=1),t.find(".filter-featured").is(".active")&&(s.featured_filter=1);break;case"orderby":s.orderby=t.find(".filter-order-by").val()}return s=void 0!==(i=t.triggerHandler("yith_wcan_filter_properties",[s,self]))?i:s}},{key:"getFiltersProperties",value:function(){var t={},i=this;return this.getFilters().each((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a);t=i.mergeProperties(t,n,a)}})),t}},{key:"getFiltersByProperties",value:function(t){var i=this;return this.getFilters().filter((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a),r=!1;for(var l in t){if(["min_price","max_price","price_ranges"].includes(l)&&(n.min_price||n.price_ranges)){r=!0;break}if(n[l]){r=!0;break}}return r}return!1}))}},{key:"maybeToggleClearFilter",value:function(e){this.isFilterActive(e)?this.maybeShowClearFilter(e):this.maybeHideClearFilter(e)}},{key:"maybeToggleClearAllFilters",value:function(){this.isAnyFilterActive()?this.maybeShowClearAllFilters():this.maybeHideClearAllFilters()}},{key:"maybeShowClearFilter",value:function(t){var i=this;this.isFilterActive(t)&&yith_wcan_shortcodes.show_clear_filter&&(t.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_selection,role:"button"}).prependTo(t.find(".filter-content")).on("click",(function(e){e.preventDefault(),i.deactivateFilter(t,!1,yith_wcan_shortcodes.instant_filters),i.maybeHideClearFilter(t),yith_wcan_shortcodes.instant_filters&&i.closeModal()})))}},{key:"maybeShowClearAllFilters",value:function(){var t=this;this.isAnyFilterActive()&&this.isMobile&&(this.$preset.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_all_selections,role:"button"}).prependTo(this.$preset.find(".filters-container")).on("click",(function(e){e.preventDefault(),t.deactivateAllFilters(yith_wcan_shortcodes.instant_filters),t.maybeHideClearAllFilters(),yith_wcan_shortcodes.instant_filters&&t.closeModal()})))}},{key:"maybeHideClearFilter",value:function(e){!this.isFilterActive(e)&&yith_wcan_shortcodes.show_clear_filter&&e.find(".clear-selection").remove()}},{key:"maybeHideClearAllFilters",value:function(){this.isAnyFilterActive()||this.$preset.find(".filters-container").children(".clear-selection").remove()}},{key:"deactivateFilter",value:function(t,i,a){var n=t.data("filter-type"),r=t.find(".filter-item"),l=r.filter(".active"),s=t.find(".filter-dropdown");switch(n){case"tax":var o=t.data("taxonomy");s.length?(i?s.find("option").each((function(){var t=e(this);t.val()===i[o]&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("term-slug"))===i[o]&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"review":s.length?(i?s.find("option").each((function(){var t=e(this);t.val()===i.rating_filter&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("rating"))===i.rating_filter&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_range":s.length?(i?s.find("option").each((function(){var t=e(this),a=i.min_price+(i.max_price?"-".concat(i.max_price):"");t.val()===a&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t,a,n=e(this),r=n.children("label"),l=n.children("a");a=r.length?r.find(":input").val():l.data("min_price")+(l.data("max_price")?"-"+l.data("max_price"):""),i.min_price?t=i.min_price+(i.max_price?"-"+i.max_price:""):i.price_ranges&&(t=i.price_ranges),a===t&&(n.children("label").children("a").click(),n.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_slider":var c=t.find(".price-slider");t.find(".price-slider-min").val(c.data("min")),t.find(".price-slider-max").val(c.data("max")).change();break;case"orderby":t.find("select").val("menu_order");break;case"stock_sale":i?(null!=i&&i.instock_filter&&t.find(".filter-in-stock").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.onsale_filter&&t.find(".filter-on-sale").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.featured_filter&&t.find(".filter-featured").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active")):(t.find(".filter-in-stock").find(":input").prop("checked",!1).change(),t.find(".filter-on-sale").find(":input").prop("checked",!1).change(),t.find(".filter-featured").find(":input").prop("checked",!1).change(),r.removeClass("active"));break;default:r.removeClass("active")}this.activeFilters=!1,a&&this.filter()}},{key:"deactivateAllFilters",value:function(t){var i=this;this.getFilters().each((function(){var t=e(this);i.deactivateFilter(t)})),this.activeFilters=!1,t&&this.filter()}},{key:"deactivateFilterByProperties",value:function(t,i){var a=this,n=this.getFiltersByProperties(t);n.length&&n.each((function(){var n=e(this);a.deactivateFilter(n,t,i)}))}},{key:"openModal",value:function(){var t=this;this.isMobile&&(this._closeAllCollapsables(),e("body").css("overflow","hidden").addClass("yith-wcan-preset-modal-open"),this.$preset.show(),setTimeout((function(){t.$preset.addClass("open")}),100))}},{key:"closeModal",value:function(){var t=this;this.isMobile&&(this.$preset.removeClass("open"),setTimeout((function(){t.$preset.hide(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open")}),300))}},{key:"formatPrice",value:function(e){return"undefined"!=typeof accounting&&(e=accounting.formatMoney(e,{symbol:yith_wcan_shortcodes.currency_format.symbol,decimal:yith_wcan_shortcodes.currency_format.decimal,thousand:yith_wcan_shortcodes.currency_format.thousand,precision:0,format:yith_wcan_shortcodes.currency_format.format})),e}},{key:"mergeProperties",value:function(t,i,a){for(var n in i)if(i.hasOwnProperty(n)&&t[n]){switch(n){case"rating_filter":case"min_price":case"max_price":case"onsale_filter":case"instock_filter":case"orderby":t[n]=i[n];break;default:if(0===n.indexOf("query_type_"))t[n]=i[n];else{var r=0===n.indexOf("filter_"),l=r?",":"+",s=t[n].replace(",",l)+l+i[n].replace(",",l);if(s=s.split(l).filter((function(e,t,i){return i.indexOf(e)===t})).join(l),t[n]=s,r){var o=n.replace("filter_","query_type_");t[o]="and",i[o]="and"}}}delete i[n]}return e.extend(t,i),t}}])&&u(i.prototype,a),n&&u(i,n),t}();jQuery((function(e){e(document).on("yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode",(function(){e(".yith-wcan-filters").not(".enhanced").each((function(){new p(e(this))})),e(".yith-wcan-reset-filters").not(".enhanced").each((function(){new r(e(this))}))})).trigger("yith_wcan_init_shortcodes"),globalThis.product_filter=new n}))})();
|
1 |
+
(()=>{"use strict";var e=jQuery;function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var n=function(){function n(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),a(this,"xhr",null),a(this,"doingAjax",!1),a(this,"originalSearch",location.search),a(this,"initialized",!1);var t=e("head").html(),i=document.title,r=this.searchAlternativeUrl(t);r&&!this.doingAjax&&!this.initialized&&!yith_wcan_shortcodes.ajax_filters&&this.pushUrlToHistory(r,i),this.initialized=!0}var r,l,s;return r=n,(l=[{key:"doFilter",value:function(t,i,a){var n,r,l=this,s=e(i||"body");if((r=e(document).triggerHandler("yith_wcan_filters_parameters",[t]))&&(t=r),s&&this.block(s),n=this.buildUrl(t),yith_wcan_shortcodes.ajax_filters)return this.doingAjax=!0,this._doAjax(n).done((function(e){n=l.searchAlternativeUrl(e,n),l._beforeFilter(e,t),l.refreshFragments(i,a,e),l.pushUrlToHistory(n,e.pageTitle),s&&l.unblock(s),l._afterFilter(e,t),l.doingAjax=!1}));window.location=n}},{key:"_beforeFilter",value:function(t,i){e(document).trigger("yith-wcan-ajax-loading",[t,i])}},{key:"_afterFilter",value:function(t,i){e(".woocommerce-ordering").on("change","select.orderby",(function(){e(this).closest("form").submit()})),i&&Object.keys(i).length?e("body").addClass("filtered"):e("body").removeClass("filtered"),e(window).trigger("scroll"),e(document).trigger("yith-wcan-ajax-filtered",[t,i]).trigger("yith_wcwl_reload_fragments")}},{key:"buildUrl",value:function(i){var a,n=this,r=yith_wcan_shortcodes.query_param,l={},s=window.location,o=yith_wcan_shortcodes.base_url?yith_wcan_shortcodes.base_url:(null==s?void 0:s.origin)+(null==s?void 0:s.pathname),c=this,h="object"===t(i)&&Object.keys(i).length;if(yith_wcan_shortcodes.session_param&&(o=o.replace(new RegExp("/"+yith_wcan_shortcodes.session_param+"/[^/]*/"),"")),h&&(l[r]=1),this.originalSearch){var d=this.originalSearch.replace("?","").split("&").reduce((function(e,t){var i=t.split("=");if(2===i.length){if(n.isFilterParam(i[0]))return e;e[i[0]]=i[1]}return e}),{});l=e.extend(l,d)}return h&&(l=e.extend(l,i)),(a=Object.keys(l).reduce((function(e,t){var i=l[t];return i&&t?e+=c._cleanParam(t)+"="+c._cleanParam(i)+"&":e}),"?").replace(/&$/g,"").replace(/%2B/g,"+").replace(/%2C/g,",")).length>1&&(o+=a),o}},{key:"searchAlternativeUrl",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=i;return-1===e.indexOf("yith_wcan:sharing_url")?a:a=(t=e.match(/<meta name="yith_wcan:sharing_url" content="([^"]*)">/))&&1 in t?t[1]:a}},{key:"pushUrlToHistory",value:function(e,t){yith_wcan_shortcodes.change_browser_url&&!navigator.userAgent.match(/msie/i)&&window.history.pushState({pageTitle:t},"",e)}},{key:"refreshFragments",value:function(t,i,a){var n=document.createElement("html"),r=e(n);if(n.innerHTML=a,t){var l,s=e(i),o=e(t);s.length&&(l=r.find(i)).length&&s.replaceWith(l.first()),o.length&&(l=r.find(t)).length&&o.replaceWith(l.first())}else{var c=e(yith_wcan_shortcodes.content);c.length?c.replaceWith(r.find(yith_wcan_shortcodes.content)):e("body").replaceWith(r.find("body"))}e(document).trigger("yith_wcan_init_shortcodes")}},{key:"_cleanParam",value:function(e){var t,i;return null===(t=yith_wcan_shortcodes)||void 0===t||!t.process_sanitize||null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.skip_sanitize?e:encodeURIComponent(e)}},{key:"_doAjax",value:function(t,i){return this.xhr&&this.xhr.abort(),i=e.extend({url:t,headers:{"X-YITH-WCAN":1}},i),this.xhr=e.ajax(i),this.xhr}},{key:"block",value:function(t){var i;if(void 0!==e.fn.block){var a="#fff center center no-repeat";null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.loader&&(a="url('".concat(yith_wcan_shortcodes.loader,"') ").concat(a)),t.block({message:null,overlayCSS:{background:a,opacity:.7}})}}},{key:"unblock",value:function(t){void 0!==e.fn.unblock&&t.unblock()}},{key:"isFilterParam",value:function(t){var i,a=["rating_filter","min_price","max_price","price_ranges","onsale_filter","instock_filter","featured_filter","orderby","product-page",yith_wcan_shortcodes.query_param];return(i=e(document).triggerHandler("yith_wcan_supported_filters_parameters",[a]))&&(a=i),-1!==(a=a.concat(yith_wcan_shortcodes.supported_taxonomies.map((function(e){return e.replace("pa_","filter_")})))).indexOf(t)||-1!==t.indexOf("filter_")||-1!==t.indexOf("query_type_")}}])&&i(r.prototype,l),s&&i(r,s),n}();var r=function t(i){var a,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=null,(n="$reset")in(a=this)?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,this.$reset=i,this.$reset.on("click",(function(t){t.preventDefault(),e(".yith-wcan-filters").each((function(){var t=e(this).data("preset");t.deactivateAllFilters(!0),t.closeModal()}))})),this.$reset.data("reset",this).addClass("enhanced")};function l(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var a=0,n=function(){};return{s:n,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,l=!0,o=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return l=e.done,e},e:function(e){o=!0,r=e},f:function(){try{l||null==i.return||i.return()}finally{if(o)throw r}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,a=new Array(t);i<t;i++)a[i]=e[i];return a}function o(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var h=function(){function t(i,a){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,"$originalSelect",null),c(this,"$_main",null),c(this,"$_label",null),c(this,"$_dropdown",null),c(this,"$_search",null),c(this,"$_showMore",null),c(this,"$_items",null),c(this,"currentPage",1),c(this,"options",{}),this.$originalSelect=i,this.$originalSelect.is("select")){var n=this.$originalSelect.data("per_page"),r=this.$originalSelect.data("order"),l=this.$originalSelect.data("all-label"),s={showSearch:this.$originalSelect.data("show_search"),paginate:this.$originalSelect.data("paginate"),perPage:n||10,order:r||"ASC",getElements:null,labels:{emptyLabel:l||yith_wcan_shortcodes.labels.empty_option,searchPlaceholder:yith_wcan_shortcodes.labels.search_placeholder,noItemsFound:yith_wcan_shortcodes.labels.no_items,showMore:yith_wcan_shortcodes.labels.show_more}};this.options=e.extend(s,a),this._hideSelect(),this._initTemplate(),this._initActions(),this.$originalSelect.data("dropdown",this).addClass("enhanced")}}var i,a,n;return i=t,(a=[{key:"_hideSelect",value:function(){this.$originalSelect.hide()}},{key:"_initTemplate",value:function(){var t=e("<div/>",{class:"yith-wcan-dropdown closed"}),i=e("<div/>",{class:"dropdown-label",html:this.getLabel()}),a=e("<div>",{class:"dropdown-wrapper"}),n=e("<ul/>",{class:"matching-items filter-items"});a.append(n),t.append(i).append(a),this.options.showSearch&&this._initSearchTemplate(a),this.options.paginate&&this._initShowMoreTemplate(a),this.$originalSelect.after(t),this.$_main=t,this.$_label=i,this.$_dropdown=a,this.$_items=n}},{key:"_initSearchTemplate",value:function(t){var i=e("<div/>",{class:"search-field-container"}),a=e("<input/>",{name:"s",class:"search-field",type:"search",placeholder:this.options.labels.searchPlaceholder});i.append(a).prependTo(t),this.$_search=a}},{key:"_initShowMoreTemplate",value:function(t){var i=e("<a/>",{class:"show-more",text:this.options.labels.showMore.replace("%d",this.options.perPage)});i.on("click",this.loadNextPage.bind(this)).hide(),t.append(i),this.$_showMore=i}},{key:"_initActions",value:function(){var t,i,a=this;null===(t=this.$_main)||void 0===t||t.on("click",(function(e){e.stopPropagation(),a.toggleDropdown()})),this.$_dropdown.on("click",(function(e){e.stopPropagation()})),null===(i=this.$_search)||void 0===i||i.on("keyup search",(function(){a._populateItems()})),this.$_items.on("change",":input",(function(){var t,i=e(this).closest("li"),n=i.data("value");if(i.hasClass("disabled")&&!a.isValueSelected(n))return!1;i.toggleClass("active"),t=i.hasClass("active"),a._changeItemStatus(n,t)})),this.$_items.on("click","li:not(.checkbox) a",(function(t){var i,n=e(this).closest("li"),r=n.data("value");if(t.preventDefault(),n.hasClass("disabled")&&!a.isValueSelected(r))return!1;n.toggleClass("active"),(i=n.hasClass("active"))&&n.siblings().removeClass("active"),a._changeItemStatus(r,i)})),this.$_items.on("click","label > a",(function(t){var i=e(this).parent().find(":input");t.preventDefault(),(i.is('[type="radio"]')||i.is('[type="checkbox"]'))&&i.prop("checked",!i.prop("checked")),i.change()})),this.$originalSelect.on("change",(function(t,i){i||(a.$_items.find("li").each((function(){var t=e(this).data("value");a.isValueSelected(t)?a._selectItem(t):a._deselectItem(t)})),a.updateLabel())})),e(document).on("click",this.closeDropdown.bind(this))}},{key:"openDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.addClass("open").removeClass("closed"),this._afterDropdownOpen()}},{key:"closeDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.removeClass("open").addClass("closed")}},{key:"_closeOtherDropdowns",value:function(){var t=this;e(document).find("select.enhanced").filter((function(i,a){var n=e(a);return!!n.data("dropdown")&&!n.is(t.$originalSelect)})).each((function(){e(this).data("dropdown").closeDropdown()}))}},{key:"toggleDropdown",value:function(){var e,t;null===(e=this.$_main)||void 0===e||e.toggleClass("open").toggleClass("closed"),null!==(t=this.$_main)&&void 0!==t&&t.hasClass("open")&&this._afterDropdownOpen()}},{key:"_afterDropdownOpen",value:function(){var e;this._closeOtherDropdowns(),null!==(e=this.$_search)&&void 0!==e&&e.length&&this.$_search.val(""),this._populateItems()}},{key:"getMatchingElements",value:function(t,i){var a=this,n=[],r=this.getOptions();return new Promise((function(l){r.each((function(){var i=e(this),a=i.val(),r=i.html(),l=new RegExp(".*"+t+".*","i");(!t||l.test(a)||l.test(r))&&n.push({value:a,label:r})})),a.options.getElements?a.options.getElements(t).then((function(t){t&&(t=t.reduce((function(e,t,i){return e.push({label:i,value:t}),e}),[]),n=e.extend(n,t)),l(a._formatItems(n,i))})):l(a._formatItems(n,i))}))}},{key:"_formatItems",value:function(e,t){var i=this,a=[],n=!1;return e.filter((function(e){return-1===a.indexOf(e.value)&&(a.push(e.value),!0)})).sort((function(e,t){var a="ASC"===i.options.order?1:-1;return e.value<t.value?-1*a:e.value>t.value?a:0})),t&&(n=t<Object.keys(e).length,e=e.slice(0,t)),{items:e,hasMore:n}}},{key:"_generateItem",value:function(t,i){var a,n=this.isValueSelected(t),r=this.getOptionByValue(t),l=e("<li/>",{"data-value":t,class:r.length?r.attr("class"):""});if(r.length){var s=r.data("template"),o=r.data("count");i=s||i,o&&(i+=o)}if(a=e("<a/>",{href:r.length?r.data("filter_url"):"#",html:i,"data-title":r.length?r.data("title"):""}),this.$originalSelect.prop("multiple")){var c=e("<input/>",{type:"checkbox",value:t}),h=e("<label>");c.prop("checked",n),h.prepend(c).append(a),l.append(h).addClass("checkbox")}else l.append(a);return n?l.addClass("active"):l.removeClass("active"),l}},{key:"_populateItems",value:function(t){var i,a,n=this,r=null!==(i=this.$_search)&&void 0!==i&&i.length?this.$_search.val():"",s=this.options.paginate?this.options.perPage:0;a=(t=t?parseInt(t):1)*s,this.getMatchingElements(r,a).then((function(i){var a=i.items,r=[],s=!1;if(n._emptyItems(),n._hideLoadMore(),a.length){var o,c=l(a);try{for(c.s();!(o=c.n()).done;){var h=o.value;""===h.value?r.unshift(n._generateItem(h.value,h.label)):r.push(n._generateItem(h.value,h.label))}}catch(e){c.e(e)}finally{c.f()}n.currentPage=t,s=i.hasMore}else r.push(e("<li/>",{text:n.options.labels.noItemsFound})),n.currentPage=1;n.$_items.append(r),e(document).trigger("yith_wcan_dropdown_updated"),s&&n._showLoadMore()}))}},{key:"loadNextPage",value:function(){var e=this.currentPage+1;this._populateItems(e)}},{key:"_selectItem",value:function(e){return this._changeItemStatus(e,!0)}},{key:"_deselectItem",value:function(e){return this._changeItemStatus(e,!1)}},{key:"_changeItemStatus",value:function(e,t){var i=this.$originalSelect.find('option[value="'.concat(e,'"]'));return!!i.length&&(i.prop("selected",t),this.closeDropdown(),this.updateLabel(),this.$originalSelect.trigger("change",[!0]),!0)}},{key:"_emptyItems",value:function(){this.$_items.html("")}},{key:"_showLoadMore",value:function(){this.$_showMore.show()}},{key:"_hideLoadMore",value:function(){this.$_showMore.hide()}},{key:"getLabel",value:function(){return this.hasSelectedValues()?this.getSelectedLabels().join(", "):this.options.labels.emptyLabel}},{key:"updateLabel",value:function(){var e,t=this.getLabel();null===(e=this.$_label)||void 0===e||e.html(t)}},{key:"getOptions",value:function(){return this.$originalSelect.find("option")}},{key:"hasSelectedValues",value:function(){return this.getSelectedOptions().length}},{key:"isValueSelected",value:function(e){return-1!==this.getSelectedValues().indexOf(e.toString())}},{key:"getSelectedOptions",value:function(){return this.$originalSelect.find("option").filter(":selected")}},{key:"getOptionByValue",value:function(e){return this.$originalSelect.find('option[value="'.concat(e,'"]'))}},{key:"getSelectedLabels",value:function(){var t=[];return this.getSelectedOptions().each((function(){var i=e(this),a=i.data("template");a=a||i.html().replace(/\([0-9]*\)/,""),t.push(a)})),t}},{key:"getSelectedValues",value:function(){var t=[];return this.getSelectedOptions().each((function(){t.push(e(this).val())})),t}},{key:"destroy",value:function(){}}])&&o(i.prototype,a),n&&o(i,n),t}();function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var p=function(){function t(i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,"preset",!1),f(this,"$preset",!1),f(this,"target",!1),f(this,"$target",!1),f(this,"$filters",!1),f(this,"$filterButtons",!1),f(this,"modalElements",{}),f(this,"activeFilters",!1),f(this,"isMobile",!1),f(this,"sliderTimeout",!1),f(this,"originalFilters",null),f(this,"dirty",!1),this.preset="#"+i.attr("id"),this.$preset=i,this.target=this.$preset.data("target"),this.$target=!!this.target&&e(this.target),this._regiterStatus(),this._initFilterButton(),this._initResponsive(),this._initFilters(),this._initActions(),this.$preset.data("preset",this).addClass("enhanced").trigger("yith_wcan_preset_initialized",[this])}var i,a,n;return i=t,(a=[{key:"_initFilters",value:function(){var t=this;this.getFilters().each((function(){var i=e(this);t._initFilter(i)})),this.maybeShowClearAllFilters()}},{key:"_initFilterButton",value:function(){var e=this;this.$filterButtons=this.$preset.find(".apply-filters"),this.$filterButtons.length&&this.$filterButtons.on("click",(function(t){t.preventDefault(),e.filter()})).hide()}},{key:"_initActions",value:function(){this.$preset.find("form").on("submit",(function(e){e.preventDefault()}))}},{key:"_initResponsive",value:function(){var t=this;if(yith_wcan_shortcodes.modal_on_mobile){var i=window.matchMedia("(max-width: ".concat(yith_wcan_shortcodes.mobile_media_query,"px)"));e(window).on("resize",(function(){var e=!!i.matches;e!==t.isMobile&&(t.isMobile=e,t._afterLayoutChange())})).resize()}}},{key:"_initFilter",value:function(t){var i,a=this,n=function(i){var n=e(this),r=n.closest(".yith-wcan-filter"),l=!!r.length&&"yes"===r.data("multiple"),s=n.closest(".filter-item"),o=s.length?r.find(".filter-item").not(s):[];if(s.is(".disabled")&&!s.is(".active"))return i.preventDefault(),!1;i.preventDefault(),o.length&&!l&&o.removeClass("active").children("label").find(":input").prop("checked",!1).parent(".checked").removeClass("checked"),s.length&&s.toggleClass("active"),a.activeFilters=!1,a.maybeFilter(t),a.maybeToggleClearAllFilters(),a.maybeToggleClearFilter(r)};t.find(".filter-item").not(".checkbox").not(".radio").on("click","a",(function(t){var i=e(this).closest(".filter-item");if(!e(null==t?void 0:t.delegateTarget).is(i))return!1;n.call(this,t)})),t.find(":input").on("change",(function(t){var i=e(this),a=i.closest(".filter-item");if(a.is(".disabled")&&!a.is(".active"))return i.prop("checked",!1),!1;n.call(this,t)})),t.find("label > a").on("click",(function(t){var i=e(this),a=i.closest(".filter-item");if(t.preventDefault(),a.is(".disabled")&&!a.is(".active"))return!1;var n=i.parent().find(":input");(n.is('[type="radio"]')||n.is('[type="checkbox"]'))&&n.prop("checked",!n.prop("checked")),n.change()})),this._initTooltip(t),this._initPriceSlider(t),this._initDropdown(t),this._initCollapsable(t),this.maybeShowClearFilter(t),null!==(i=this.$preset)&&void 0!==i&&i.hasClass("custom-style")&&this._initCustomInput(t)}},{key:"_initTooltip",value:function(t,i){t.find("[data-title]").each((function(){var t=e(this);!t.hasClass("tooltip-added")&&t.data("title")&&(t.on("mouseenter",(function(){var t,a=e(this),n=null,r=a.outerWidth(),l=0;if(!i||"top"!==i&&"right"!==i){var s=a.closest(".filter-item");i=s.hasClass("color")||s.hasClass("label")?"top":"right"}n=e("<span>",{class:"yith-wcan-tooltip",html:a.data("title")}),a.append(n),t=n.outerWidth()+6,n.outerWidth(t),l="top"===i?(r-t)/2:r+15,n.css({left:l.toFixed(0)+"px"}).fadeIn(200),a.addClass("with-tooltip")})).on("mouseleave",(function(){var t=e(this);t.find(".yith-wcan-tooltip").fadeOut(200,(function(){t.removeClass("with-tooltip").find(".yith-wcan-tooltip").remove()}))})),t.addClass("tooltip-added"))}))}},{key:"_initDropdown",value:function(t){var i=t.find("select.filter-dropdown");i.length&&(i.hasClass("select2-hidden-accessible")&&void 0!==e.fn.selectWoo&&i.selectWoo("destroy"),this._initDropdownObject(i,{paginate:!0,perPage:yith_wcan_shortcodes.terms_per_page}))}},{key:"_initDropdownObject",value:function(e,t){return new h(e,t)}},{key:"_initPriceSlider",value:function(e){var t=this;if(e.hasClass("filter-price-slider")){var i=this,a=e.find(".price-slider"),n=a.find(".price-slider-min"),r=a.find(".price-slider-max"),l=parseFloat(a.data("min")),s=parseFloat(a.data("max")),o=parseFloat(n.val()),c=parseFloat(r.val()),h=parseFloat(a.data("step")),d=function(){i.sliderTimeout&&clearTimeout(i.sliderTimeout),i.sliderTimeout=setTimeout((function(){i.maybeFilter(e)}),200)};e.find(".price-slider-ui").ionRangeSlider({skin:"round",type:"double",min:l,max:s,step:h,from:o,to:c,min_interval:h,values_separator:" - ",prettify:function(e){return t.formatPrice(e)},onChange:function(e){n.val(e.from),r.val(e.to)},onFinish:d}),n.add(r).off("change").on("keyup",(function(){n.val()&&r.val()&&d()}))}}},{key:"_initCollapsable",value:function(e){this._initTitleCollapsable(e),this._initHierarchyCollapsable(e)}},{key:"_initTitleCollapsable",value:function(e){var t=e.find(".collapsable");t.length&&this._initToggle(t,t,e.find(".filter-content"))}},{key:"_initHierarchyCollapsable",value:function(t){var i=t.find(".hierarchy-collapsable");if(i.length){var a=this,n=t.find(".active");n.length&&(n.parents(".hierarchy-collapsable").removeClass("closed").addClass("opened"),n.hasClass("hierarchy-collapsable")&&yith_wcan_shortcodes.show_current_children&&n.removeClass("closed").addClass("opened")),i.each((function(){var t=e(this),i=e("<span/>",{class:"toggle-handle"});i.appendTo(t),a._initToggle(i,t,t.children("ul.filter-items"))}))}}},{key:"_initToggle",value:function(e,t,i){t.hasClass("closed")&&i.hide(),e.off("click").on("click",(function(e){e.stopPropagation(),e.preventDefault(),i.slideToggle(400,(function(){t.toggleClass("opened").toggleClass("closed")}))}))}},{key:"_initCustomInput",value:function(t){t.find(":input").each((function(){var t,i=e(this),a=i.attr("type"),n="".concat(a,"button");"checkbox"!==a&&"radio"!==a||i.closest(".".concat(n)).length||(i.is(":checked")&&(n+=" checked"),t=e("<span/>",{class:n}),i.wrap(t).on("change",(function(){var t=e(this);t.prop("checked")?t.parent().addClass("checked"):t.parent().removeClass("checked")})))}))}},{key:"_regiterStatus",value:function(){this.originalFilters=this.getFiltersProperties()}},{key:"_afterLayoutChange",value:function(){var t,i;this.isMobile?(this.$preset.addClass("filters-modal").attr("role","dialog").attr("tabindex","-1").hide(),this._addCloseModalButton(),this._addApplyFiltersModalButton(),this._switchToCollapsables(),null===(t=this.$filterButtons)||void 0===t||t.hide()):(this.$preset.removeClass("filters-modal").removeClass("open").removeAttr("role").removeAttr("tabindex").show(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open"),this._removeCloseModalButton(),this._removeApplyFiltersModalButton(),this._switchBackCollapsables(),null===(i=this.$filterButtons)||void 0===i||i.show())}},{key:"_addCloseModalButton",value:function(){var t=e("<a/>",{class:"close-button",html:"×","data-dismiss":"modal","aria-label":yith_wcan_shortcodes.labels.close});t.prependTo(this.$preset).on("click",this.closeModal.bind(this)),this.modalElements.closeButton=t}},{key:"_removeCloseModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.closeButton)||void 0===t||t.remove()}},{key:"_addApplyFiltersModalButton",value:function(){var t=this,i=e("<button/>",{class:"apply-filters main-modal-button",html:yith_wcan_shortcodes.labels.show_results,"data-dismiss":"modal"});i.appendTo(this.$preset).on("click",(function(){t.filter(),t.closeModal()})),this.modalElements.applyFiltersButton=i}},{key:"_removeApplyFiltersModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.applyFiltersButton)||void 0===t||t.remove()}},{key:"_switchToCollapsables",value:function(){var t=this;this.getFilters().each((function(){var i=e(this),a=i.find(".filter-title");a.length&&!a.hasClass("collapsable")&&(a.addClass("collapsable").data("disable-collapse",!0),t._initTitleCollapsable(i))}))}},{key:"_switchBackCollapsables",value:function(){this.getFilters().each((function(){var t=e(this),i=t.find(".filter-title");i.length&&i.hasClass("collapsable")&&i.data("disable-collapse")&&(i.removeClass("collapsable").removeData("disable-collapse",!0).off("click"),t.find(".filter-content").show())}))}},{key:"_openAllCollapsables",value:function(){var t=this;this.$filters.not(".no-title").not((function(i,a){return t.isFilterActive(e(a))})).find(".filter-content").show().end().find(".filter-title").removeClass("closed").addClass("opened")}},{key:"_closeAllCollapsables",value:function(){var t=this;this.$filters.not(".no-title").not((function(i,a){return t.isFilterActive(e(a))})).find(".filter-content").hide().end().find(".filter-title").addClass("closed").removeClass("opened")}},{key:"maybeRegisterStatusChange",value:function(){var e=this.getFiltersProperties(),t=JSON.stringify(e),i=JSON.stringify(this.originalFilters);this.dirty=t!==i}},{key:"maybeFilter",value:function(e){if(this.maybeRegisterStatusChange(),yith_wcan_shortcodes.instant_filters&&!this.isMobile)this.filter();else if(yith_wcan_shortcodes.instant_filters||this.isMobile){if(this.isMobile&&this.dirty){var t;this.$preset.addClass("with-filter-button"),null===(t=this.modalElements.applyFiltersButton)||void 0===t||t.show()}}else{var i,a;this.dirty?null===(i=this.$filterButtons)||void 0===i||i.show():null===(a=this.$filterButtons)||void 0===a||a.hide()}}},{key:"filter",value:function(){var t,i,a,n=this,r=null===(t=window)||void 0===t?void 0:t.product_filter;null==r||null===(i=r.doFilter(this.getFiltersProperties(),this.target,this.preset))||void 0===i||i.done((function(){var t=e(n.preset);if(!n.isMobile&&t.length&&yith_wcan_shortcodes.scroll_top){var i=t.offset().top;if(yith_wcan_shortcodes.scroll_target){var a=e(yith_wcan_shortcodes.scroll_target);i=a.length?a.offset().top:i}e("body, html").animate({scrollTop:i-100})}n.originalFilters=n.getFiltersProperties(),n.dirty=!1})),this.isMobile&&(this.$preset.removeClass("with-filter-button"),null===(a=this.modalElements.applyFiltersButton)||void 0===a||a.hide())}},{key:"getFilters",value:function(){return!1===this.$filters&&(this.$filters=this.$preset.find(".yith-wcan-filter")),this.$filters}},{key:"getActiveFilters",value:function(){return!1===this.activeFilters&&(this.activeFilters=this.getFiltersProperties()),this.activeFilters}},{key:"isAnyFilterActive",value:function(){return!!Object.keys(this.getActiveFilters()).length}},{key:"isFilterActive",value:function(e){var t,i;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var a=e.find(".filter-dropdown");if(a.length){var n=a.val();t="object"===d(n)?!(null==n||!n.length):!!n;break}case"stock_sale":t=e.find(".filter-item").filter(".active").length;break;case"price_slider":var r=parseFloat(e.find(".price-slider").data("step")),l=parseFloat(e.find(".price-slider").data("min")),s=parseFloat(e.find(".price-slider").data("max")),o=parseFloat(e.find(".price-slider-min").val()),c=parseFloat(e.find(".price-slider-max").val());t=Math.abs(o-l)>=r||Math.abs(c-s)>=r;break;case"orderby":t="menu_order"!==e.find(".filter-order-by").val();break;default:t=!1}return t=void 0!==(i=e.triggerHandler("yith_wcan_is_filter_active",[t,this]))?i:t}},{key:"countActiveItems",value:function(e){var t;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var i=e.find(".filter-dropdown");if(i.length){var a=i.val();t="object"===d(a)?null==a?void 0:a.length:+!!a;break}case"stock_sale":t=e.find(".filter-items").find(".active").length;break;case"orderby":this.isFilterActive(e)&&(t=1);break;case"price_slider":default:t=0}return t}},{key:"getFilterProperties",value:function(t){var i,a,n=t.data("filter-type"),r="yes"===t.data("multiple"),l=t.find(".filter-dropdown"),s={};switch(n){case"tax":var o=[],c=t.data("taxonomy"),h=0===c.indexOf("filter"),d=t.data("relation");if(l.length?r?o=l.val():o.push(l.val()):o=(a=t.find(".filter-item").filter(".active").children("a, label")).get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("term-slug"))?(t.push(a),t):t}),o),r){var u=h||"and"!==d?",":"+";s[c]=o.join(u)}else s[c]=o.pop();h&&(s[c.replace("filter_","query_type_")]=d);break;case"review":l.length?s.rating_filter=l.val():(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.rating_filter=a.get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("rating"))?(t.push(a),t):t}),[]).join(","):(a=a.first(),s.rating_filter=a.is("label")?a.find(":input").val():a.data("rating")));break;case"price_range":l.length?r?s.price_ranges=l.val().join(","):(s.min_price=l.val().split("-")[0],s.max_price=l.val().split("-")[1]):(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.price_ranges=a.get().reduce((function(t,i){var a=e(i).data("range-min"),n=e(i).data("range-max");return t+=(n?"".concat(a,"-").concat(n):a)+","}),"").replace(/^(.*),$/,"$1"):(s.min_price=parseFloat(a.first().data("range-min")),s.max_price=parseFloat(a.first().data("range-max"))));break;case"price_slider":s.min_price=parseFloat(t.find(".price-slider-min").val()),s.max_price=parseFloat(t.find(".price-slider-max").val());break;case"stock_sale":t.find(".filter-on-sale").is(".active")&&(s.onsale_filter=1),t.find(".filter-in-stock").is(".active")&&(s.instock_filter=1),t.find(".filter-featured").is(".active")&&(s.featured_filter=1);break;case"orderby":s.orderby=t.find(".filter-order-by").val()}return s=void 0!==(i=t.triggerHandler("yith_wcan_filter_properties",[s,self]))?i:s}},{key:"getFiltersProperties",value:function(){var t={},i=this;return this.getFilters().each((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a);t=i.mergeProperties(t,n,a)}})),t}},{key:"getFiltersByProperties",value:function(t){var i=this;return this.getFilters().filter((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a),r=!1;for(var l in t){if(["min_price","max_price","price_ranges"].includes(l)&&(n.min_price||n.price_ranges)){r=!0;break}if(n[l]){r=!0;break}}return r}return!1}))}},{key:"maybeToggleClearFilter",value:function(e){this.isFilterActive(e)?this.maybeShowClearFilter(e):this.maybeHideClearFilter(e)}},{key:"maybeToggleClearAllFilters",value:function(){this.isAnyFilterActive()?this.maybeShowClearAllFilters():this.maybeHideClearAllFilters()}},{key:"maybeShowClearFilter",value:function(t){var i=this;this.isFilterActive(t)&&yith_wcan_shortcodes.show_clear_filter&&(t.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_selection,role:"button"}).prependTo(t.find(".filter-content")).on("click",(function(e){e.preventDefault(),i.deactivateFilter(t,!1,yith_wcan_shortcodes.instant_filters),i.maybeHideClearFilter(t),yith_wcan_shortcodes.instant_filters&&i.closeModal()})))}},{key:"maybeShowClearAllFilters",value:function(){var t=this;this.isAnyFilterActive()&&this.isMobile&&(this.$preset.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_all_selections,role:"button"}).prependTo(this.$preset.find(".filters-container")).on("click",(function(e){e.preventDefault(),t.deactivateAllFilters(yith_wcan_shortcodes.instant_filters),t.maybeHideClearAllFilters(),yith_wcan_shortcodes.instant_filters&&t.closeModal()})))}},{key:"maybeHideClearFilter",value:function(e){!this.isFilterActive(e)&&yith_wcan_shortcodes.show_clear_filter&&e.find(".clear-selection").remove()}},{key:"maybeHideClearAllFilters",value:function(){this.isAnyFilterActive()||this.$preset.find(".filters-container").children(".clear-selection").remove()}},{key:"deactivateFilter",value:function(t,i,a){var n=t.data("filter-type"),r=t.find(".filter-item"),l=r.filter(".active"),s=t.find(".filter-dropdown");switch(n){case"tax":var o=t.data("taxonomy");s.length?(i?s.find("option").each((function(){var t=e(this);t.val().toString()===i[o].toString()&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("term-slug")).toString()===i[o].toString()&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"review":s.length?(i?s.find("option").each((function(){var t=e(this);t.val()===i.rating_filter&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("rating"))===i.rating_filter&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_range":s.length?(i?s.find("option").each((function(){var t=e(this),a=i.min_price+(i.max_price?"-".concat(i.max_price):"");t.val()===a&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t,a,n=e(this),r=n.children("label"),l=n.children("a");a=r.length?r.find(":input").val():l.data("min_price")+(l.data("max_price")?"-"+l.data("max_price"):""),i.min_price?t=i.min_price+(i.max_price?"-"+i.max_price:""):i.price_ranges&&(t=i.price_ranges),a===t&&(n.children("label").children("a").click(),n.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_slider":var c=t.find(".price-slider");t.find(".price-slider-min").val(c.data("min")),t.find(".price-slider-max").val(c.data("max")).change();break;case"orderby":t.find("select").val("menu_order");break;case"stock_sale":i?(null!=i&&i.instock_filter&&t.find(".filter-in-stock").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.onsale_filter&&t.find(".filter-on-sale").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.featured_filter&&t.find(".filter-featured").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active")):(t.find(".filter-in-stock").find(":input").prop("checked",!1).change(),t.find(".filter-on-sale").find(":input").prop("checked",!1).change(),t.find(".filter-featured").find(":input").prop("checked",!1).change(),r.removeClass("active"));break;default:r.removeClass("active")}this.activeFilters=!1,a&&this.filter()}},{key:"deactivateAllFilters",value:function(t){var i=this;this.getFilters().each((function(){var t=e(this);i.deactivateFilter(t)})),this.activeFilters=!1,t&&this.filter()}},{key:"deactivateFilterByProperties",value:function(t,i){var a=this,n=this.getFiltersByProperties(t);n.length&&n.each((function(){var n=e(this);a.deactivateFilter(n,t,i)}))}},{key:"openModal",value:function(){var t=this;this.isMobile&&(yith_wcan_shortcodes.toggles_open_on_modal?this._openAllCollapsables():this._closeAllCollapsables(),e("body").css("overflow","hidden").addClass("yith-wcan-preset-modal-open"),this.$preset.show(),setTimeout((function(){t.$preset.addClass("open")}),100))}},{key:"closeModal",value:function(){var t=this;this.isMobile&&(this.$preset.removeClass("open"),setTimeout((function(){t.$preset.hide(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open")}),300))}},{key:"formatPrice",value:function(e){return"undefined"!=typeof accounting&&(e=accounting.formatMoney(e,{symbol:yith_wcan_shortcodes.currency_format.symbol,decimal:yith_wcan_shortcodes.currency_format.decimal,thousand:yith_wcan_shortcodes.currency_format.thousand,precision:0,format:yith_wcan_shortcodes.currency_format.format})),e}},{key:"mergeProperties",value:function(t,i,a){for(var n in i)if(i.hasOwnProperty(n)&&t[n]){switch(n){case"rating_filter":case"min_price":case"max_price":case"onsale_filter":case"instock_filter":case"orderby":t[n]=i[n];break;default:if(0===n.indexOf("query_type_"))t[n]=i[n];else{var r=0===n.indexOf("filter_"),l=r?",":"+",s=t[n].replace(",",l)+l+i[n].replace(",",l);if(s=s.split(l).filter((function(e,t,i){return i.indexOf(e)===t})).join(l),t[n]=s,r){var o=n.replace("filter_","query_type_");t[o]="and",i[o]="and"}}}delete i[n]}return e.extend(t,i),t}}])&&u(i.prototype,a),n&&u(i,n),t}();jQuery((function(e){e(document).on("yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode",(function(){e(".yith-wcan-filters").not(".enhanced").each((function(){new p(e(this))})),e(".yith-wcan-reset-filters").not(".enhanced").each((function(){new r(e(this))}))})).trigger("yith_wcan_init_shortcodes"),globalThis.product_filter=new n}))})();
|
@@ -935,7 +935,7 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
|
|
935 |
.close-button {
|
936 |
color: $anchor-color;
|
937 |
cursor: pointer;
|
938 |
-
font-size:
|
939 |
height: 35px;
|
940 |
line-height: 1;
|
941 |
position: absolute;
|
@@ -1039,7 +1039,7 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
|
|
1039 |
}
|
1040 |
|
1041 |
// filter items
|
1042 |
-
.filter-items {
|
1043 |
max-height: 200px;
|
1044 |
overflow-y: scroll;
|
1045 |
overflow-x: hidden;
|
@@ -1097,6 +1097,19 @@ body.yith-wcan-preset-modal-open:after {
|
|
1097 |
}
|
1098 |
}
|
1099 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1100 |
@media( max-width: 991px ) {
|
1101 |
body.filters-in-modal .yith-wcan-filters {
|
1102 |
display: none;
|
935 |
.close-button {
|
936 |
color: $anchor-color;
|
937 |
cursor: pointer;
|
938 |
+
font-size: 1.5em;
|
939 |
height: 35px;
|
940 |
line-height: 1;
|
941 |
position: absolute;
|
1039 |
}
|
1040 |
|
1041 |
// filter items
|
1042 |
+
.filter-content > .filter-items {
|
1043 |
max-height: 200px;
|
1044 |
overflow-y: scroll;
|
1045 |
overflow-x: hidden;
|
1097 |
}
|
1098 |
}
|
1099 |
|
1100 |
+
body.rtl .yith-wcan-filters {
|
1101 |
+
.yith-wcan-filter {
|
1102 |
+
.filter-items {
|
1103 |
+
&.level-0 {
|
1104 |
+
ul {
|
1105 |
+
padding-left: 0;
|
1106 |
+
padding-right: 15px;
|
1107 |
+
}
|
1108 |
+
}
|
1109 |
+
}
|
1110 |
+
}
|
1111 |
+
}
|
1112 |
+
|
1113 |
@media( max-width: 991px ) {
|
1114 |
body.filters-in-modal .yith-wcan-filters {
|
1115 |
display: none;
|
@@ -3,7 +3,7 @@
|
|
3 |
* Admin class
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -25,14 +25,14 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
25 |
*
|
26 |
* @var YIT_Plugin_Panel_WooCommerce
|
27 |
*/
|
28 |
-
protected $
|
29 |
|
30 |
/**
|
31 |
* Panel page slug
|
32 |
*
|
33 |
* @var string
|
34 |
*/
|
35 |
-
protected $
|
36 |
|
37 |
/**
|
38 |
* Link to landing page on yithemes.com
|
@@ -96,23 +96,23 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
96 |
'yith_wcan_admin',
|
97 |
'yith_wcan_admin',
|
98 |
array(
|
99 |
-
'nonce'
|
100 |
'change_preset_status' => wp_create_nonce( 'change_preset_status' ),
|
101 |
-
'search_term'
|
102 |
-
'save_preset_filter'
|
103 |
-
'load_more_filters'
|
104 |
'delete_preset_filter' => wp_create_nonce( 'delete_preset_filter' ),
|
105 |
),
|
106 |
-
'messages'
|
107 |
-
'confirm_copy'
|
108 |
-
'confirm_delete'
|
109 |
// translators: 1. Number of items that will be added.
|
110 |
'confirm_add_all_terms' => _x( 'Are you sure you want to proceed? This operation will add %s items', '[Admin] Confirm add all terms message', 'yith-woocommerce-ajax-navigation' ),
|
111 |
'filter_title_required' => _x( '"Filter title" is a required field', '[Admin] Error message', 'yith-woocommerce-ajax-navigation' ),
|
112 |
),
|
113 |
-
'labels'
|
114 |
-
'no_title'
|
115 |
-
'upload_media'
|
116 |
'confirm_media' => _x( 'Use this media', '[Admin] Media library confirm button, when selecting images', 'yith-woocommerce-ajax-navigation' ),
|
117 |
),
|
118 |
'yith_wccl_enabled' => defined( 'YITH_WCCL' ),
|
@@ -146,7 +146,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
146 |
|
147 |
wp_enqueue_media();
|
148 |
|
149 |
-
if ( ! isset( $_GET['tab'] ) || 'filter-preset'
|
150 |
wp_enqueue_style( 'yith-wcan-material-icons' );
|
151 |
}
|
152 |
}
|
@@ -176,7 +176,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
176 |
*/
|
177 |
public function register_panel() {
|
178 |
|
179 |
-
if ( ! empty( $this->
|
180 |
return;
|
181 |
}
|
182 |
|
@@ -187,7 +187,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
187 |
'premium' => _x( 'Premium Version', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' ),
|
188 |
);
|
189 |
|
190 |
-
if ( isset( $_GET['tab'] ) && 'legacy' === $_GET['tab'] ) {
|
191 |
$admin_tabs['legacy'] = _x( 'Legacy', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' );
|
192 |
}
|
193 |
|
@@ -195,7 +195,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
195 |
'create_menu_page' => true,
|
196 |
'parent_slug' => '',
|
197 |
'page_title' => 'WooCommerce Ajax Product Filter',
|
198 |
-
'menu_title' =>
|
199 |
'plugin_description' => _x( 'It allows your users to find the product they are looking for as quickly as possible.', '[Admin] Plugin description', 'yith-woocommerce-ajax-navigation' ),
|
200 |
'capability' => apply_filters( 'yith_wcan_panel_capability', 'manage_woocommerce' ),
|
201 |
'parent' => '',
|
@@ -205,7 +205,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
205 |
'options-path' => YITH_WCAN_DIR . '/plugin-options',
|
206 |
'plugin_slug' => YITH_WCAN_SLUG,
|
207 |
'plugin-url' => YITH_WCAN_URL,
|
208 |
-
'page' => $this->
|
209 |
'help_tab' => array(
|
210 |
'main_video' => array(
|
211 |
'desc' => _x( 'Check this video to learn how to <b>create a filter preset and show it on the shop page:</b>', '[HELP TAB] Video title', 'yith-woocommerce-ajax-navigation' ),
|
@@ -215,17 +215,17 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
215 |
'es' => 'https://www.youtube.com/embed/KGnJW_zUBRY',
|
216 |
),
|
217 |
),
|
218 |
-
'playlists'
|
219 |
'en' => 'https://www.youtube.com/watch?v=icXC7Ei4K7g&list=PLDriKG-6905lqqHc9JR5RJ3vhBn5ktdcj',
|
220 |
'it' => 'https://www.youtube.com/watch?v=QwRkPQFeGOM&list=PL9c19edGMs08ouyniO98Q8S_pr4pHZPqb',
|
221 |
'es' => 'https://www.youtube.com/watch?v=7kX7nxBD2BA&list=PL9Ka3j92PYJOyeFNJRdW9oLPkhfyrXmL1',
|
222 |
),
|
223 |
-
'hc_url'
|
224 |
-
'doc_url'
|
225 |
),
|
226 |
);
|
227 |
|
228 |
-
$this->
|
229 |
|
230 |
do_action( 'yith_wcan_after_option_panel', $args );
|
231 |
}
|
@@ -242,7 +242,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
242 |
$args = array_merge(
|
243 |
$args,
|
244 |
array(
|
245 |
-
'page' => $this->
|
246 |
)
|
247 |
);
|
248 |
|
@@ -274,7 +274,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
274 |
* @return string Panel Slug.
|
275 |
*/
|
276 |
public function get_panel_page() {
|
277 |
-
return $this->
|
278 |
}
|
279 |
|
280 |
/**
|
@@ -290,7 +290,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
290 |
if ( is_null( $screen ) ) {
|
291 |
global $pagenow;
|
292 |
|
293 |
-
return 'admin.php' === $pagenow && isset( $_GET['page'] ) && $this->
|
294 |
}
|
295 |
|
296 |
// use screen id to check for current page.
|
@@ -306,13 +306,13 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
306 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
307 |
*/
|
308 |
public function is_preset_detail_page() {
|
309 |
-
$action = isset( $_GET['action'] ) ?
|
310 |
|
311 |
if ( ! $action ) {
|
312 |
return false;
|
313 |
}
|
314 |
|
315 |
-
return $this->is_panel_page() && in_array( $action, array( 'create', 'edit' ) );
|
316 |
}
|
317 |
|
318 |
/**
|
@@ -326,19 +326,19 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
326 |
$args = wp_parse_args(
|
327 |
$args,
|
328 |
array(
|
329 |
-
'item_name'
|
330 |
-
'subtitle'
|
331 |
'button_label' => '',
|
332 |
'button_class' => '',
|
333 |
-
'button_url'
|
334 |
-
'show_icon'
|
335 |
-
'hide'
|
336 |
)
|
337 |
);
|
338 |
|
339 |
extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
|
340 |
|
341 |
-
include
|
342 |
}
|
343 |
|
344 |
/**
|
@@ -347,7 +347,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
347 |
* @return void
|
348 |
*/
|
349 |
public function premium_tab() {
|
350 |
-
require_once
|
351 |
}
|
352 |
|
353 |
/**
|
@@ -357,8 +357,10 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
357 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
358 |
*/
|
359 |
public function preset_edit_tab() {
|
360 |
-
|
|
|
361 |
$preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
|
|
|
362 |
|
363 |
if ( 'edit' === $action && $preset ) {
|
364 |
$preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
|
@@ -366,7 +368,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
366 |
$preset = false;
|
367 |
}
|
368 |
|
369 |
-
include
|
370 |
}
|
371 |
|
372 |
/**
|
@@ -378,11 +380,11 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
378 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
379 |
*/
|
380 |
public function filter_terms_field( $field ) {
|
381 |
-
$id
|
382 |
-
$terms
|
383 |
$taxonomy = ! empty( $field['filter'] ) ? $field['filter']->get_taxonomy() : '';
|
384 |
|
385 |
-
include
|
386 |
}
|
387 |
|
388 |
/**
|
@@ -398,7 +400,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
398 |
*/
|
399 |
public function filter_term_field( $id, $term_id, $term_name, $term_options = array() ) {
|
400 |
// just include template, and provide passed terms.
|
401 |
-
include
|
402 |
}
|
403 |
|
404 |
/* === AJAX HANDLING === */
|
@@ -412,9 +414,9 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
412 |
public function json_search_term() {
|
413 |
check_ajax_referer( 'search_term', 'security' );
|
414 |
|
415 |
-
$term = isset( $_GET['term'] ) ?
|
416 |
$all = isset( $_GET['all'] ) ? (bool) intval( $_GET['all'] ) : false;
|
417 |
-
$tax = isset( $_GET['taxonomy'] ) ?
|
418 |
$exclude = isset( $_GET['selected'] ) ? array_map( 'intval', $_GET['selected'] ) : array();
|
419 |
|
420 |
if ( ( ! $term && ! $all ) || ! $tax ) {
|
@@ -436,7 +438,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
436 |
|
437 |
if ( ! empty( $terms ) ) {
|
438 |
foreach ( $terms as $term_obj ) {
|
439 |
-
if ( in_array( $term_obj->term_id, $exclude ) ) {
|
440 |
continue;
|
441 |
}
|
442 |
|
@@ -478,12 +480,12 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
478 |
'name' => _x( 'Clear Product Filter transients', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
|
479 |
'button' => _x( 'Clear', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
|
480 |
'desc' => _x( 'This will clear all transients related to the YITH WooCommerce AJAX Product Filter plugin. It may be useful if you changed your product\'s configuration, and filters do not display the expected results.', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
|
481 |
-
'callback' => array(
|
482 |
),
|
483 |
-
'run_widget_upgrade'
|
484 |
-
'name'
|
485 |
-
'button'
|
486 |
-
'desc'
|
487 |
'callback' => array( YITH_WCAN_Presets(), 'do_widget_upgrade' ),
|
488 |
),
|
489 |
);
|
@@ -509,7 +511,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
509 |
* @since 1.0
|
510 |
*/
|
511 |
public function action_links( $links ) {
|
512 |
-
$links = yith_add_action_links( $links, $this->
|
513 |
|
514 |
return $links;
|
515 |
}
|
@@ -530,7 +532,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
|
|
530 |
* @use plugin_row_meta
|
531 |
*/
|
532 |
public function plugin_row_meta( $new_row_meta_args, $plugin_meta, $plugin_file, $plugin_data, $status, $init_file = 'YITH_WCAN_FREE_INIT' ) {
|
533 |
-
if ( defined( $init_file ) && constant( $init_file )
|
534 |
$new_row_meta_args['slug'] = 'yith-woocommerce-ajax-product-filter';
|
535 |
|
536 |
if ( 'YITH_WCAN_FREE_INIT' === $init_file ) {
|
3 |
* Admin class
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
25 |
*
|
26 |
* @var YIT_Plugin_Panel_WooCommerce
|
27 |
*/
|
28 |
+
protected $panel;
|
29 |
|
30 |
/**
|
31 |
* Panel page slug
|
32 |
*
|
33 |
* @var string
|
34 |
*/
|
35 |
+
protected $panel_page = 'yith_wcan_panel';
|
36 |
|
37 |
/**
|
38 |
* Link to landing page on yithemes.com
|
96 |
'yith_wcan_admin',
|
97 |
'yith_wcan_admin',
|
98 |
array(
|
99 |
+
'nonce' => array(
|
100 |
'change_preset_status' => wp_create_nonce( 'change_preset_status' ),
|
101 |
+
'search_term' => wp_create_nonce( 'search_term' ),
|
102 |
+
'save_preset_filter' => wp_create_nonce( 'save_preset_filter' ),
|
103 |
+
'load_more_filters' => wp_create_nonce( 'load_more_filters' ),
|
104 |
'delete_preset_filter' => wp_create_nonce( 'delete_preset_filter' ),
|
105 |
),
|
106 |
+
'messages' => array(
|
107 |
+
'confirm_copy' => _x( 'Content copied to your clipboard', '[Admin] Copy confirmation message', 'yith-woocommerce-ajax-navigation' ),
|
108 |
+
'confirm_delete' => _x( 'Are you sure you want to delete this item?', '[Admin] Confirm filter delete message', 'yith-woocommerce-ajax-navigation' ),
|
109 |
// translators: 1. Number of items that will be added.
|
110 |
'confirm_add_all_terms' => _x( 'Are you sure you want to proceed? This operation will add %s items', '[Admin] Confirm add all terms message', 'yith-woocommerce-ajax-navigation' ),
|
111 |
'filter_title_required' => _x( '"Filter title" is a required field', '[Admin] Error message', 'yith-woocommerce-ajax-navigation' ),
|
112 |
),
|
113 |
+
'labels' => array(
|
114 |
+
'no_title' => _x( '< no title >', '[Admin] Message shown when filter has empty title', 'yith-woocommerce-ajax-navigation' ),
|
115 |
+
'upload_media' => _x( 'Select media you want to use', '[Admin] Media library title, when selecting images', 'yith-woocommerce-ajax-navigation' ),
|
116 |
'confirm_media' => _x( 'Use this media', '[Admin] Media library confirm button, when selecting images', 'yith-woocommerce-ajax-navigation' ),
|
117 |
),
|
118 |
'yith_wccl_enabled' => defined( 'YITH_WCCL' ),
|
146 |
|
147 |
wp_enqueue_media();
|
148 |
|
149 |
+
if ( ! isset( $_GET['tab'] ) || 'filter-preset' === $_GET['tab'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
150 |
wp_enqueue_style( 'yith-wcan-material-icons' );
|
151 |
}
|
152 |
}
|
176 |
*/
|
177 |
public function register_panel() {
|
178 |
|
179 |
+
if ( ! empty( $this->panel ) ) {
|
180 |
return;
|
181 |
}
|
182 |
|
187 |
'premium' => _x( 'Premium Version', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' ),
|
188 |
);
|
189 |
|
190 |
+
if ( isset( $_GET['tab'] ) && 'legacy' === $_GET['tab'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
191 |
$admin_tabs['legacy'] = _x( 'Legacy', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' );
|
192 |
}
|
193 |
|
195 |
'create_menu_page' => true,
|
196 |
'parent_slug' => '',
|
197 |
'page_title' => 'WooCommerce Ajax Product Filter',
|
198 |
+
'menu_title' => 'Ajax Product Filter',
|
199 |
'plugin_description' => _x( 'It allows your users to find the product they are looking for as quickly as possible.', '[Admin] Plugin description', 'yith-woocommerce-ajax-navigation' ),
|
200 |
'capability' => apply_filters( 'yith_wcan_panel_capability', 'manage_woocommerce' ),
|
201 |
'parent' => '',
|
205 |
'options-path' => YITH_WCAN_DIR . '/plugin-options',
|
206 |
'plugin_slug' => YITH_WCAN_SLUG,
|
207 |
'plugin-url' => YITH_WCAN_URL,
|
208 |
+
'page' => $this->panel_page,
|
209 |
'help_tab' => array(
|
210 |
'main_video' => array(
|
211 |
'desc' => _x( 'Check this video to learn how to <b>create a filter preset and show it on the shop page:</b>', '[HELP TAB] Video title', 'yith-woocommerce-ajax-navigation' ),
|
215 |
'es' => 'https://www.youtube.com/embed/KGnJW_zUBRY',
|
216 |
),
|
217 |
),
|
218 |
+
'playlists' => array(
|
219 |
'en' => 'https://www.youtube.com/watch?v=icXC7Ei4K7g&list=PLDriKG-6905lqqHc9JR5RJ3vhBn5ktdcj',
|
220 |
'it' => 'https://www.youtube.com/watch?v=QwRkPQFeGOM&list=PL9c19edGMs08ouyniO98Q8S_pr4pHZPqb',
|
221 |
'es' => 'https://www.youtube.com/watch?v=7kX7nxBD2BA&list=PL9Ka3j92PYJOyeFNJRdW9oLPkhfyrXmL1',
|
222 |
),
|
223 |
+
'hc_url' => 'https://support.yithemes.com/hc/en-us/categories/360003474618-YITH-WOOCOMMERCE-AJAX-PRODUCT-FILTER',
|
224 |
+
'doc_url' => 'https://docs.yithemes.com/yith-woocommerce-ajax-product-filter/',
|
225 |
),
|
226 |
);
|
227 |
|
228 |
+
$this->panel = new YIT_Plugin_Panel_WooCommerce( $args );
|
229 |
|
230 |
do_action( 'yith_wcan_after_option_panel', $args );
|
231 |
}
|
242 |
$args = array_merge(
|
243 |
$args,
|
244 |
array(
|
245 |
+
'page' => $this->panel_page,
|
246 |
)
|
247 |
);
|
248 |
|
274 |
* @return string Panel Slug.
|
275 |
*/
|
276 |
public function get_panel_page() {
|
277 |
+
return $this->panel_page;
|
278 |
}
|
279 |
|
280 |
/**
|
290 |
if ( is_null( $screen ) ) {
|
291 |
global $pagenow;
|
292 |
|
293 |
+
return 'admin.php' === $pagenow && isset( $_GET['page'] ) && $this->panel_page === $_GET['page']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
294 |
}
|
295 |
|
296 |
// use screen id to check for current page.
|
306 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
307 |
*/
|
308 |
public function is_preset_detail_page() {
|
309 |
+
$action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
310 |
|
311 |
if ( ! $action ) {
|
312 |
return false;
|
313 |
}
|
314 |
|
315 |
+
return $this->is_panel_page() && in_array( $action, array( 'create', 'edit' ), true );
|
316 |
}
|
317 |
|
318 |
/**
|
326 |
$args = wp_parse_args(
|
327 |
$args,
|
328 |
array(
|
329 |
+
'item_name' => _x( 'item', '[Admin] Generic item name, in "You have no x yet"', 'yith-woocommerce-ajax-navigation' ),
|
330 |
+
'subtitle' => _x( 'But don\'t worry, here you can create your first one!', '[Admin] Preset table empty message second line', 'yith-woocommerce-ajax-navigation' ),
|
331 |
'button_label' => '',
|
332 |
'button_class' => '',
|
333 |
+
'button_url' => '',
|
334 |
+
'show_icon' => true,
|
335 |
+
'hide' => false,
|
336 |
)
|
337 |
);
|
338 |
|
339 |
extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
|
340 |
|
341 |
+
include YITH_WCAN_DIR . 'templates/admin/preset-empty-content.php';
|
342 |
}
|
343 |
|
344 |
/**
|
347 |
* @return void
|
348 |
*/
|
349 |
public function premium_tab() {
|
350 |
+
require_once YITH_WCAN_DIR . 'templates/admin/premium.php';
|
351 |
}
|
352 |
|
353 |
/**
|
357 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
358 |
*/
|
359 |
public function preset_edit_tab() {
|
360 |
+
// phpcs:disable WordPress.Security.NonceVerification.Recommended
|
361 |
+
$action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : false;
|
362 |
$preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
|
363 |
+
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
364 |
|
365 |
if ( 'edit' === $action && $preset ) {
|
366 |
$preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
|
368 |
$preset = false;
|
369 |
}
|
370 |
|
371 |
+
include YITH_WCAN_DIR . 'templates/admin/preset-edit.php';
|
372 |
}
|
373 |
|
374 |
/**
|
380 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
381 |
*/
|
382 |
public function filter_terms_field( $field ) {
|
383 |
+
$id = isset( $field['index'] ) ? $field['index'] : 0;
|
384 |
+
$terms = isset( $field['value'] ) && $field['filter']->customize_terms() ? $field['value'] : array();
|
385 |
$taxonomy = ! empty( $field['filter'] ) ? $field['filter']->get_taxonomy() : '';
|
386 |
|
387 |
+
include YITH_WCAN_DIR . 'templates/admin/preset-filter-terms.php';
|
388 |
}
|
389 |
|
390 |
/**
|
400 |
*/
|
401 |
public function filter_term_field( $id, $term_id, $term_name, $term_options = array() ) {
|
402 |
// just include template, and provide passed terms.
|
403 |
+
include YITH_WCAN_DIR . 'templates/admin/preset-filter-term.php';
|
404 |
}
|
405 |
|
406 |
/* === AJAX HANDLING === */
|
414 |
public function json_search_term() {
|
415 |
check_ajax_referer( 'search_term', 'security' );
|
416 |
|
417 |
+
$term = isset( $_GET['term'] ) ? sanitize_text_field( wp_unslash( $_GET['term'] ) ) : '';
|
418 |
$all = isset( $_GET['all'] ) ? (bool) intval( $_GET['all'] ) : false;
|
419 |
+
$tax = isset( $_GET['taxonomy'] ) ? sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ) : '';
|
420 |
$exclude = isset( $_GET['selected'] ) ? array_map( 'intval', $_GET['selected'] ) : array();
|
421 |
|
422 |
if ( ( ! $term && ! $all ) || ! $tax ) {
|
438 |
|
439 |
if ( ! empty( $terms ) ) {
|
440 |
foreach ( $terms as $term_obj ) {
|
441 |
+
if ( in_array( (int) $term_obj->term_id, $exclude, true ) ) {
|
442 |
continue;
|
443 |
}
|
444 |
|
480 |
'name' => _x( 'Clear Product Filter transients', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
|
481 |
'button' => _x( 'Clear', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
|
482 |
'desc' => _x( 'This will clear all transients related to the YITH WooCommerce AJAX Product Filter plugin. It may be useful if you changed your product\'s configuration, and filters do not display the expected results.', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
|
483 |
+
'callback' => array( 'YITH_WCAN_Cache_Helper', 'delete_transients' ),
|
484 |
),
|
485 |
+
'run_widget_upgrade' => array(
|
486 |
+
'name' => _x( 'Run filter widgets upgrade', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
|
487 |
+
'button' => _x( 'Run', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
|
488 |
+
'desc' => _x( 'This will create a preset for any sidebar of your shop containing filter widgets; preset will be configured to match widgets specifications', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
|
489 |
'callback' => array( YITH_WCAN_Presets(), 'do_widget_upgrade' ),
|
490 |
),
|
491 |
);
|
511 |
* @since 1.0
|
512 |
*/
|
513 |
public function action_links( $links ) {
|
514 |
+
$links = yith_add_action_links( $links, $this->panel_page, defined( 'YITH_WCAN_PREMIUM' ), YITH_WCAN_SLUG );
|
515 |
|
516 |
return $links;
|
517 |
}
|
532 |
* @use plugin_row_meta
|
533 |
*/
|
534 |
public function plugin_row_meta( $new_row_meta_args, $plugin_meta, $plugin_file, $plugin_data, $status, $init_file = 'YITH_WCAN_FREE_INIT' ) {
|
535 |
+
if ( defined( $init_file ) && constant( $init_file ) === $plugin_file ) {
|
536 |
$new_row_meta_args['slug'] = 'yith-woocommerce-ajax-product-filter';
|
537 |
|
538 |
if ( 'YITH_WCAN_FREE_INIT' === $init_file ) {
|
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Cache class
|
4 |
+
*
|
5 |
+
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes
|
7 |
+
* @version 4.1.2
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'YITH_WCAN' ) ) {
|
11 |
+
exit;
|
12 |
+
} // Exit if accessed directly
|
13 |
+
|
14 |
+
if ( ! class_exists( 'YITH_WCAN_Cache_Helper' ) ) {
|
15 |
+
/**
|
16 |
+
* Cache class.
|
17 |
+
* This class manage all the cache functionalities.
|
18 |
+
*
|
19 |
+
* @since 4.1.2
|
20 |
+
*/
|
21 |
+
class YITH_WCAN_Cache_Helper {
|
22 |
+
/**
|
23 |
+
* Array of available transients
|
24 |
+
*
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
protected static $transients = array();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Array of transients that needs to be saved on shutdown
|
31 |
+
*
|
32 |
+
* @var array
|
33 |
+
*/
|
34 |
+
protected static $need_update = array();
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Bootstrap the cache
|
38 |
+
*/
|
39 |
+
public static function init() {
|
40 |
+
// init transients array.
|
41 |
+
self::init_transients();
|
42 |
+
|
43 |
+
// register transients for update.
|
44 |
+
add_action( 'shutdown', array( __CLASS__, 'update_transients' ), 10 );
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Returns a specific value in a transient
|
49 |
+
*
|
50 |
+
* @param string $transient Transient name.
|
51 |
+
* @param string $index Optional transient's index to return (assumes transient is an array).
|
52 |
+
*
|
53 |
+
* @return mixed Value of the transient (or value of the specific index inside transient).
|
54 |
+
*/
|
55 |
+
public static function get( $transient, $index = null ) {
|
56 |
+
if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
|
57 |
+
return false;
|
58 |
+
}
|
59 |
+
|
60 |
+
if ( ! isset( self::$transients[ $transient ] ) ) {
|
61 |
+
return false;
|
62 |
+
}
|
63 |
+
|
64 |
+
if ( ! isset( self::$transients[ $transient ]['value'] ) ) {
|
65 |
+
self::$transients[ $transient ]['value'] = get_transient( self::$transients[ $transient ]['name'] );
|
66 |
+
}
|
67 |
+
|
68 |
+
if ( is_null( $index ) ) {
|
69 |
+
return self::$transients[ $transient ]['value'];
|
70 |
+
}
|
71 |
+
|
72 |
+
if ( ! isset( self::$transients[ $transient ]['value'][ $index ] ) ) {
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
|
76 |
+
return apply_filters( 'yith_wcan_get_transient', self::$transients[ $transient ]['value'][ $index ], $transient, $index );
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Sets a specific value in a transient
|
81 |
+
*
|
82 |
+
* @param string $transient Transient name.
|
83 |
+
* @param mixed $value Value to set; could be the entire transient value, or value of a specific index of the transient, assuming it is an array.
|
84 |
+
* @param string $index Optional transient's index to set (assumes transient is an array).
|
85 |
+
* @param bool $now Whether to save transient immediately or allow system to do it at shutdown.
|
86 |
+
*
|
87 |
+
* @return bool|mixed False on failure, new value otherwise.
|
88 |
+
*/
|
89 |
+
public static function set( $transient, $value, $index = null, $now = false ) {
|
90 |
+
if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
|
91 |
+
return false;
|
92 |
+
}
|
93 |
+
|
94 |
+
if ( ! isset( self::$transients[ $transient ] ) ) {
|
95 |
+
return false;
|
96 |
+
}
|
97 |
+
|
98 |
+
if ( is_null( $index ) ) {
|
99 |
+
self::$transients[ $transient ]['value'] = $value;
|
100 |
+
} else {
|
101 |
+
self::$transients[ $transient ]['value'][ $index ] = $value;
|
102 |
+
}
|
103 |
+
|
104 |
+
if ( $now ) {
|
105 |
+
set_transient( self::$transients[ $transient ]['name'], self::$transients[ $transient ]['value'], self::$transients[ $transient ]['duration'] );
|
106 |
+
} else {
|
107 |
+
self::mark_for_update( $transient );
|
108 |
+
}
|
109 |
+
|
110 |
+
return $value;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Completely deletes a transient.
|
115 |
+
*
|
116 |
+
* @param string $transient Transient name.
|
117 |
+
* @param bool $now Whether to save transient immediately or allow system to do it at shutdown.
|
118 |
+
*
|
119 |
+
* @return bool False on failure; true otherwise.
|
120 |
+
*/
|
121 |
+
public static function delete( $transient, $now = false ) {
|
122 |
+
if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
|
123 |
+
return false;
|
124 |
+
}
|
125 |
+
|
126 |
+
if ( ! isset( self::$transients[ $transient ] ) ) {
|
127 |
+
return false;
|
128 |
+
}
|
129 |
+
|
130 |
+
if ( $now ) {
|
131 |
+
delete_transient( self::$transients[ $transient ]['name'] );
|
132 |
+
} else {
|
133 |
+
self::$transients[ $transient ]['value'] = false;
|
134 |
+
self::mark_for_update( $transient );
|
135 |
+
}
|
136 |
+
|
137 |
+
return true;
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Update transients at shutdown
|
142 |
+
*
|
143 |
+
* @return void
|
144 |
+
*/
|
145 |
+
public static function update_transients() {
|
146 |
+
if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
|
150 |
+
if ( empty( self::$need_update ) ) {
|
151 |
+
return;
|
152 |
+
}
|
153 |
+
|
154 |
+
foreach ( self::$need_update as $transient ) {
|
155 |
+
if ( ! isset( self::$transients[ $transient ] ) ) {
|
156 |
+
continue;
|
157 |
+
}
|
158 |
+
|
159 |
+
$value = self::$transients[ $transient ]['value'];
|
160 |
+
|
161 |
+
if ( ! $value ) {
|
162 |
+
delete_transient( self::$transients[ $transient ]['name'] );
|
163 |
+
} else {
|
164 |
+
set_transient( self::$transients[ $transient ]['name'], $value, self::$transients[ $transient ]['duration'] );
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
self::$need_update = array();
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Deletes all plugin transients
|
173 |
+
*
|
174 |
+
* @return void
|
175 |
+
*/
|
176 |
+
public static function delete_transients() {
|
177 |
+
// delete current version of the transients.
|
178 |
+
foreach ( self::$transients as $transient_options ) {
|
179 |
+
delete_transient( $transient_options['name'] );
|
180 |
+
}
|
181 |
+
|
182 |
+
// delete past versions of the transients.
|
183 |
+
self::delete_expired_transients();
|
184 |
+
|
185 |
+
delete_transient( 'yith_wcan_exclude_from_catalog_product_ids' );
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Deletes old version of the transients still in memory
|
190 |
+
*
|
191 |
+
* @return void
|
192 |
+
*/
|
193 |
+
public static function delete_expired_transients() {
|
194 |
+
global $wpdb;
|
195 |
+
|
196 |
+
$cache_version = WC_Cache_Helper::get_transient_version( 'product' );
|
197 |
+
$to_delete = array();
|
198 |
+
|
199 |
+
foreach ( self::$transients as $transient_options ) {
|
200 |
+
$to_delete[] = str_replace( $cache_version, '%', $transient_options['name'] );
|
201 |
+
}
|
202 |
+
|
203 |
+
$query = "DELETE FROM {$wpdb->options} WHERE 1=1";
|
204 |
+
$args = array();
|
205 |
+
|
206 |
+
$query .= ' AND ( ';
|
207 |
+
$first = true;
|
208 |
+
foreach ( $to_delete as $transient_name ) {
|
209 |
+
if ( ! $first ) {
|
210 |
+
$query .= ' OR ';
|
211 |
+
}
|
212 |
+
|
213 |
+
$args[] = "%{$transient_name}%";
|
214 |
+
|
215 |
+
$query .= 'option_name LIKE %s';
|
216 |
+
$first = false;
|
217 |
+
}
|
218 |
+
$query .= ')';
|
219 |
+
|
220 |
+
$query .= ' AND option_name NOT LIKE %s';
|
221 |
+
$args[] = "%{$cache_version}%";
|
222 |
+
|
223 |
+
$wpdb->query( $wpdb->prepare( $query, $args ) ); // phpcs:ignore WordPress.DB
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Init supported transients
|
228 |
+
*
|
229 |
+
* @return void
|
230 |
+
*/
|
231 |
+
protected static function init_transients() {
|
232 |
+
$cache_version = WC_Cache_Helper::get_transient_version( 'product' );
|
233 |
+
$language_postfix = self::get_language_postfix();
|
234 |
+
|
235 |
+
$transient_array = array();
|
236 |
+
$builtin_transients = array(
|
237 |
+
'queried_products',
|
238 |
+
'object_in_terms',
|
239 |
+
'products_instock',
|
240 |
+
);
|
241 |
+
|
242 |
+
foreach ( $builtin_transients as $transient ) {
|
243 |
+
$default_name = "yith_wcan_{$transient}_{$cache_version}{$language_postfix}";
|
244 |
+
|
245 |
+
$transient_array[ $transient ] = array(
|
246 |
+
'name' => apply_filters( "yith_wcan_{$transient}_name", $default_name ),
|
247 |
+
'duration' => apply_filters( "yith_wcan_{$transient}_duration", 30 * DAY_IN_SECONDS ),
|
248 |
+
);
|
249 |
+
}
|
250 |
+
|
251 |
+
// add legacy transients.
|
252 |
+
$transient_array['exclude_from_catalog_product_ids'] = array(
|
253 |
+
'name' => 'yith_wcan_exclude_from_catalog_product_ids',
|
254 |
+
'duration' => 30 * DAY_IN_SECONDS,
|
255 |
+
);
|
256 |
+
|
257 |
+
self::$transients = apply_filters( 'yith_wcan_cache_helper_transients', $transient_array );
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* Return postfix to be used in transient names, if a multi-language plugin is installed
|
262 |
+
*
|
263 |
+
* TODO: remove this method, and filter transient names in WPML compatibility class
|
264 |
+
*
|
265 |
+
* @return string
|
266 |
+
*/
|
267 |
+
protected static function get_language_postfix() {
|
268 |
+
$postfix = '';
|
269 |
+
$current_lang = apply_filters( 'wpml_current_language', null );
|
270 |
+
|
271 |
+
if ( ! empty( $current_lang ) ) {
|
272 |
+
$postfix = "_{$current_lang}";
|
273 |
+
}
|
274 |
+
|
275 |
+
return $postfix;
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Set a transient as requiring update
|
280 |
+
*
|
281 |
+
* @param string $transient Transient name.
|
282 |
+
*
|
283 |
+
* @eturn void
|
284 |
+
*/
|
285 |
+
protected static function mark_for_update( $transient ) {
|
286 |
+
if ( in_array( $transient, self::$need_update, true ) ) {
|
287 |
+
return;
|
288 |
+
}
|
289 |
+
|
290 |
+
self::$need_update[] = $transient;
|
291 |
+
}
|
292 |
+
}
|
293 |
+
}
|
294 |
+
|
295 |
+
YITH_WCAN_Cache_Helper::init();
|
@@ -5,7 +5,7 @@
|
|
5 |
* Defines a couple of static methods to allow easy access to Filter classes
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
@@ -30,7 +30,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Factory' ) ) {
|
|
30 |
$supported_types = self::get_supported_types();
|
31 |
$type_slugs = array_keys( $supported_types );
|
32 |
$default_type = current( $type_slugs );
|
33 |
-
$type = isset( $filter['type'] ) && in_array( $filter['type'], $type_slugs ) ? $filter['type'] : $default_type;
|
34 |
|
35 |
$classname = self::get_filter_classname( $type, $filter );
|
36 |
|
5 |
* Defines a couple of static methods to allow easy access to Filter classes
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
30 |
$supported_types = self::get_supported_types();
|
31 |
$type_slugs = array_keys( $supported_types );
|
32 |
$default_type = current( $type_slugs );
|
33 |
+
$type = isset( $filter['type'] ) && in_array( $filter['type'], $type_slugs, true ) ? $filter['type'] : $default_type;
|
34 |
|
35 |
$classname = self::get_filter_classname( $type, $filter );
|
36 |
|
@@ -6,7 +6,7 @@
|
|
6 |
* Subclasses may define methods specific to a certain type of filter, and output for the filter
|
7 |
*
|
8 |
* @author YITH
|
9 |
-
* @package YITH
|
10 |
* @version 4.0.0
|
11 |
*/
|
12 |
|
@@ -244,7 +244,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
244 |
public function get_formatted_taxonomy( $context = 'view' ) {
|
245 |
$formatted_taxonomy = $this->get_taxonomy( $context );
|
246 |
|
247 |
-
if ( in_array( $formatted_taxonomy, wc_get_attribute_taxonomy_names() ) ) {
|
248 |
$formatted_taxonomy = str_replace( 'pa_', 'filter_', $formatted_taxonomy );
|
249 |
}
|
250 |
|
@@ -379,8 +379,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
379 |
$terms = get_terms(
|
380 |
array_merge(
|
381 |
array(
|
382 |
-
'taxonomy'
|
383 |
-
'fields'
|
384 |
'hide_empty' => false,
|
385 |
),
|
386 |
$this->use_all_terms() ? array() : array(
|
@@ -400,8 +400,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
400 |
} else {
|
401 |
$term_ids = get_terms(
|
402 |
array(
|
403 |
-
'taxonomy'
|
404 |
-
'fields'
|
405 |
'hide_empty' => false,
|
406 |
)
|
407 |
);
|
@@ -410,7 +410,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
410 |
return array();
|
411 |
}
|
412 |
|
413 |
-
$terms
|
414 |
$default_term_options = $this->get_default_term_options();
|
415 |
|
416 |
foreach ( $term_ids as $term_id ) {
|
@@ -587,7 +587,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
587 |
public function is_hierarchical( $context = 'view' ) {
|
588 |
$hierarchical = $this->get_hierarchical( $context );
|
589 |
|
590 |
-
return in_array( $hierarchical, array( 'collapsed', 'expanded', 'open' ) );
|
591 |
}
|
592 |
|
593 |
/**
|
@@ -865,7 +865,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
865 |
* @return array Array of fields
|
866 |
*/
|
867 |
public static function get_fields() {
|
868 |
-
return include
|
869 |
}
|
870 |
|
871 |
/**
|
@@ -1005,7 +1005,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1005 |
'label',
|
1006 |
);
|
1007 |
|
1008 |
-
if ( ! in_array( $filter_design, $supported_designs ) ) {
|
1009 |
return;
|
1010 |
}
|
1011 |
|
@@ -1024,7 +1024,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1024 |
'hide',
|
1025 |
);
|
1026 |
|
1027 |
-
if ( ! in_array( $label_position, $supported_positions ) ) {
|
1028 |
return;
|
1029 |
}
|
1030 |
|
@@ -1073,7 +1073,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1073 |
'opened',
|
1074 |
);
|
1075 |
|
1076 |
-
if ( ! in_array( $toggle_style, $supported_styles ) ) {
|
1077 |
return;
|
1078 |
}
|
1079 |
|
@@ -1094,7 +1094,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1094 |
'include',
|
1095 |
);
|
1096 |
|
1097 |
-
if ( ! in_array( $order_by, $supported_orders ) ) {
|
1098 |
return;
|
1099 |
}
|
1100 |
|
@@ -1112,7 +1112,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1112 |
'desc',
|
1113 |
);
|
1114 |
|
1115 |
-
if ( ! in_array( $order, $supported_orders ) ) {
|
1116 |
return;
|
1117 |
}
|
1118 |
|
@@ -1144,7 +1144,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1144 |
'open',
|
1145 |
);
|
1146 |
|
1147 |
-
if ( ! in_array( $hierarchical, $supported_options ) ) {
|
1148 |
return;
|
1149 |
}
|
1150 |
|
@@ -1173,7 +1173,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1173 |
'or',
|
1174 |
);
|
1175 |
|
1176 |
-
if ( ! in_array( $relation, $supported_relations ) ) {
|
1177 |
return;
|
1178 |
}
|
1179 |
|
@@ -1191,7 +1191,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1191 |
'or',
|
1192 |
);
|
1193 |
|
1194 |
-
if ( ! in_array( $adoptive, $supported_adoptive ) ) {
|
1195 |
return;
|
1196 |
}
|
1197 |
|
@@ -1240,7 +1240,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1240 |
* @param string $design Slider/Fields or both; if none of them, fallbacks to slider.
|
1241 |
*/
|
1242 |
public function set_price_slider_design( $design ) {
|
1243 |
-
if ( ! in_array( $design, array( 'slider', 'fields', 'both' ) ) ) {
|
1244 |
$design = 'slider';
|
1245 |
}
|
1246 |
|
@@ -1387,7 +1387,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1387 |
return '';
|
1388 |
}
|
1389 |
|
1390 |
-
$title_tag
|
1391 |
$additional_classes = array( 'filter-title' );
|
1392 |
|
1393 |
if ( $this->is_collapsable() ) {
|
@@ -1414,7 +1414,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
|
|
1414 |
$atts = array(
|
1415 |
'preset' => $this->get_preset(),
|
1416 |
'filter' => $this,
|
1417 |
-
'count'
|
1418 |
);
|
1419 |
|
1420 |
return yith_wcan_get_template( 'filters/global/count.php', $atts, false );
|
6 |
* Subclasses may define methods specific to a certain type of filter, and output for the filter
|
7 |
*
|
8 |
* @author YITH
|
9 |
+
* @package YITH\AjaxProductFilter\Classes
|
10 |
* @version 4.0.0
|
11 |
*/
|
12 |
|
244 |
public function get_formatted_taxonomy( $context = 'view' ) {
|
245 |
$formatted_taxonomy = $this->get_taxonomy( $context );
|
246 |
|
247 |
+
if ( in_array( $formatted_taxonomy, wc_get_attribute_taxonomy_names(), true ) ) {
|
248 |
$formatted_taxonomy = str_replace( 'pa_', 'filter_', $formatted_taxonomy );
|
249 |
}
|
250 |
|
379 |
$terms = get_terms(
|
380 |
array_merge(
|
381 |
array(
|
382 |
+
'taxonomy' => $taxonomy,
|
383 |
+
'fields' => $fields,
|
384 |
'hide_empty' => false,
|
385 |
),
|
386 |
$this->use_all_terms() ? array() : array(
|
400 |
} else {
|
401 |
$term_ids = get_terms(
|
402 |
array(
|
403 |
+
'taxonomy' => $taxonomy,
|
404 |
+
'fields' => 'ids',
|
405 |
'hide_empty' => false,
|
406 |
)
|
407 |
);
|
410 |
return array();
|
411 |
}
|
412 |
|
413 |
+
$terms = array();
|
414 |
$default_term_options = $this->get_default_term_options();
|
415 |
|
416 |
foreach ( $term_ids as $term_id ) {
|
587 |
public function is_hierarchical( $context = 'view' ) {
|
588 |
$hierarchical = $this->get_hierarchical( $context );
|
589 |
|
590 |
+
return in_array( $hierarchical, array( 'collapsed', 'expanded', 'open' ), true );
|
591 |
}
|
592 |
|
593 |
/**
|
865 |
* @return array Array of fields
|
866 |
*/
|
867 |
public static function get_fields() {
|
868 |
+
return include YITH_WCAN_DIR . 'plugin-options/filter-options.php';
|
869 |
}
|
870 |
|
871 |
/**
|
1005 |
'label',
|
1006 |
);
|
1007 |
|
1008 |
+
if ( ! in_array( $filter_design, $supported_designs, true ) ) {
|
1009 |
return;
|
1010 |
}
|
1011 |
|
1024 |
'hide',
|
1025 |
);
|
1026 |
|
1027 |
+
if ( ! in_array( $label_position, $supported_positions, true ) ) {
|
1028 |
return;
|
1029 |
}
|
1030 |
|
1073 |
'opened',
|
1074 |
);
|
1075 |
|
1076 |
+
if ( ! in_array( $toggle_style, $supported_styles, true ) ) {
|
1077 |
return;
|
1078 |
}
|
1079 |
|
1094 |
'include',
|
1095 |
);
|
1096 |
|
1097 |
+
if ( ! in_array( $order_by, $supported_orders, true ) ) {
|
1098 |
return;
|
1099 |
}
|
1100 |
|
1112 |
'desc',
|
1113 |
);
|
1114 |
|
1115 |
+
if ( ! in_array( $order, $supported_orders, true ) ) {
|
1116 |
return;
|
1117 |
}
|
1118 |
|
1144 |
'open',
|
1145 |
);
|
1146 |
|
1147 |
+
if ( ! in_array( $hierarchical, $supported_options, true ) ) {
|
1148 |
return;
|
1149 |
}
|
1150 |
|
1173 |
'or',
|
1174 |
);
|
1175 |
|
1176 |
+
if ( ! in_array( $relation, $supported_relations, true ) ) {
|
1177 |
return;
|
1178 |
}
|
1179 |
|
1191 |
'or',
|
1192 |
);
|
1193 |
|
1194 |
+
if ( ! in_array( $adoptive, $supported_adoptive, true ) ) {
|
1195 |
return;
|
1196 |
}
|
1197 |
|
1240 |
* @param string $design Slider/Fields or both; if none of them, fallbacks to slider.
|
1241 |
*/
|
1242 |
public function set_price_slider_design( $design ) {
|
1243 |
+
if ( ! in_array( $design, array( 'slider', 'fields', 'both' ), true ) ) {
|
1244 |
$design = 'slider';
|
1245 |
}
|
1246 |
|
1387 |
return '';
|
1388 |
}
|
1389 |
|
1390 |
+
$title_tag = apply_filters( 'yith_wcan_filter_title_tag', 'h4', $this );
|
1391 |
$additional_classes = array( 'filter-title' );
|
1392 |
|
1393 |
if ( $this->is_collapsable() ) {
|
1414 |
$atts = array(
|
1415 |
'preset' => $this->get_preset(),
|
1416 |
'filter' => $this,
|
1417 |
+
'count' => $count,
|
1418 |
);
|
1419 |
|
1420 |
return yith_wcan_get_template( 'filters/global/count.php', $atts, false );
|
@@ -3,7 +3,7 @@
|
|
3 |
* Frontend class
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
-
* @package YITH
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
@@ -70,7 +70,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
70 |
*
|
71 |
* @var YITH_WCAN_Query
|
72 |
*/
|
73 |
-
protected $
|
74 |
|
75 |
/**
|
76 |
* Constructor
|
@@ -80,7 +80,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
80 |
*/
|
81 |
public function __construct() {
|
82 |
// new query object.
|
83 |
-
$this->
|
84 |
|
85 |
// Legacy query methods.
|
86 |
add_filter( 'woocommerce_layered_nav_link', 'yit_plus_character_hack', 99 );
|
@@ -102,6 +102,17 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
102 |
|
103 |
// YITH WCAN Loaded.
|
104 |
do_action( 'yith_wcan_loaded' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
/* === LEGACY QUERY METHODS === */
|
@@ -112,7 +123,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
112 |
* @return YITH_WCAN_Query
|
113 |
*/
|
114 |
public function get_query() {
|
115 |
-
return $this->
|
116 |
}
|
117 |
|
118 |
/**
|
@@ -150,7 +161,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
150 |
$filtered_posts = array();
|
151 |
$queried_post_ids = array();
|
152 |
|
153 |
-
$
|
154 |
'basel',
|
155 |
'ux-shop',
|
156 |
'aardvark',
|
@@ -158,26 +169,26 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
158 |
|
159 |
$wp_theme = wp_get_theme();
|
160 |
$template_name = $wp_theme->get_template();
|
|
|
161 |
|
162 |
/**
|
163 |
* Support for Flatsome Theme lower then 3.6.0
|
164 |
*/
|
165 |
-
if ( 'flatsome' === $template_name && version_compare( '3.6.0', $
|
166 |
-
$
|
167 |
}
|
168 |
|
169 |
-
$
|
170 |
-
$
|
171 |
|
172 |
-
if ( $
|
173 |
add_filter( 'yith_wcan_skip_layered_nav_query', '__return_true' );
|
174 |
}
|
175 |
|
176 |
-
$query_filtered_posts = $this->layered_nav_query();
|
177 |
|
178 |
foreach ( $posts as $post ) {
|
179 |
-
|
180 |
-
if ( in_array( $post->ID, $query_filtered_posts ) ) {
|
181 |
$filtered_posts[] = $post;
|
182 |
$queried_post_ids[] = $post->ID;
|
183 |
}
|
@@ -203,7 +214,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
203 |
'post_type' => 'product',
|
204 |
'numberposts' => - 1,
|
205 |
'post_status' => 'publish',
|
206 |
-
'meta_query' => is_object( $current_wp_query ) ? $current_wp_query->meta_query : array(),
|
207 |
'fields' => 'ids',
|
208 |
'no_found_rows' => true,
|
209 |
'update_post_meta_cache' => false,
|
@@ -214,7 +225,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
214 |
)
|
215 |
);
|
216 |
|
217 |
-
$hide_out_of_stock_items = apply_filters( 'yith_wcan_hide_out_of_stock_items', 'yes'
|
218 |
|
219 |
if ( $hide_out_of_stock_items ) {
|
220 |
$unfiltered_args['meta_query'][] = array(
|
@@ -265,7 +276,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
265 |
$queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
|
266 |
$is_product_taxonomy = false;
|
267 |
|
268 |
-
if( $queried_object ){
|
269 |
$is_product_taxonomy = array(
|
270 |
'taxonomy' => $queried_object->taxonomy,
|
271 |
'terms' => $queried_object->slug,
|
@@ -299,7 +310,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
299 |
'fields' => 'ids',
|
300 |
'no_found_rows' => true,
|
301 |
'suppress_filters' => true,
|
302 |
-
'tax_query' => array(
|
303 |
array(
|
304 |
'taxonomy' => $attribute,
|
305 |
'terms' => $value,
|
@@ -353,7 +364,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
353 |
$this->layered_nav_post__in = $results;
|
354 |
$this->layered_nav_post__in[] = 0;
|
355 |
|
356 |
-
if ( count( $filtered_posts )
|
357 |
$filtered_posts = $results;
|
358 |
$filtered_posts[] = 0;
|
359 |
} else {
|
@@ -370,17 +381,20 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
370 |
'fields' => 'ids',
|
371 |
'no_found_rows' => true,
|
372 |
'suppress_filters' => true,
|
373 |
-
'tax_query' => array(),
|
374 |
-
'meta_query' => array(),
|
375 |
);
|
376 |
|
377 |
if ( $is_product_taxonomy ) {
|
378 |
$args['tax_query'][] = $is_product_taxonomy;
|
379 |
}
|
380 |
|
381 |
-
|
382 |
-
|
383 |
-
|
|
|
|
|
|
|
384 |
$args['meta_query'][] = array(
|
385 |
'key' => '_price',
|
386 |
'value' => array( $min_price, $max_price ),
|
@@ -406,7 +420,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
406 |
$this->layered_nav_post__in = $post_ids;
|
407 |
$this->layered_nav_post__in[] = 0;
|
408 |
|
409 |
-
if ( count( $filtered_posts )
|
410 |
$filtered_posts = $post_ids;
|
411 |
$filtered_posts[] = 0;
|
412 |
} else {
|
@@ -445,13 +459,13 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
445 |
// frontend scripts.
|
446 |
wp_register_script( 'jseldom', YITH_WCAN_URL . 'assets/js/jquery.jseldom' . $suffix . '.js', array( 'jquery' ), '0.0.2', true );
|
447 |
wp_enqueue_script( 'yith-wcan-script', YITH_WCAN_URL . 'assets/js/yith-wcan-frontend' . $suffix . '.js', array( 'jquery', 'jseldom' ), YITH_WCAN_VERSION, true );
|
448 |
-
wp_localize_script( 'yith-wcan-script', 'yith_wcan', apply_filters( '
|
449 |
}
|
450 |
|
451 |
wp_enqueue_style( 'yith-wcan-shortcodes' );
|
452 |
-
wp_localize_script( 'yith-wcan-shortcodes', 'yith_wcan_shortcodes', $this->
|
453 |
|
454 |
-
$custom_css = $this->
|
455 |
|
456 |
if ( ! empty( $custom_css ) ) {
|
457 |
wp_add_inline_style( 'yith-wcan-shortcodes', $custom_css );
|
@@ -483,8 +497,8 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
483 |
* @return void
|
484 |
*/
|
485 |
public function add_meta() {
|
486 |
-
$enable_seo
|
487 |
-
$meta_options
|
488 |
|
489 |
if ( $enable_seo && 'disabled' !== $meta_options && ( YITH_WCAN_Query()->is_filtered() || yith_wcan_can_be_displayed() && yit_is_filtered_uri() ) ) {
|
490 |
$content = str_replace( '-', ', ', $meta_options );
|
@@ -499,7 +513,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
499 |
*
|
500 |
* @return array Array of parameters.
|
501 |
*/
|
502 |
-
protected function
|
503 |
$current_theme = function_exists( 'wp_get_theme' ) ? wp_get_theme() : null;
|
504 |
$current_template = $current_theme instanceof WP_Theme ? $current_theme->get_template() : '';
|
505 |
|
@@ -517,7 +531,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
517 |
'is_mobile' => wp_is_mobile(),
|
518 |
'scroll_top' => yith_wcan_get_option( 'yith_wcan_ajax_scroll_top_class', '.yit-wcan-container' ),
|
519 |
'scroll_top_mode' => yith_wcan_get_option( 'yith_wcan_scroll_top_mode', 'mobile' ),
|
520 |
-
'change_browser_url' => 'yes'
|
521 |
/* === Avada Theme Support === */
|
522 |
'avada' => array(
|
523 |
'is_enabled' => class_exists( 'Avada' ),
|
@@ -542,12 +556,12 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
542 |
* @param string $context What the value is for. Valid values are view and edit.
|
543 |
* @return array Array of parameters.
|
544 |
*/
|
545 |
-
protected function
|
546 |
$params = array(
|
547 |
'query_param' => YITH_WCAN_Query()->get_query_param(),
|
548 |
'supported_taxonomies' => array_keys( YITH_WCAN_Query()->get_supported_taxonomies() ),
|
549 |
'content' => apply_filters( 'yith_wcan_content_selector', '#content' ),
|
550 |
-
'change_browser_url' => in_array( yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ), array( 'yes', 'custom' ) ),
|
551 |
'instant_filters' => true,
|
552 |
'ajax_filters' => true,
|
553 |
'show_clear_filter' => false,
|
@@ -555,11 +569,12 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
555 |
'scroll_target' => false,
|
556 |
'modal_on_mobile' => false,
|
557 |
'session_param' => false,
|
558 |
-
'
|
559 |
-
'terms_per_page' => apply_filters( 'yith_wcan_dropdown_terms_per_page', 10 ),
|
560 |
'loader' => false,
|
|
|
561 |
'mobile_media_query' => 991,
|
562 |
-
'
|
|
|
563 |
'currency_format' => apply_filters(
|
564 |
'yith_wcan_shortcodes_script_currency_format',
|
565 |
array(
|
@@ -573,15 +588,15 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
573 |
'labels' => apply_filters(
|
574 |
'yith_wcan_shortcodes_script_labels',
|
575 |
array(
|
576 |
-
'empty_option'
|
577 |
-
'search_placeholder'
|
578 |
-
'no_items'
|
579 |
// translators: 1. Number of items to show.
|
580 |
-
'show_more'
|
581 |
-
'close'
|
582 |
-
'save'
|
583 |
-
'show_results'
|
584 |
-
'clear_selection'
|
585 |
'clear_all_selections' => _x( 'Clear All', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
|
586 |
)
|
587 |
),
|
@@ -599,13 +614,13 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
599 |
*
|
600 |
* @return bool|string Custom CSS template, ro false when no content should be output.
|
601 |
*/
|
602 |
-
protected function
|
603 |
$default_accent_color = apply_filters( 'yith_wcan_default_accent_color', '#A7144C' );
|
604 |
|
605 |
$variables = array();
|
606 |
$options = array(
|
607 |
-
'filters_colors'
|
608 |
-
'default'
|
609 |
'titles' => '#434343',
|
610 |
'background' => '#FFFFFF',
|
611 |
'accent' => $default_accent_color,
|
@@ -624,19 +639,19 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
624 |
},
|
625 |
),
|
626 |
'color_swatches_style' => array(
|
627 |
-
'default'
|
628 |
'variable' => 'color_swatches_border_radius',
|
629 |
'callback' => function( $raw_value ) {
|
630 |
return 'round' === $raw_value ? '100%' : '5px';
|
631 |
},
|
632 |
),
|
633 |
-
'color_swatches_size'
|
634 |
-
'default'
|
635 |
'callback' => function( $raw_value ) {
|
636 |
return $raw_value . 'px';
|
637 |
},
|
638 |
),
|
639 |
-
'labels_style'
|
640 |
'default' => array(
|
641 |
'background' => '#FFFFFF',
|
642 |
'background_hover' => $default_accent_color,
|
@@ -646,10 +661,10 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
646 |
'text_active' => '#FFFFFF',
|
647 |
),
|
648 |
),
|
649 |
-
'anchors_style'
|
650 |
'default' => array(
|
651 |
-
'text'
|
652 |
-
'text_hover'
|
653 |
'text_active' => $default_accent_color,
|
654 |
),
|
655 |
),
|
@@ -704,7 +719,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
704 |
* @return void
|
705 |
*/
|
706 |
public function add_reset_button() {
|
707 |
-
$show_reset_button
|
708 |
$reset_button_position = yith_wcan_get_option( 'yith_wcan_reset_button_position', 'after_filters' );
|
709 |
|
710 |
if ( ! $show_reset_button ) {
|
@@ -804,18 +819,18 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
|
|
804 |
'yith_wcan_before_product_locations',
|
805 |
array(
|
806 |
// before shop.
|
807 |
-
'before_shop'
|
808 |
-
'hook'
|
809 |
'priority' => 10 + $offset,
|
810 |
),
|
811 |
// before products shortcode.
|
812 |
'shortcode_before_products' => array(
|
813 |
-
'hook'
|
814 |
'priority' => 10 + $offset,
|
815 |
),
|
816 |
// before no_products template.
|
817 |
-
'no_products_found'
|
818 |
-
'hook'
|
819 |
'priority' => 5 + $offset,
|
820 |
),
|
821 |
),
|
3 |
* Frontend class
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
+
* @package YITH\AjaxProductFilter\Classes
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
70 |
*
|
71 |
* @var YITH_WCAN_Query
|
72 |
*/
|
73 |
+
protected $query = null;
|
74 |
|
75 |
/**
|
76 |
* Constructor
|
80 |
*/
|
81 |
public function __construct() {
|
82 |
// new query object.
|
83 |
+
$this->query = YITH_WCAN_Query();
|
84 |
|
85 |
// Legacy query methods.
|
86 |
add_filter( 'woocommerce_layered_nav_link', 'yit_plus_character_hack', 99 );
|
102 |
|
103 |
// YITH WCAN Loaded.
|
104 |
do_action( 'yith_wcan_loaded' );
|
105 |
+
|
106 |
+
// Deprecated filters.
|
107 |
+
$deprecated_filters_map = array(
|
108 |
+
'yith-wcan-frontend-args' => array(
|
109 |
+
'since' => '4.1.1',
|
110 |
+
'use' => 'yith_wcan_frontend_args',
|
111 |
+
'params' => 1,
|
112 |
+
),
|
113 |
+
);
|
114 |
+
|
115 |
+
yith_wcan_deprecated_filter( $deprecated_filters_map );
|
116 |
}
|
117 |
|
118 |
/* === LEGACY QUERY METHODS === */
|
123 |
* @return YITH_WCAN_Query
|
124 |
*/
|
125 |
public function get_query() {
|
126 |
+
return $this->query;
|
127 |
}
|
128 |
|
129 |
/**
|
161 |
$filtered_posts = array();
|
162 |
$queried_post_ids = array();
|
163 |
|
164 |
+
$special_handling_themes = array(
|
165 |
'basel',
|
166 |
'ux-shop',
|
167 |
'aardvark',
|
169 |
|
170 |
$wp_theme = wp_get_theme();
|
171 |
$template_name = $wp_theme->get_template();
|
172 |
+
$theme_version = $wp_theme->Version; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
173 |
|
174 |
/**
|
175 |
* Support for Flatsome Theme lower then 3.6.0
|
176 |
*/
|
177 |
+
if ( 'flatsome' === $template_name && version_compare( '3.6.0', $theme_version, '<' ) ) {
|
178 |
+
$special_handling_themes[] = 'flatsome';
|
179 |
}
|
180 |
|
181 |
+
$needs_special_qtranslatex_handling = class_exists( 'QTX_Translator' ) && defined( 'YIT_CORE_VERSION' ) && '1.0.0' === YIT_CORE_VERSION;
|
182 |
+
$is_special_handling_theme = in_array( $template_name, $special_handling_themes, true );
|
183 |
|
184 |
+
if ( $needs_special_qtranslatex_handling || $is_special_handling_theme || class_exists( 'SiteOrigin_Panels' ) ) {
|
185 |
add_filter( 'yith_wcan_skip_layered_nav_query', '__return_true' );
|
186 |
}
|
187 |
|
188 |
+
$query_filtered_posts = array_map( 'intval', $this->layered_nav_query() );
|
189 |
|
190 |
foreach ( $posts as $post ) {
|
191 |
+
if ( in_array( $post->ID, $query_filtered_posts, true ) ) {
|
|
|
192 |
$filtered_posts[] = $post;
|
193 |
$queried_post_ids[] = $post->ID;
|
194 |
}
|
214 |
'post_type' => 'product',
|
215 |
'numberposts' => - 1,
|
216 |
'post_status' => 'publish',
|
217 |
+
'meta_query' => is_object( $current_wp_query ) ? $current_wp_query->meta_query : array(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
218 |
'fields' => 'ids',
|
219 |
'no_found_rows' => true,
|
220 |
'update_post_meta_cache' => false,
|
225 |
)
|
226 |
);
|
227 |
|
228 |
+
$hide_out_of_stock_items = apply_filters( 'yith_wcan_hide_out_of_stock_items', 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ? true : false );
|
229 |
|
230 |
if ( $hide_out_of_stock_items ) {
|
231 |
$unfiltered_args['meta_query'][] = array(
|
276 |
$queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
|
277 |
$is_product_taxonomy = false;
|
278 |
|
279 |
+
if ( $queried_object ) {
|
280 |
$is_product_taxonomy = array(
|
281 |
'taxonomy' => $queried_object->taxonomy,
|
282 |
'terms' => $queried_object->slug,
|
310 |
'fields' => 'ids',
|
311 |
'no_found_rows' => true,
|
312 |
'suppress_filters' => true,
|
313 |
+
'tax_query' => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
314 |
array(
|
315 |
'taxonomy' => $attribute,
|
316 |
'terms' => $value,
|
364 |
$this->layered_nav_post__in = $results;
|
365 |
$this->layered_nav_post__in[] = 0;
|
366 |
|
367 |
+
if ( ! count( $filtered_posts ) ) {
|
368 |
$filtered_posts = $results;
|
369 |
$filtered_posts[] = 0;
|
370 |
} else {
|
381 |
'fields' => 'ids',
|
382 |
'no_found_rows' => true,
|
383 |
'suppress_filters' => true,
|
384 |
+
'tax_query' => array(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
385 |
+
'meta_query' => array(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
386 |
);
|
387 |
|
388 |
if ( $is_product_taxonomy ) {
|
389 |
$args['tax_query'][] = $is_product_taxonomy;
|
390 |
}
|
391 |
|
392 |
+
// phpcs:disable WordPress.Security.NonceVerification.Recommended
|
393 |
+
$min_price = isset( $_GET['min_price'] ) ? (float) $_GET['min_price'] : false;
|
394 |
+
$max_price = isset( $_GET['max_price'] ) ? (float) $_GET['max_price'] : false;
|
395 |
+
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
396 |
+
|
397 |
+
if ( $min_price && $max_price ) {
|
398 |
$args['meta_query'][] = array(
|
399 |
'key' => '_price',
|
400 |
'value' => array( $min_price, $max_price ),
|
420 |
$this->layered_nav_post__in = $post_ids;
|
421 |
$this->layered_nav_post__in[] = 0;
|
422 |
|
423 |
+
if ( ! count( $filtered_posts ) ) {
|
424 |
$filtered_posts = $post_ids;
|
425 |
$filtered_posts[] = 0;
|
426 |
} else {
|
459 |
// frontend scripts.
|
460 |
wp_register_script( 'jseldom', YITH_WCAN_URL . 'assets/js/jquery.jseldom' . $suffix . '.js', array( 'jquery' ), '0.0.2', true );
|
461 |
wp_enqueue_script( 'yith-wcan-script', YITH_WCAN_URL . 'assets/js/yith-wcan-frontend' . $suffix . '.js', array( 'jquery', 'jseldom' ), YITH_WCAN_VERSION, true );
|
462 |
+
wp_localize_script( 'yith-wcan-script', 'yith_wcan', apply_filters( 'yith_wcan_frontend_args', $this->get_main_localize() ) );
|
463 |
}
|
464 |
|
465 |
wp_enqueue_style( 'yith-wcan-shortcodes' );
|
466 |
+
wp_localize_script( 'yith-wcan-shortcodes', 'yith_wcan_shortcodes', $this->get_shortcodes_localize() );
|
467 |
|
468 |
+
$custom_css = $this->build_custom_css();
|
469 |
|
470 |
if ( ! empty( $custom_css ) ) {
|
471 |
wp_add_inline_style( 'yith-wcan-shortcodes', $custom_css );
|
497 |
* @return void
|
498 |
*/
|
499 |
public function add_meta() {
|
500 |
+
$enable_seo = 'yes' === yith_wcan_get_option( 'yith_wcan_enable_seo' );
|
501 |
+
$meta_options = yith_wcan_get_option( 'yith_wcan_seo_value', 'noindex-follow' );
|
502 |
|
503 |
if ( $enable_seo && 'disabled' !== $meta_options && ( YITH_WCAN_Query()->is_filtered() || yith_wcan_can_be_displayed() && yit_is_filtered_uri() ) ) {
|
504 |
$content = str_replace( '-', ', ', $meta_options );
|
513 |
*
|
514 |
* @return array Array of parameters.
|
515 |
*/
|
516 |
+
protected function get_main_localize() {
|
517 |
$current_theme = function_exists( 'wp_get_theme' ) ? wp_get_theme() : null;
|
518 |
$current_template = $current_theme instanceof WP_Theme ? $current_theme->get_template() : '';
|
519 |
|
531 |
'is_mobile' => wp_is_mobile(),
|
532 |
'scroll_top' => yith_wcan_get_option( 'yith_wcan_ajax_scroll_top_class', '.yit-wcan-container' ),
|
533 |
'scroll_top_mode' => yith_wcan_get_option( 'yith_wcan_scroll_top_mode', 'mobile' ),
|
534 |
+
'change_browser_url' => 'yes' === yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ) ? true : false,
|
535 |
/* === Avada Theme Support === */
|
536 |
'avada' => array(
|
537 |
'is_enabled' => class_exists( 'Avada' ),
|
556 |
* @param string $context What the value is for. Valid values are view and edit.
|
557 |
* @return array Array of parameters.
|
558 |
*/
|
559 |
+
protected function get_shortcodes_localize( $context = 'view' ) {
|
560 |
$params = array(
|
561 |
'query_param' => YITH_WCAN_Query()->get_query_param(),
|
562 |
'supported_taxonomies' => array_keys( YITH_WCAN_Query()->get_supported_taxonomies() ),
|
563 |
'content' => apply_filters( 'yith_wcan_content_selector', '#content' ),
|
564 |
+
'change_browser_url' => in_array( yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ), array( 'yes', 'custom' ), true ),
|
565 |
'instant_filters' => true,
|
566 |
'ajax_filters' => true,
|
567 |
'show_clear_filter' => false,
|
569 |
'scroll_target' => false,
|
570 |
'modal_on_mobile' => false,
|
571 |
'session_param' => false,
|
572 |
+
'show_current_children' => false,
|
|
|
573 |
'loader' => false,
|
574 |
+
'toggles_open_on_modal' => false,
|
575 |
'mobile_media_query' => 991,
|
576 |
+
'base_url' => $this->get_base_url( is_shop() ? yit_get_woocommerce_layered_nav_link() : '' ),
|
577 |
+
'terms_per_page' => apply_filters( 'yith_wcan_dropdown_terms_per_page', 10 ),
|
578 |
'currency_format' => apply_filters(
|
579 |
'yith_wcan_shortcodes_script_currency_format',
|
580 |
array(
|
588 |
'labels' => apply_filters(
|
589 |
'yith_wcan_shortcodes_script_labels',
|
590 |
array(
|
591 |
+
'empty_option' => _x( 'All', '[FRONTEND] "All" label shown when no term is selected', 'yith-woocommerce-ajax-navigation' ),
|
592 |
+
'search_placeholder' => _x( 'Search...', '[FRONTEND] Search placeholder shown in terms dropdown', 'yith-woocommerce-ajax-navigation' ),
|
593 |
+
'no_items' => _x( 'No item found', '[FRONTEND] Empty items list in the dropdown', 'yith-woocommerce-ajax-navigation' ),
|
594 |
// translators: 1. Number of items to show.
|
595 |
+
'show_more' => _x( 'Show %d more', '[FRONTEND] Show more link on terms dropdown', 'yith-woocommerce-ajax-navigation' ),
|
596 |
+
'close' => _x( 'Close', '[FRONTEND] Alt text for modal close button on mobile', 'yith-woocommerce-ajax-navigation' ),
|
597 |
+
'save' => _x( 'Save', '[FRONTEND] Label for filter button, on horizontal layout', 'yith-woocommerce-ajax-navigation' ),
|
598 |
+
'show_results' => _x( 'Show results', '[FRONTEND] Label for filter button, on mobile modal', 'yith-woocommerce-ajax-navigation' ),
|
599 |
+
'clear_selection' => _x( 'Clear', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
|
600 |
'clear_all_selections' => _x( 'Clear All', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
|
601 |
)
|
602 |
),
|
614 |
*
|
615 |
* @return bool|string Custom CSS template, ro false when no content should be output.
|
616 |
*/
|
617 |
+
protected function build_custom_css() {
|
618 |
$default_accent_color = apply_filters( 'yith_wcan_default_accent_color', '#A7144C' );
|
619 |
|
620 |
$variables = array();
|
621 |
$options = array(
|
622 |
+
'filters_colors' => array(
|
623 |
+
'default' => array(
|
624 |
'titles' => '#434343',
|
625 |
'background' => '#FFFFFF',
|
626 |
'accent' => $default_accent_color,
|
639 |
},
|
640 |
),
|
641 |
'color_swatches_style' => array(
|
642 |
+
'default' => 'round',
|
643 |
'variable' => 'color_swatches_border_radius',
|
644 |
'callback' => function( $raw_value ) {
|
645 |
return 'round' === $raw_value ? '100%' : '5px';
|
646 |
},
|
647 |
),
|
648 |
+
'color_swatches_size' => array(
|
649 |
+
'default' => '30',
|
650 |
'callback' => function( $raw_value ) {
|
651 |
return $raw_value . 'px';
|
652 |
},
|
653 |
),
|
654 |
+
'labels_style' => array(
|
655 |
'default' => array(
|
656 |
'background' => '#FFFFFF',
|
657 |
'background_hover' => $default_accent_color,
|
661 |
'text_active' => '#FFFFFF',
|
662 |
),
|
663 |
),
|
664 |
+
'anchors_style' => array(
|
665 |
'default' => array(
|
666 |
+
'text' => '#434343',
|
667 |
+
'text_hover' => $default_accent_color,
|
668 |
'text_active' => $default_accent_color,
|
669 |
),
|
670 |
),
|
719 |
* @return void
|
720 |
*/
|
721 |
public function add_reset_button() {
|
722 |
+
$show_reset_button = 'yes' === yith_wcan_get_option( 'yith_wcan_show_reset', 'yes' );
|
723 |
$reset_button_position = yith_wcan_get_option( 'yith_wcan_reset_button_position', 'after_filters' );
|
724 |
|
725 |
if ( ! $show_reset_button ) {
|
819 |
'yith_wcan_before_product_locations',
|
820 |
array(
|
821 |
// before shop.
|
822 |
+
'before_shop' => array(
|
823 |
+
'hook' => 'woocommerce_before_shop_loop',
|
824 |
'priority' => 10 + $offset,
|
825 |
),
|
826 |
// before products shortcode.
|
827 |
'shortcode_before_products' => array(
|
828 |
+
'hook' => 'woocommerce_shortcode_before_products_loop',
|
829 |
'priority' => 10 + $offset,
|
830 |
),
|
831 |
// before no_products template.
|
832 |
+
'no_products_found' => array(
|
833 |
+
'hook' => 'woocommerce_no_products_found',
|
834 |
'priority' => 5 + $offset,
|
835 |
),
|
836 |
),
|
@@ -3,7 +3,7 @@
|
|
3 |
* Manage install, and performs all post update operations
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -31,14 +31,14 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
31 |
*
|
32 |
* @var string
|
33 |
*/
|
34 |
-
protected static $
|
35 |
|
36 |
/**
|
37 |
* Default preset slug
|
38 |
*
|
39 |
* @var string
|
40 |
*/
|
41 |
-
protected static $
|
42 |
|
43 |
/**
|
44 |
* Hooks methods required to install/update plugin
|
@@ -57,9 +57,9 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
57 |
* @return void
|
58 |
*/
|
59 |
public static function check_version() {
|
60 |
-
self::$
|
61 |
|
62 |
-
if ( version_compare( self::$
|
63 |
self::update();
|
64 |
do_action( 'yith_wcan_updated' );
|
65 |
}
|
@@ -91,9 +91,9 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
91 |
|
92 |
$new_preset = new YITH_WCAN_Preset();
|
93 |
|
94 |
-
$new_preset->set_slug( self::$
|
95 |
$new_preset->set_title( _x( 'Default preset', '[ADMIN] Name of default preset that is installed with the plugin', 'yith-woocommerce-ajax-navigation' ) );
|
96 |
-
$new_preset->set_filters( self::
|
97 |
$new_preset->save();
|
98 |
|
99 |
update_option( 'yith_wcan_default_preset_created', true );
|
@@ -122,8 +122,8 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
122 |
*/
|
123 |
public static function maybe_update_options() {
|
124 |
// do incremental upgrade.
|
125 |
-
version_compare( self::$
|
126 |
-
version_compare( self::$
|
127 |
|
128 |
// space for future revisions.
|
129 |
|
@@ -145,7 +145,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
145 |
* @return bool|YITH_WCAN_Preset
|
146 |
*/
|
147 |
public static function get_default_preset() {
|
148 |
-
return YITH_WCAN_Preset_Factory::get_preset( self::$
|
149 |
}
|
150 |
|
151 |
/**
|
@@ -178,7 +178,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
178 |
* @return void
|
179 |
*/
|
180 |
public static function maybe_flush_rules() {
|
181 |
-
version_compare( self::$
|
182 |
}
|
183 |
|
184 |
/**
|
@@ -201,7 +201,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
201 |
*
|
202 |
* @return void.
|
203 |
*/
|
204 |
-
protected static function
|
205 |
$old_options = get_option( 'yit_wcan_options' );
|
206 |
|
207 |
if ( ! $old_options ) {
|
@@ -229,7 +229,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
229 |
*
|
230 |
* @return void.
|
231 |
*/
|
232 |
-
protected static function
|
233 |
do_action( 'yith_wcan_did_410_upgrade' );
|
234 |
}
|
235 |
|
@@ -238,11 +238,11 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
238 |
*
|
239 |
* @return array Array of filters.
|
240 |
*/
|
241 |
-
protected static function
|
242 |
$filters = array();
|
243 |
|
244 |
// set taxonomies filters.
|
245 |
-
$filters = array_merge( $filters, self::
|
246 |
|
247 |
return apply_filters( 'yith_wcan_default_filters', $filters );
|
248 |
}
|
@@ -252,7 +252,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
252 |
*
|
253 |
* @return array Array of filters.
|
254 |
*/
|
255 |
-
protected static function
|
256 |
$filters = array();
|
257 |
|
258 |
// start with taxonomy filters.
|
@@ -271,12 +271,12 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
|
|
271 |
continue;
|
272 |
}
|
273 |
|
274 |
-
$filter
|
275 |
$terms_array = array();
|
276 |
|
277 |
foreach ( $terms as $term ) {
|
278 |
$terms_array[ $term->term_id ] = array(
|
279 |
-
'label'
|
280 |
'tooltip' => $term->name,
|
281 |
);
|
282 |
}
|
3 |
* Manage install, and performs all post update operations
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
31 |
*
|
32 |
* @var string
|
33 |
*/
|
34 |
+
protected static $stored_version;
|
35 |
|
36 |
/**
|
37 |
* Default preset slug
|
38 |
*
|
39 |
* @var string
|
40 |
*/
|
41 |
+
protected static $default_preset_slug = 'default-preset';
|
42 |
|
43 |
/**
|
44 |
* Hooks methods required to install/update plugin
|
57 |
* @return void
|
58 |
*/
|
59 |
public static function check_version() {
|
60 |
+
self::$stored_version = get_option( 'yith_wcan_version' );
|
61 |
|
62 |
+
if ( version_compare( self::$stored_version, YITH_WCAN_VERSION, '<' ) ) {
|
63 |
self::update();
|
64 |
do_action( 'yith_wcan_updated' );
|
65 |
}
|
91 |
|
92 |
$new_preset = new YITH_WCAN_Preset();
|
93 |
|
94 |
+
$new_preset->set_slug( self::$default_preset_slug );
|
95 |
$new_preset->set_title( _x( 'Default preset', '[ADMIN] Name of default preset that is installed with the plugin', 'yith-woocommerce-ajax-navigation' ) );
|
96 |
+
$new_preset->set_filters( self::get_default_filters() );
|
97 |
$new_preset->save();
|
98 |
|
99 |
update_option( 'yith_wcan_default_preset_created', true );
|
122 |
*/
|
123 |
public static function maybe_update_options() {
|
124 |
// do incremental upgrade.
|
125 |
+
version_compare( self::$stored_version, '4.0.0', '<' ) && self::do_400_upgrade();
|
126 |
+
version_compare( self::$stored_version, '4.1.0', '<' ) && self::do_410_upgrade();
|
127 |
|
128 |
// space for future revisions.
|
129 |
|
145 |
* @return bool|YITH_WCAN_Preset
|
146 |
*/
|
147 |
public static function get_default_preset() {
|
148 |
+
return YITH_WCAN_Preset_Factory::get_preset( self::$default_preset_slug );
|
149 |
}
|
150 |
|
151 |
/**
|
178 |
* @return void
|
179 |
*/
|
180 |
public static function maybe_flush_rules() {
|
181 |
+
version_compare( self::$stored_version, '4.0.0', '<' ) && flush_rewrite_rules();
|
182 |
}
|
183 |
|
184 |
/**
|
201 |
*
|
202 |
* @return void.
|
203 |
*/
|
204 |
+
protected static function do_400_upgrade() {
|
205 |
$old_options = get_option( 'yit_wcan_options' );
|
206 |
|
207 |
if ( ! $old_options ) {
|
229 |
*
|
230 |
* @return void.
|
231 |
*/
|
232 |
+
protected static function do_410_upgrade() {
|
233 |
do_action( 'yith_wcan_did_410_upgrade' );
|
234 |
}
|
235 |
|
238 |
*
|
239 |
* @return array Array of filters.
|
240 |
*/
|
241 |
+
protected static function get_default_filters() {
|
242 |
$filters = array();
|
243 |
|
244 |
// set taxonomies filters.
|
245 |
+
$filters = array_merge( $filters, self::get_taxonomies_filters() );
|
246 |
|
247 |
return apply_filters( 'yith_wcan_default_filters', $filters );
|
248 |
}
|
252 |
*
|
253 |
* @return array Array of filters.
|
254 |
*/
|
255 |
+
protected static function get_taxonomies_filters() {
|
256 |
$filters = array();
|
257 |
|
258 |
// start with taxonomy filters.
|
271 |
continue;
|
272 |
}
|
273 |
|
274 |
+
$filter = new YITH_WCAN_Filter_Tax();
|
275 |
$terms_array = array();
|
276 |
|
277 |
foreach ( $terms as $term ) {
|
278 |
$terms_array[ $term->term_id ] = array(
|
279 |
+
'label' => $term->name,
|
280 |
'tooltip' => $term->name,
|
281 |
);
|
282 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Defines a couple of static methods to allow easy access to Preset classes
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
5 |
* Defines a couple of static methods to allow easy access to Preset classes
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes\Presets
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
@@ -4,7 +4,7 @@
|
|
4 |
* Offers method to read and set properties of the preset and filters
|
5 |
*
|
6 |
* @author YITH
|
7 |
-
* @package YITH
|
8 |
* @version 4.0.0
|
9 |
*/
|
10 |
|
@@ -97,7 +97,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
|
|
97 |
|
98 |
$this->data_store = WC_Data_Store::load( 'filter_preset' );
|
99 |
|
100 |
-
if ( $this->get_id() > 0 || $this->get_slug()
|
101 |
$this->data_store->read( $this );
|
102 |
}
|
103 |
}
|
@@ -228,7 +228,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
|
|
228 |
* @return array Array of fields
|
229 |
*/
|
230 |
public static function get_fields() {
|
231 |
-
return include
|
232 |
}
|
233 |
|
234 |
/* === SETTERS === */
|
@@ -260,7 +260,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
|
|
260 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
261 |
*/
|
262 |
public function set_layout( $layout ) {
|
263 |
-
$layout = in_array( $layout, array_keys( YITH_WCAN_Preset_Factory::get_supported_layouts() ) ) ? $layout : 'default';
|
264 |
|
265 |
$this->set_prop( 'layout', $layout );
|
266 |
}
|
@@ -465,7 +465,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
|
|
465 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
466 |
*/
|
467 |
public function set_filter( $filter_id, $filter ) {
|
468 |
-
$filters
|
469 |
$filters[ $filter_id ] = $filter;
|
470 |
|
471 |
$this->set_prop( 'filters', $filters );
|
@@ -573,7 +573,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
|
|
573 |
'read',
|
574 |
);
|
575 |
|
576 |
-
if ( ! $default && in_array( $cap, $public ) ) {
|
577 |
$default = true;
|
578 |
}
|
579 |
|
4 |
* Offers method to read and set properties of the preset and filters
|
5 |
*
|
6 |
* @author YITH
|
7 |
+
* @package YITH\AjaxProductFilter\Classes\Presets
|
8 |
* @version 4.0.0
|
9 |
*/
|
10 |
|
97 |
|
98 |
$this->data_store = WC_Data_Store::load( 'filter_preset' );
|
99 |
|
100 |
+
if ( $this->get_id() > 0 || ! empty( $this->get_slug() ) ) {
|
101 |
$this->data_store->read( $this );
|
102 |
}
|
103 |
}
|
228 |
* @return array Array of fields
|
229 |
*/
|
230 |
public static function get_fields() {
|
231 |
+
return include YITH_WCAN_DIR . 'plugin-options/preset-options.php';
|
232 |
}
|
233 |
|
234 |
/* === SETTERS === */
|
260 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
261 |
*/
|
262 |
public function set_layout( $layout ) {
|
263 |
+
$layout = in_array( $layout, array_keys( YITH_WCAN_Preset_Factory::get_supported_layouts() ), true ) ? $layout : 'default';
|
264 |
|
265 |
$this->set_prop( 'layout', $layout );
|
266 |
}
|
465 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
466 |
*/
|
467 |
public function set_filter( $filter_id, $filter ) {
|
468 |
+
$filters = $this->get_raw_filters();
|
469 |
$filters[ $filter_id ] = $filter;
|
470 |
|
471 |
$this->set_prop( 'filters', $filters );
|
573 |
'read',
|
574 |
);
|
575 |
|
576 |
+
if ( ! $default && in_array( $cap, $public, true ) ) {
|
577 |
$default = true;
|
578 |
}
|
579 |
|
@@ -3,7 +3,7 @@
|
|
3 |
* Manage presets, register CPT and offers utility to retrieve them
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -29,16 +29,16 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
29 |
/**
|
30 |
* Presets post type
|
31 |
*
|
32 |
-
* @var string $
|
33 |
*/
|
34 |
-
protected $
|
35 |
|
36 |
/**
|
37 |
* Single instance of this class
|
38 |
*
|
39 |
* @var YITH_WCAN_Presets
|
40 |
*/
|
41 |
-
protected static $
|
42 |
|
43 |
/**
|
44 |
* Constructor method for this class
|
@@ -81,7 +81,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
81 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
82 |
*/
|
83 |
public function get_post_type() {
|
84 |
-
return apply_filters( 'yith_wcan_presets_post_type', $this->
|
85 |
}
|
86 |
|
87 |
/**
|
@@ -92,17 +92,17 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
92 |
*/
|
93 |
public function register_post_type() {
|
94 |
$post_type_labels = array(
|
95 |
-
'name'
|
96 |
'singular_name' => _x( 'Filter preset', '[Admin] singular name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
|
97 |
'add_new_item ' => _x( 'Add new preset', '[Admin] add new filter preset label', 'yith-woocommerce-ajax-navigation' ),
|
98 |
);
|
99 |
-
$post_type_args
|
100 |
-
'label'
|
101 |
-
'labels'
|
102 |
-
'public'
|
103 |
-
'show_ui'
|
104 |
'show_in_menu' => false,
|
105 |
-
'supports'
|
106 |
);
|
107 |
|
108 |
register_post_type( $this->get_post_type(), $post_type_args );
|
@@ -152,7 +152,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
152 |
|
153 |
// external urls.
|
154 |
$demo_video_url = ''; // TODO: enter url when video is ready.
|
155 |
-
$doc_url
|
156 |
|
157 |
// action urls.
|
158 |
$hide_upgrade_note_url = wp_nonce_url( add_query_arg( 'action', 'yith_wcan_hide_upgrade_note', admin_url( 'admin.php' ) ), 'hide_upgrade_note' );
|
@@ -193,13 +193,13 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
193 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
194 |
*/
|
195 |
public function save_preset() {
|
196 |
-
$preset_id
|
197 |
-
$paged
|
198 |
$return_url = YITH_WCAN()->admin->get_panel_url();
|
199 |
|
200 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
201 |
if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'save_preset' ) ) {
|
202 |
-
|
203 |
die;
|
204 |
}
|
205 |
|
@@ -207,7 +207,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
207 |
try {
|
208 |
$preset = new YITH_WCAN_Preset( $preset_id );
|
209 |
} catch ( Exception $e ) {
|
210 |
-
|
211 |
die;
|
212 |
}
|
213 |
|
@@ -228,7 +228,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
228 |
$to_save = array();
|
229 |
|
230 |
foreach ( $filters as $filter ) {
|
231 |
-
$cleaned_filter = $this->
|
232 |
|
233 |
if ( ! $cleaned_filter ) {
|
234 |
continue;
|
@@ -260,7 +260,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
260 |
)
|
261 |
);
|
262 |
|
263 |
-
|
264 |
die;
|
265 |
}
|
266 |
|
@@ -272,19 +272,19 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
272 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
273 |
*/
|
274 |
public function clone_preset() {
|
275 |
-
$preset
|
276 |
$return_url = YITH_WCAN()->admin->get_panel_url();
|
277 |
|
278 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
279 |
if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'clone_preset' ) ) {
|
280 |
-
|
281 |
die;
|
282 |
}
|
283 |
|
284 |
$preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
|
285 |
|
286 |
if ( ! $preset || ! $preset->current_user_can( 'clone' ) ) {
|
287 |
-
|
288 |
die;
|
289 |
}
|
290 |
|
@@ -294,7 +294,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
294 |
wc_caught_exception( $e, __FUNCTION__, func_get_args() );
|
295 |
}
|
296 |
|
297 |
-
|
298 |
die;
|
299 |
}
|
300 |
|
@@ -306,19 +306,19 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
306 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
307 |
*/
|
308 |
public function delete_preset() {
|
309 |
-
$preset
|
310 |
$return_url = YITH_WCAN()->admin->get_panel_url();
|
311 |
|
312 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
313 |
if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'delete_preset' ) ) {
|
314 |
-
|
315 |
die;
|
316 |
}
|
317 |
|
318 |
$preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
|
319 |
|
320 |
if ( ! $preset || ! $preset->current_user_can( 'delete' ) ) {
|
321 |
-
|
322 |
die;
|
323 |
}
|
324 |
|
@@ -328,7 +328,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
328 |
wc_caught_exception( $e, __FUNCTION__, func_get_args() );
|
329 |
}
|
330 |
|
331 |
-
|
332 |
die;
|
333 |
}
|
334 |
|
@@ -346,7 +346,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
346 |
update_option( 'yith_wcan_upgrade_note_status', 0 );
|
347 |
}
|
348 |
|
349 |
-
|
350 |
die;
|
351 |
}
|
352 |
|
@@ -362,7 +362,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
362 |
|
363 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
364 |
if ( ! isset( $_REQUEST['_wpnonce'] ) || ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'do_widget_upgrade' ) && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'debug_action' ) ) ) {
|
365 |
-
|
366 |
die;
|
367 |
}
|
368 |
|
@@ -408,7 +408,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
408 |
}
|
409 |
|
410 |
$widget_instance = $options[ $widget_name ][ $widget_id ];
|
411 |
-
$filter
|
412 |
|
413 |
switch ( $widget_name ) {
|
414 |
case 'yith-woo-ajax-navigation-list-price-filter':
|
@@ -474,7 +474,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
474 |
|
475 |
foreach ( $terms as $term ) {
|
476 |
$terms_array[ $term->term_id ] = array(
|
477 |
-
'label'
|
478 |
'tooltip' => $term->name,
|
479 |
);
|
480 |
}
|
@@ -516,13 +516,13 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
516 |
}
|
517 |
break;
|
518 |
case 'tags':
|
519 |
-
$option_value = array_keys( $widget_instance['tags_list'] );
|
520 |
-
$exclude
|
521 |
-
$include
|
522 |
|
523 |
foreach ( $terms_array as $term_id => $term_options ) {
|
524 |
// if exclude and term exists in the option, or include and term doesn't exist in the option, unset it.
|
525 |
-
$found = in_array( $term_id, $option_value );
|
526 |
|
527 |
if ( $include && ! $found || $exclude && $found ) {
|
528 |
unset( $terms_array[ $term_id ] );
|
@@ -570,7 +570,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
570 |
|
571 |
if ( $filter ) {
|
572 |
$filter->set_title( $widget_instance['title'] );
|
573 |
-
$filter->set_show_count( isset( $widget_instance['show_count'] ) && ! $widget_instance['show_count'] && ! in_array( $widget_instance['type'], array( 'color', 'multicolor', 'label' ) ) );
|
574 |
|
575 |
if ( ! empty( $widget_instance['dropdown'] ) ) {
|
576 |
$filter->set_show_toggle( 'yes' );
|
@@ -593,7 +593,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
593 |
// we're done, hide upgrade note.
|
594 |
update_option( 'yith_wcan_upgrade_note_status', 0 );
|
595 |
|
596 |
-
|
597 |
die;
|
598 |
}
|
599 |
|
@@ -605,20 +605,20 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
605 |
* @return array Cleared data.
|
606 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
607 |
*/
|
608 |
-
protected function
|
609 |
// set missing information.
|
610 |
-
$filter['enabled']
|
611 |
-
$filter['show_toggle']
|
612 |
-
$filter['show_count']
|
613 |
-
$filter['show_search']
|
614 |
-
$filter['multiple']
|
615 |
-
$filter['show_stock_filter']
|
616 |
-
$filter['show_sale_filter']
|
617 |
$filter['show_featured_filter'] = isset( $filter['show_featured_filter'] ) ? 'yes' : 'no';
|
618 |
-
$filter['customize_terms']
|
619 |
|
620 |
if ( isset( $filter['terms_order'] ) ) {
|
621 |
-
$filter['terms'] = $this->
|
622 |
unset( $filter['terms_order'] );
|
623 |
}
|
624 |
|
@@ -641,7 +641,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
641 |
*
|
642 |
* @return array Array of sorted terms
|
643 |
*/
|
644 |
-
protected function
|
645 |
$ordered_terms = array();
|
646 |
|
647 |
foreach ( $order as $term_id ) {
|
@@ -733,7 +733,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
733 |
|
734 |
$preset_id = isset( $_POST['preset'] ) ? (int) $_POST['preset'] : false;
|
735 |
$filter_id = isset( $_POST['filter_id'] ) ? (int) $_POST['filter_id'] : false;
|
736 |
-
$filter = isset( $_POST['filter'] ) ? $this->
|
737 |
|
738 |
if ( ! $filter ) {
|
739 |
die( '-1' );
|
@@ -798,11 +798,11 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
|
|
798 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
799 |
*/
|
800 |
public static function instance() {
|
801 |
-
if ( is_null( self::$
|
802 |
-
self::$
|
803 |
}
|
804 |
|
805 |
-
return self::$
|
806 |
}
|
807 |
}
|
808 |
}
|
@@ -815,7 +815,7 @@ if ( ! function_exists( 'YITH_WCAN_Presets' ) ) {
|
|
815 |
* @since 4.0.0
|
816 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
817 |
*/
|
818 |
-
function YITH_WCAN_Presets() {
|
819 |
return YITH_WCAN_Presets::instance();
|
820 |
}
|
821 |
}
|
3 |
* Manage presets, register CPT and offers utility to retrieve them
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Presets
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
29 |
/**
|
30 |
* Presets post type
|
31 |
*
|
32 |
+
* @var string $post_type
|
33 |
*/
|
34 |
+
protected $post_type = 'yith_wcan_preset';
|
35 |
|
36 |
/**
|
37 |
* Single instance of this class
|
38 |
*
|
39 |
* @var YITH_WCAN_Presets
|
40 |
*/
|
41 |
+
protected static $instance;
|
42 |
|
43 |
/**
|
44 |
* Constructor method for this class
|
81 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
82 |
*/
|
83 |
public function get_post_type() {
|
84 |
+
return apply_filters( 'yith_wcan_presets_post_type', $this->post_type );
|
85 |
}
|
86 |
|
87 |
/**
|
92 |
*/
|
93 |
public function register_post_type() {
|
94 |
$post_type_labels = array(
|
95 |
+
'name' => _x( 'Filter presets', '[Admin] name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
|
96 |
'singular_name' => _x( 'Filter preset', '[Admin] singular name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
|
97 |
'add_new_item ' => _x( 'Add new preset', '[Admin] add new filter preset label', 'yith-woocommerce-ajax-navigation' ),
|
98 |
);
|
99 |
+
$post_type_args = array(
|
100 |
+
'label' => _x( 'Filter presets', '[Admin] name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
|
101 |
+
'labels' => $post_type_labels,
|
102 |
+
'public' => false,
|
103 |
+
'show_ui' => true,
|
104 |
'show_in_menu' => false,
|
105 |
+
'supports' => array( 'title' ),
|
106 |
);
|
107 |
|
108 |
register_post_type( $this->get_post_type(), $post_type_args );
|
152 |
|
153 |
// external urls.
|
154 |
$demo_video_url = ''; // TODO: enter url when video is ready.
|
155 |
+
$doc_url = 'https://docs.yithemes.com/yith-woocommerce-ajax-product-filter/premium-settings/general-settings/update-yith-woocommerce-ajax-product-filter-to-version-4-0/';
|
156 |
|
157 |
// action urls.
|
158 |
$hide_upgrade_note_url = wp_nonce_url( add_query_arg( 'action', 'yith_wcan_hide_upgrade_note', admin_url( 'admin.php' ) ), 'hide_upgrade_note' );
|
193 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
194 |
*/
|
195 |
public function save_preset() {
|
196 |
+
$preset_id = isset( $_POST['id'] ) ? (int) $_POST['id'] : false;
|
197 |
+
$paged = isset( $_POST['paged'] ) ? (int) $_POST['paged'] : false;
|
198 |
$return_url = YITH_WCAN()->admin->get_panel_url();
|
199 |
|
200 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
201 |
if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'save_preset' ) ) {
|
202 |
+
wp_safe_redirect( $return_url );
|
203 |
die;
|
204 |
}
|
205 |
|
207 |
try {
|
208 |
$preset = new YITH_WCAN_Preset( $preset_id );
|
209 |
} catch ( Exception $e ) {
|
210 |
+
wp_safe_redirect( $return_url );
|
211 |
die;
|
212 |
}
|
213 |
|
228 |
$to_save = array();
|
229 |
|
230 |
foreach ( $filters as $filter ) {
|
231 |
+
$cleaned_filter = $this->clear_preset_filter( $filter );
|
232 |
|
233 |
if ( ! $cleaned_filter ) {
|
234 |
continue;
|
260 |
)
|
261 |
);
|
262 |
|
263 |
+
wp_safe_redirect( $return_url );
|
264 |
die;
|
265 |
}
|
266 |
|
272 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
273 |
*/
|
274 |
public function clone_preset() {
|
275 |
+
$preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
|
276 |
$return_url = YITH_WCAN()->admin->get_panel_url();
|
277 |
|
278 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
279 |
if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'clone_preset' ) ) {
|
280 |
+
wp_safe_redirect( $return_url );
|
281 |
die;
|
282 |
}
|
283 |
|
284 |
$preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
|
285 |
|
286 |
if ( ! $preset || ! $preset->current_user_can( 'clone' ) ) {
|
287 |
+
wp_safe_redirect( $return_url );
|
288 |
die;
|
289 |
}
|
290 |
|
294 |
wc_caught_exception( $e, __FUNCTION__, func_get_args() );
|
295 |
}
|
296 |
|
297 |
+
wp_safe_redirect( $return_url );
|
298 |
die;
|
299 |
}
|
300 |
|
306 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
307 |
*/
|
308 |
public function delete_preset() {
|
309 |
+
$preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
|
310 |
$return_url = YITH_WCAN()->admin->get_panel_url();
|
311 |
|
312 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
313 |
if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'delete_preset' ) ) {
|
314 |
+
wp_safe_redirect( $return_url );
|
315 |
die;
|
316 |
}
|
317 |
|
318 |
$preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
|
319 |
|
320 |
if ( ! $preset || ! $preset->current_user_can( 'delete' ) ) {
|
321 |
+
wp_safe_redirect( $return_url );
|
322 |
die;
|
323 |
}
|
324 |
|
328 |
wc_caught_exception( $e, __FUNCTION__, func_get_args() );
|
329 |
}
|
330 |
|
331 |
+
wp_safe_redirect( $return_url );
|
332 |
die;
|
333 |
}
|
334 |
|
346 |
update_option( 'yith_wcan_upgrade_note_status', 0 );
|
347 |
}
|
348 |
|
349 |
+
wp_safe_redirect( $return_url );
|
350 |
die;
|
351 |
}
|
352 |
|
362 |
|
363 |
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
364 |
if ( ! isset( $_REQUEST['_wpnonce'] ) || ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'do_widget_upgrade' ) && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'debug_action' ) ) ) {
|
365 |
+
wp_safe_redirect( $return_url );
|
366 |
die;
|
367 |
}
|
368 |
|
408 |
}
|
409 |
|
410 |
$widget_instance = $options[ $widget_name ][ $widget_id ];
|
411 |
+
$filter = false;
|
412 |
|
413 |
switch ( $widget_name ) {
|
414 |
case 'yith-woo-ajax-navigation-list-price-filter':
|
474 |
|
475 |
foreach ( $terms as $term ) {
|
476 |
$terms_array[ $term->term_id ] = array(
|
477 |
+
'label' => $term->name,
|
478 |
'tooltip' => $term->name,
|
479 |
);
|
480 |
}
|
516 |
}
|
517 |
break;
|
518 |
case 'tags':
|
519 |
+
$option_value = array_map( 'intval', array_keys( $widget_instance['tags_list'] ) );
|
520 |
+
$exclude = 'exclude' === $widget_instance['tags_list_query'];
|
521 |
+
$include = ! $exclude;
|
522 |
|
523 |
foreach ( $terms_array as $term_id => $term_options ) {
|
524 |
// if exclude and term exists in the option, or include and term doesn't exist in the option, unset it.
|
525 |
+
$found = in_array( $term_id, $option_value, true );
|
526 |
|
527 |
if ( $include && ! $found || $exclude && $found ) {
|
528 |
unset( $terms_array[ $term_id ] );
|
570 |
|
571 |
if ( $filter ) {
|
572 |
$filter->set_title( $widget_instance['title'] );
|
573 |
+
$filter->set_show_count( isset( $widget_instance['show_count'] ) && ! $widget_instance['show_count'] && ! in_array( $widget_instance['type'], array( 'color', 'multicolor', 'label' ), true ) );
|
574 |
|
575 |
if ( ! empty( $widget_instance['dropdown'] ) ) {
|
576 |
$filter->set_show_toggle( 'yes' );
|
593 |
// we're done, hide upgrade note.
|
594 |
update_option( 'yith_wcan_upgrade_note_status', 0 );
|
595 |
|
596 |
+
wp_safe_redirect( $return_url );
|
597 |
die;
|
598 |
}
|
599 |
|
605 |
* @return array Cleared data.
|
606 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
607 |
*/
|
608 |
+
protected function clear_preset_filter( $filter ) {
|
609 |
// set missing information.
|
610 |
+
$filter['enabled'] = isset( $filter['enabled'] ) ? 'yes' : 'no';
|
611 |
+
$filter['show_toggle'] = isset( $filter['show_toggle'] ) ? 'yes' : 'no';
|
612 |
+
$filter['show_count'] = isset( $filter['show_count'] ) ? 'yes' : 'no';
|
613 |
+
$filter['show_search'] = isset( $filter['show_search'] ) ? 'yes' : 'no';
|
614 |
+
$filter['multiple'] = isset( $filter['multiple'] ) ? 'yes' : 'no';
|
615 |
+
$filter['show_stock_filter'] = isset( $filter['show_stock_filter'] ) ? 'yes' : 'no';
|
616 |
+
$filter['show_sale_filter'] = isset( $filter['show_sale_filter'] ) ? 'yes' : 'no';
|
617 |
$filter['show_featured_filter'] = isset( $filter['show_featured_filter'] ) ? 'yes' : 'no';
|
618 |
+
$filter['customize_terms'] = isset( $filter['customize_terms'] ) ? 'yes' : 'no';
|
619 |
|
620 |
if ( isset( $filter['terms_order'] ) ) {
|
621 |
+
$filter['terms'] = $this->get_sorted_terms( $filter['terms'], array_map( 'intval', $filter['terms_order'] ) );
|
622 |
unset( $filter['terms_order'] );
|
623 |
}
|
624 |
|
641 |
*
|
642 |
* @return array Array of sorted terms
|
643 |
*/
|
644 |
+
protected function get_sorted_terms( $terms, $order ) {
|
645 |
$ordered_terms = array();
|
646 |
|
647 |
foreach ( $order as $term_id ) {
|
733 |
|
734 |
$preset_id = isset( $_POST['preset'] ) ? (int) $_POST['preset'] : false;
|
735 |
$filter_id = isset( $_POST['filter_id'] ) ? (int) $_POST['filter_id'] : false;
|
736 |
+
$filter = isset( $_POST['filter'] ) ? $this->clear_preset_filter( $_POST['filter'] ) : false; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
|
737 |
|
738 |
if ( ! $filter ) {
|
739 |
die( '-1' );
|
798 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
799 |
*/
|
800 |
public static function instance() {
|
801 |
+
if ( is_null( self::$instance ) ) {
|
802 |
+
self::$instance = new self();
|
803 |
}
|
804 |
|
805 |
+
return self::$instance;
|
806 |
}
|
807 |
}
|
808 |
}
|
815 |
* @since 4.0.0
|
816 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
817 |
*/
|
818 |
+
function YITH_WCAN_Presets() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
819 |
return YITH_WCAN_Presets::instance();
|
820 |
}
|
821 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Filters WooCommerce query, to show only products matching selection
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0.0
|
10 |
*/
|
11 |
|
@@ -20,75 +20,48 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
20 |
* @since 4.0.0
|
21 |
*/
|
22 |
class YITH_WCAN_Query {
|
23 |
-
/**
|
24 |
-
* Base name for queried-products transient
|
25 |
-
*
|
26 |
-
* @const string
|
27 |
-
*/
|
28 |
-
const QUERIED_PRODUCTS_TRANSIENT = 'yith_wcan_queried_products_';
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Base name for object-in-terms transient
|
32 |
-
*
|
33 |
-
* @const string
|
34 |
-
*/
|
35 |
-
const OBJECT_IN_TERMS_TRANSIENT = 'yith_wcan_object_in_terms_';
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Base name for products-in-stock transient
|
39 |
-
*
|
40 |
-
* @const string
|
41 |
-
*/
|
42 |
-
const PRODUCTS_IN_STOCK_TRANSIENT = 'yith_wcan_products_instock_';
|
43 |
|
44 |
/**
|
45 |
* Query parameter added to any filtered page url
|
46 |
*
|
47 |
* @var string
|
48 |
*/
|
49 |
-
protected $
|
50 |
|
51 |
/**
|
52 |
* List of query vars submitted for current query
|
53 |
*
|
54 |
* @var array submitted query vars.
|
55 |
*/
|
56 |
-
protected $
|
57 |
|
58 |
/**
|
59 |
* Get taxonomies that will be used for filtering
|
60 |
*
|
61 |
* @var array
|
62 |
*/
|
63 |
-
protected $
|
64 |
|
65 |
/**
|
66 |
* Products retrieved by by last query
|
67 |
*
|
68 |
* @var array
|
69 |
*/
|
70 |
-
protected $
|
71 |
|
72 |
/**
|
73 |
* An array of product ids matcing current query, per filter
|
74 |
*
|
75 |
* @var array
|
76 |
*/
|
77 |
-
protected $
|
78 |
|
79 |
/**
|
80 |
* An array of currently choosen attributes
|
81 |
*
|
82 |
* @var array
|
83 |
*/
|
84 |
-
protected $
|
85 |
-
|
86 |
-
/**
|
87 |
-
* Current filtering session, if any
|
88 |
-
*
|
89 |
-
* @var YITH_WCAN_Session
|
90 |
-
*/
|
91 |
-
protected $_session = null;
|
92 |
|
93 |
/**
|
94 |
* Main instance
|
@@ -96,14 +69,14 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
96 |
* @var YITH_WCAN_Query
|
97 |
* @since 4.0.0
|
98 |
*/
|
99 |
-
protected static $
|
100 |
|
101 |
/**
|
102 |
* Constructor method for the class
|
103 |
*/
|
104 |
public function __construct() {
|
105 |
// prepare query param.
|
106 |
-
$this->
|
107 |
|
108 |
// do all pre-flight preparation.
|
109 |
add_action( 'parse_request', array( $this, 'suppress_default_query_vars' ) );
|
@@ -144,7 +117,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
144 |
* @param mixed $value Value to ues for the query var.
|
145 |
*/
|
146 |
public function set( $query_var, $value ) {
|
147 |
-
$this->
|
148 |
}
|
149 |
|
150 |
/* === GET METHODS === */
|
@@ -169,13 +142,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
169 |
* @return WP_Taxonomy[] Array of WP_Taxonomy objects
|
170 |
*/
|
171 |
public function get_supported_taxonomies() {
|
172 |
-
if ( empty( $this->
|
173 |
$product_taxonomies = get_object_taxonomies( 'product', 'objects' );
|
174 |
$supported_taxonomies = array();
|
175 |
|
176 |
if ( ! empty( $product_taxonomies ) ) {
|
177 |
foreach ( $product_taxonomies as $taxonomy_slug => $taxonomy ) {
|
178 |
-
if ( ! in_array( $taxonomy_slug, array( 'product_cat', 'product_tag' ) ) && 0 !== strpos( $taxonomy_slug, 'pa_' ) ) {
|
179 |
continue;
|
180 |
}
|
181 |
|
@@ -183,10 +156,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
183 |
}
|
184 |
}
|
185 |
|
186 |
-
$this->
|
187 |
}
|
188 |
|
189 |
-
return $this->
|
190 |
}
|
191 |
|
192 |
/**
|
@@ -207,11 +180,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
207 |
* ]
|
208 |
*/
|
209 |
public function get_query_vars() {
|
210 |
-
if ( ! is_null( $this->
|
211 |
-
return $this->
|
212 |
}
|
213 |
|
214 |
-
$query = $this->sanitize_query( $_GET );
|
215 |
|
216 |
// unset parameters that aren't related to filters.
|
217 |
$supported_parameters = apply_filters(
|
@@ -234,7 +207,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
234 |
} elseif ( 0 === strpos( $key, 'query_type_' ) ) {
|
235 |
// include meta filtering parameters.
|
236 |
continue;
|
237 |
-
} elseif ( ! in_array( $key, $supported_parameters ) ) {
|
238 |
unset( $query[ $key ] );
|
239 |
}
|
240 |
}
|
@@ -251,7 +224,12 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
251 |
}
|
252 |
}
|
253 |
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
255 |
|
256 |
// return query.
|
257 |
return $query;
|
@@ -263,7 +241,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
263 |
* @return string Query param.
|
264 |
*/
|
265 |
public function get_query_param() {
|
266 |
-
return $this->
|
267 |
}
|
268 |
|
269 |
/**
|
@@ -288,10 +266,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
288 |
* @since 4.0.2
|
289 |
*/
|
290 |
public function get_active_filter( $filter ) {
|
291 |
-
$query_vars
|
292 |
-
$labels
|
293 |
-
$taxonomies
|
294 |
-
$label
|
295 |
$active_filter = false;
|
296 |
|
297 |
if ( ! $label ) {
|
@@ -324,7 +302,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
324 |
}
|
325 |
|
326 |
$values[] = array(
|
327 |
-
'label'
|
328 |
'query_vars' => array(
|
329 |
$filter => yith_wcan_esc_term_slug( $term_slug ),
|
330 |
),
|
@@ -377,8 +355,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
377 |
return $query_vars;
|
378 |
} else {
|
379 |
$active_filters = array();
|
380 |
-
$labels
|
381 |
-
|
382 |
|
383 |
foreach ( $labels as $filter => $label ) {
|
384 |
$active_filter = $this->get_active_filter( $filter );
|
@@ -420,26 +397,26 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
420 |
$query_vars['lang'] = $current_lang;
|
421 |
}
|
422 |
|
423 |
-
$calculate_hash
|
424 |
-
$
|
425 |
-
$stored_products = get_transient( $cache_name );
|
426 |
|
427 |
-
if (
|
428 |
-
$product_ids = $stored_products[ $calculate_hash ];
|
429 |
-
} else {
|
430 |
// store original query values, and switch to current context.
|
431 |
-
$tmp_query_vars
|
432 |
-
$tmp_chosen_attributes
|
433 |
-
$this->
|
434 |
-
$this->
|
435 |
|
436 |
// create query to retrieve products.
|
437 |
$query = new WP_Query(
|
438 |
-
|
439 |
-
'
|
440 |
-
|
441 |
-
|
442 |
-
|
|
|
|
|
|
|
443 |
)
|
444 |
);
|
445 |
|
@@ -453,12 +430,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
453 |
$product_ids = $query->get_posts();
|
454 |
|
455 |
// save result set to stored queries.
|
456 |
-
$
|
457 |
-
set_transient( $cache_name, $stored_products, apply_filters( 'yith_wcan_queried_products_expiration', 30 * DAY_IN_SECONDS ) );
|
458 |
|
459 |
// reset original query values.
|
460 |
-
$this->
|
461 |
-
$this->
|
462 |
}
|
463 |
|
464 |
return $product_ids;
|
@@ -470,7 +446,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
470 |
* @return bool Whether filters should be applied.
|
471 |
*/
|
472 |
public function should_filter() {
|
473 |
-
$query_param = isset( $_REQUEST[ $this->get_query_param() ] ) ? intval( wp_unslash( $_REQUEST[ $this->get_query_param() ] ) ) : 0;
|
474 |
|
475 |
return apply_filters( 'yith_wcan_should_filter', ! ! $query_param, $this );
|
476 |
}
|
@@ -487,7 +463,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
487 |
if ( ! $query instanceof WP_Query ) {
|
488 |
// skip if wrong parameter.
|
489 |
$result = false;
|
490 |
-
} elseif ( 'product'
|
491 |
// skip if we're not querying products.
|
492 |
$result = false;
|
493 |
} elseif ( $query->is_main_query() && ! $query->get( 'wc_query' ) ) {
|
@@ -636,7 +612,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
636 |
// Set visibility tax_query.
|
637 |
$product_visibility_term_ids = wc_get_product_visibility_term_ids();
|
638 |
|
639 |
-
$tax_query[]
|
640 |
'taxonomy' => 'product_visibility',
|
641 |
'field' => 'term_taxonomy_id',
|
642 |
'terms' => is_search() ? $product_visibility_term_ids['exclude-from-search'] : $product_visibility_term_ids['exclude-from-catalog'],
|
@@ -652,8 +628,8 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
652 |
* @return array
|
653 |
*/
|
654 |
public function get_layered_nav_chosen_attributes() {
|
655 |
-
if ( ! is_array( $this->
|
656 |
-
$this->
|
657 |
|
658 |
$query_vars = $this->get_query_vars();
|
659 |
|
@@ -670,13 +646,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
670 |
|
671 |
$query_type = $this->get( 'query_type_' . $attribute );
|
672 |
|
673 |
-
$this->
|
674 |
-
$this->
|
675 |
}
|
676 |
}
|
677 |
}
|
678 |
}
|
679 |
-
return $this->
|
680 |
}
|
681 |
|
682 |
/**
|
@@ -827,10 +803,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
827 |
global $wp_query;
|
828 |
|
829 |
if ( apply_filters( 'yith_wcan_suppress_default_conditional_tags', false ) ) {
|
830 |
-
$wp_query->is_tax
|
831 |
-
$wp_query->is_tag
|
832 |
-
$wp_query->is_home
|
833 |
-
$wp_query->is_single
|
834 |
$wp_query->is_posts_page = false;
|
835 |
}
|
836 |
}
|
@@ -855,11 +831,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
855 |
* @return void
|
856 |
*/
|
857 |
public function register_products() {
|
858 |
-
if ( ! $this->is_filtered() || ! empty( $this->
|
859 |
return;
|
860 |
}
|
861 |
|
862 |
-
$this->
|
863 |
}
|
864 |
|
865 |
/* === ALTER DEFAULT WC QUERY === */
|
@@ -960,7 +936,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
960 |
|
961 |
$query_var = $param;
|
962 |
|
963 |
-
if ( in_array( $param, wc_get_attribute_taxonomy_names() ) ) {
|
964 |
$query_var = str_replace( 'pa_', 'filter_', $param );
|
965 |
}
|
966 |
|
@@ -978,7 +954,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
978 |
$taxonomies = array_keys( $this->get_supported_taxonomies() );
|
979 |
$query_var = $taxonomy;
|
980 |
|
981 |
-
if ( ! in_array( $taxonomy, $taxonomies ) ) {
|
982 |
return false;
|
983 |
}
|
984 |
|
@@ -986,7 +962,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
986 |
return true;
|
987 |
}
|
988 |
|
989 |
-
if ( in_array( $taxonomy, wc_get_attribute_taxonomy_names() ) ) {
|
990 |
$query_var = str_replace( 'pa_', 'filter_', $taxonomy );
|
991 |
}
|
992 |
|
@@ -1029,20 +1005,16 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1029 |
return array();
|
1030 |
}
|
1031 |
|
1032 |
-
if ( isset( $this->
|
1033 |
-
return $this->
|
1034 |
} else {
|
1035 |
-
$
|
1036 |
-
$stored_items = get_transient( $cache_name );
|
1037 |
|
1038 |
-
if (
|
1039 |
-
$posts = $stored_items[ $term_id ];
|
1040 |
-
} else {
|
1041 |
$posts = get_objects_in_term( $term_id, $taxonomy );
|
1042 |
|
1043 |
// save result set to stored queries.
|
1044 |
-
$
|
1045 |
-
set_transient( $cache_name, $stored_items, apply_filters( 'yith_wcan_object_in_terms_expiration', 30 * DAY_IN_SECONDS ) );
|
1046 |
}
|
1047 |
|
1048 |
if ( is_wp_error( $posts ) ) {
|
@@ -1050,10 +1022,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1050 |
}
|
1051 |
|
1052 |
if ( ! $exclude_taxonomy ) {
|
1053 |
-
$query_vars
|
1054 |
$original_taxonomy = $taxonomy;
|
1055 |
|
1056 |
-
if ( in_array( $original_taxonomy, wc_get_attribute_taxonomy_names() ) ) {
|
1057 |
$original_taxonomy = str_replace( 'pa_', 'filter_', $original_taxonomy );
|
1058 |
}
|
1059 |
|
@@ -1067,113 +1039,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1067 |
}
|
1068 |
|
1069 |
$match = array_intersect( $posts, $products );
|
1070 |
-
$this->_products_per_filter[ $taxonomy ][ $term_id ] = $match;
|
1071 |
-
|
1072 |
-
return $match;
|
1073 |
-
}
|
1074 |
-
}
|
1075 |
-
|
1076 |
-
/* === TRANSIENT === */
|
1077 |
-
|
1078 |
-
/**
|
1079 |
-
* Returns name of the transient used to cache queried products
|
1080 |
-
*
|
1081 |
-
* @return string Transient name.
|
1082 |
-
*/
|
1083 |
-
public function get_queried_products_transient_name() {
|
1084 |
-
$cache_version = WC_Cache_Helper::get_transient_version( 'product' );
|
1085 |
-
$cache_name = self::QUERIED_PRODUCTS_TRANSIENT . $cache_version;
|
1086 |
-
|
1087 |
-
// WPML support.
|
1088 |
-
$current_lang = apply_filters( 'wpml_current_language', null );
|
1089 |
-
|
1090 |
-
if ( ! empty( $current_lang ) ) {
|
1091 |
-
$cache_name .= "_{$current_lang}";
|
1092 |
-
}
|
1093 |
-
|
1094 |
-
return apply_filters( 'yith_wcan_queried_products_name', $cache_name );
|
1095 |
-
}
|
1096 |
-
|
1097 |
-
/**
|
1098 |
-
* Returns name of the transient used to cache object in terms
|
1099 |
-
*
|
1100 |
-
* @return string Transient name.
|
1101 |
-
*/
|
1102 |
-
public function get_object_in_terms_transient_name() {
|
1103 |
-
$cache_version = WC_Cache_Helper::get_transient_version( 'product' );
|
1104 |
-
$cache_name = self::OBJECT_IN_TERMS_TRANSIENT . $cache_version;
|
1105 |
-
|
1106 |
-
return apply_filters( 'yith_wcan_object_in_terms_name', $cache_name );
|
1107 |
-
}
|
1108 |
-
|
1109 |
-
/**
|
1110 |
-
* Returns name of the transient used to cache "in stock" products
|
1111 |
-
*
|
1112 |
-
* @return string Transient name.
|
1113 |
-
*/
|
1114 |
-
public function get_in_stock_products_transient_name() {
|
1115 |
-
$cache_version = WC_Cache_Helper::get_transient_version( 'product' );
|
1116 |
-
$cache_name = self::PRODUCTS_IN_STOCK_TRANSIENT . $cache_version;
|
1117 |
-
|
1118 |
-
// WPML support.
|
1119 |
-
$current_lang = apply_filters( 'wpml_current_language', null );
|
1120 |
-
|
1121 |
-
if ( ! empty( $current_lang ) ) {
|
1122 |
-
$cache_name .= "_{$current_lang}";
|
1123 |
-
}
|
1124 |
-
|
1125 |
-
return apply_filters( 'yith_wcan_products_instock_name', $cache_name );
|
1126 |
-
}
|
1127 |
-
|
1128 |
-
/**
|
1129 |
-
* Delete transient used to cache queried products
|
1130 |
-
*
|
1131 |
-
* @return void
|
1132 |
-
*/
|
1133 |
-
public function delete_transients() {
|
1134 |
-
delete_transient( $this->get_queried_products_transient_name() );
|
1135 |
-
delete_transient( $this->get_in_stock_products_transient_name() );
|
1136 |
-
delete_transient( $this->get_object_in_terms_transient_name() );
|
1137 |
-
|
1138 |
-
delete_transient( 'yith_wcan_exclude_from_catalog_product_ids' );
|
1139 |
-
}
|
1140 |
|
1141 |
-
|
1142 |
-
* Delete transient used to cache queried products
|
1143 |
-
*
|
1144 |
-
* @return void
|
1145 |
-
*/
|
1146 |
-
public function delete_expired_transients() {
|
1147 |
-
global $wpdb;
|
1148 |
-
|
1149 |
-
$cache_version = WC_Cache_Helper::get_transient_version( 'product' );
|
1150 |
-
$to_delete = array(
|
1151 |
-
self::QUERIED_PRODUCTS_TRANSIENT,
|
1152 |
-
self::OBJECT_IN_TERMS_TRANSIENT,
|
1153 |
-
self::PRODUCTS_IN_STOCK_TRANSIENT,
|
1154 |
-
);
|
1155 |
|
1156 |
-
|
1157 |
-
$args = array();
|
1158 |
-
|
1159 |
-
$query .= ' AND ( ';
|
1160 |
-
$first = true;
|
1161 |
-
foreach ( $to_delete as $transient_name ) {
|
1162 |
-
if ( ! $first ) {
|
1163 |
-
$query .= ' OR ';
|
1164 |
-
}
|
1165 |
-
|
1166 |
-
$args[] = "%{$transient_name}%";
|
1167 |
-
|
1168 |
-
$query .= 'option_name LIKE %s';
|
1169 |
-
$first = false;
|
1170 |
}
|
1171 |
-
$query .= ')';
|
1172 |
-
|
1173 |
-
$query .= ' AND option_name NOT LIKE %s';
|
1174 |
-
$args[] = "%{$cache_version}%";
|
1175 |
-
|
1176 |
-
$wpdb->query( $wpdb->prepare( $query, $args ) ); // phpcs:ignore WordPress.DB
|
1177 |
}
|
1178 |
|
1179 |
/* === UTILS === */
|
@@ -1184,9 +1054,9 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1184 |
* @return array Array of product ids
|
1185 |
*/
|
1186 |
public function get_product_ids_in_stock() {
|
|
|
1187 |
// Load from cache.
|
1188 |
-
$
|
1189 |
-
$product_ids_in_stock = get_transient( $transient_name );
|
1190 |
|
1191 |
// Valid cache found.
|
1192 |
if ( false !== $product_ids_in_stock ) {
|
@@ -1194,15 +1064,19 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1194 |
}
|
1195 |
|
1196 |
$product_ids_in_stock = wc_get_products(
|
1197 |
-
|
1198 |
-
'
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
|
|
|
|
|
|
|
|
1202 |
)
|
1203 |
);
|
1204 |
|
1205 |
-
|
1206 |
|
1207 |
return $product_ids_in_stock;
|
1208 |
}
|
@@ -1240,13 +1114,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1240 |
if ( ! empty( $vars_to_add ) ) {
|
1241 |
foreach ( $vars_to_add as $vars ) {
|
1242 |
foreach ( $vars as $key => $value ) {
|
1243 |
-
if ( in_array( $key, array_keys( $supported_taxonomies ) ) ) {
|
1244 |
if ( ! isset( $query_vars[ $key ] ) ) {
|
1245 |
$query_vars[ $key ] = $value;
|
1246 |
} else {
|
1247 |
-
$glue
|
1248 |
$existing = explode( $glue, $query_vars[ $key ] );
|
1249 |
-
$new
|
1250 |
|
1251 |
$query_vars[ $key ] = implode( $glue, array_unique( array_merge( $existing, $new ) ) );
|
1252 |
}
|
@@ -1259,12 +1133,12 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1259 |
$query_vars[ $key ] = $value;
|
1260 |
} else {
|
1261 |
$existing = explode( ',', $query_vars[ $key ] );
|
1262 |
-
$new
|
1263 |
|
1264 |
$query_vars[ $key ] = implode( ',', array_unique( array_merge( $existing, $new ) ) );
|
1265 |
}
|
1266 |
} elseif ( is_array( $value ) ) {
|
1267 |
-
$glue
|
1268 |
$query_vars[ $key ] = implode( $glue, array_merge( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
|
1269 |
} else {
|
1270 |
$query_vars[ $key ] = $value;
|
@@ -1291,11 +1165,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1291 |
if ( ! empty( $vars_to_remove ) ) {
|
1292 |
foreach ( $vars_to_remove as $vars ) {
|
1293 |
foreach ( $vars as $key => $value ) {
|
1294 |
-
if ( in_array( $key, array_keys( $supported_taxonomies ) ) ) {
|
1295 |
if ( isset( $query_vars[ $key ] ) ) {
|
1296 |
-
$glue
|
1297 |
$existing = explode( $glue, $query_vars[ $key ] );
|
1298 |
-
$new
|
1299 |
|
1300 |
$query_vars[ $key ] = implode( $glue, array_unique( array_diff( $existing, $new ) ) );
|
1301 |
}
|
@@ -1310,7 +1184,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1310 |
|
1311 |
if ( isset( $query_vars[ $key ] ) ) {
|
1312 |
$existing = explode( ',', $query_vars[ $key ] );
|
1313 |
-
$new
|
1314 |
|
1315 |
$query_vars[ $key ] = implode( ',', array_unique( array_diff( $existing, $new ) ) );
|
1316 |
}
|
@@ -1320,7 +1194,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1320 |
unset( $query_vars[ "query_type_{$attribute}" ] );
|
1321 |
}
|
1322 |
} elseif ( is_array( $value ) ) {
|
1323 |
-
$glue
|
1324 |
$query_vars[ $key ] = implode( $glue, array_diff( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
|
1325 |
|
1326 |
if ( empty( $query_vars[ $key ] ) ) {
|
@@ -1365,6 +1239,12 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1365 |
* @return array Filtered array of tax queries.
|
1366 |
*/
|
1367 |
public function reduce_tax_query( $tax_queries ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
1368 |
$result = array();
|
1369 |
$queries = array();
|
1370 |
$relation = 'AND';
|
@@ -1392,7 +1272,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1392 |
|
1393 |
if ( ! isset( $queries[ $hash ] ) ) {
|
1394 |
$queries[ $hash ] = $tax_query;
|
1395 |
-
}
|
1396 |
$queries[ $hash ]['terms'] = array_unique( (array) $queries[ $hash ]['terms'] + (array) $tax_query['terms'] );
|
1397 |
}
|
1398 |
}
|
@@ -1414,11 +1294,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
|
|
1414 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
1415 |
*/
|
1416 |
public static function instance() {
|
1417 |
-
if ( is_null( self::$
|
1418 |
-
self::$
|
1419 |
}
|
1420 |
|
1421 |
-
return self::$
|
1422 |
}
|
1423 |
}
|
1424 |
}
|
@@ -1429,7 +1309,7 @@ if ( ! function_exists( 'YITH_WCAN_Query' ) ) {
|
|
1429 |
*
|
1430 |
* @return YITH_WCAN_Query
|
1431 |
*/
|
1432 |
-
function YITH_WCAN_Query() {
|
1433 |
if ( defined( 'YITH_WCAN_PREMIUM' ) ) {
|
1434 |
return YITH_WCAN_Query_Premium::instance();
|
1435 |
}
|
5 |
* Filters WooCommerce query, to show only products matching selection
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes
|
9 |
* @version 4.0.0
|
10 |
*/
|
11 |
|
20 |
* @since 4.0.0
|
21 |
*/
|
22 |
class YITH_WCAN_Query {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
/**
|
25 |
* Query parameter added to any filtered page url
|
26 |
*
|
27 |
* @var string
|
28 |
*/
|
29 |
+
protected $query_param = 'yith_wcan';
|
30 |
|
31 |
/**
|
32 |
* List of query vars submitted for current query
|
33 |
*
|
34 |
* @var array submitted query vars.
|
35 |
*/
|
36 |
+
protected $query_vars = null;
|
37 |
|
38 |
/**
|
39 |
* Get taxonomies that will be used for filtering
|
40 |
*
|
41 |
* @var array
|
42 |
*/
|
43 |
+
protected $supported_taxonomies = array();
|
44 |
|
45 |
/**
|
46 |
* Products retrieved by by last query
|
47 |
*
|
48 |
* @var array
|
49 |
*/
|
50 |
+
protected $products = array();
|
51 |
|
52 |
/**
|
53 |
* An array of product ids matcing current query, per filter
|
54 |
*
|
55 |
* @var array
|
56 |
*/
|
57 |
+
protected $products_per_filter = array();
|
58 |
|
59 |
/**
|
60 |
* An array of currently choosen attributes
|
61 |
*
|
62 |
* @var array
|
63 |
*/
|
64 |
+
protected $chosen_attributes;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
/**
|
67 |
* Main instance
|
69 |
* @var YITH_WCAN_Query
|
70 |
* @since 4.0.0
|
71 |
*/
|
72 |
+
protected static $instance = null;
|
73 |
|
74 |
/**
|
75 |
* Constructor method for the class
|
76 |
*/
|
77 |
public function __construct() {
|
78 |
// prepare query param.
|
79 |
+
$this->query_param = apply_filters( 'yith_wcan_query_param', $this->query_param );
|
80 |
|
81 |
// do all pre-flight preparation.
|
82 |
add_action( 'parse_request', array( $this, 'suppress_default_query_vars' ) );
|
117 |
* @param mixed $value Value to ues for the query var.
|
118 |
*/
|
119 |
public function set( $query_var, $value ) {
|
120 |
+
$this->query_vars[ $query_var ] = $value;
|
121 |
}
|
122 |
|
123 |
/* === GET METHODS === */
|
142 |
* @return WP_Taxonomy[] Array of WP_Taxonomy objects
|
143 |
*/
|
144 |
public function get_supported_taxonomies() {
|
145 |
+
if ( empty( $this->supported_taxonomies ) ) {
|
146 |
$product_taxonomies = get_object_taxonomies( 'product', 'objects' );
|
147 |
$supported_taxonomies = array();
|
148 |
|
149 |
if ( ! empty( $product_taxonomies ) ) {
|
150 |
foreach ( $product_taxonomies as $taxonomy_slug => $taxonomy ) {
|
151 |
+
if ( ! in_array( $taxonomy_slug, array( 'product_cat', 'product_tag' ), true ) && 0 !== strpos( $taxonomy_slug, 'pa_' ) ) {
|
152 |
continue;
|
153 |
}
|
154 |
|
156 |
}
|
157 |
}
|
158 |
|
159 |
+
$this->supported_taxonomies = apply_filters( 'yith_wcan_supported_taxonomies', $supported_taxonomies );
|
160 |
}
|
161 |
|
162 |
+
return $this->supported_taxonomies;
|
163 |
}
|
164 |
|
165 |
/**
|
180 |
* ]
|
181 |
*/
|
182 |
public function get_query_vars() {
|
183 |
+
if ( ! is_null( $this->query_vars ) ) {
|
184 |
+
return $this->query_vars;
|
185 |
}
|
186 |
|
187 |
+
$query = $this->sanitize_query( $_GET ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
188 |
|
189 |
// unset parameters that aren't related to filters.
|
190 |
$supported_parameters = apply_filters(
|
207 |
} elseif ( 0 === strpos( $key, 'query_type_' ) ) {
|
208 |
// include meta filtering parameters.
|
209 |
continue;
|
210 |
+
} elseif ( ! in_array( $key, $supported_parameters, true ) ) {
|
211 |
unset( $query[ $key ] );
|
212 |
}
|
213 |
}
|
224 |
}
|
225 |
}
|
226 |
|
227 |
+
/**
|
228 |
+
* We only store _query_vars once main query is executed, to be sure not to left behind any parameter.
|
229 |
+
*
|
230 |
+
* @since 4.1.1
|
231 |
+
*/
|
232 |
+
$this->query_vars = did_action( 'wp' ) ? apply_filters( 'yith_wcan_query_vars', $query, $this ) : null;
|
233 |
|
234 |
// return query.
|
235 |
return $query;
|
241 |
* @return string Query param.
|
242 |
*/
|
243 |
public function get_query_param() {
|
244 |
+
return $this->query_param;
|
245 |
}
|
246 |
|
247 |
/**
|
266 |
* @since 4.0.2
|
267 |
*/
|
268 |
public function get_active_filter( $filter ) {
|
269 |
+
$query_vars = $this->get_query_vars();
|
270 |
+
$labels = $this->get_supported_labels();
|
271 |
+
$taxonomies = $this->get_supported_taxonomies();
|
272 |
+
$label = isset( $labels[ $filter ] ) ? $labels[ $filter ] : false;
|
273 |
$active_filter = false;
|
274 |
|
275 |
if ( ! $label ) {
|
302 |
}
|
303 |
|
304 |
$values[] = array(
|
305 |
+
'label' => $term->name,
|
306 |
'query_vars' => array(
|
307 |
$filter => yith_wcan_esc_term_slug( $term_slug ),
|
308 |
),
|
355 |
return $query_vars;
|
356 |
} else {
|
357 |
$active_filters = array();
|
358 |
+
$labels = $this->get_supported_labels();
|
|
|
359 |
|
360 |
foreach ( $labels as $filter => $label ) {
|
361 |
$active_filter = $this->get_active_filter( $filter );
|
397 |
$query_vars['lang'] = $current_lang;
|
398 |
}
|
399 |
|
400 |
+
$calculate_hash = md5( http_build_query( $query_vars ) );
|
401 |
+
$product_ids = YITH_WCAN_Cache_Helper::get( 'queried_products', $calculate_hash );
|
|
|
402 |
|
403 |
+
if ( ! $product_ids ) {
|
|
|
|
|
404 |
// store original query values, and switch to current context.
|
405 |
+
$tmp_query_vars = $this->query_vars;
|
406 |
+
$tmp_chosen_attributes = $this->chosen_attributes;
|
407 |
+
$this->query_vars = $query_vars;
|
408 |
+
$this->chosen_attributes = null;
|
409 |
|
410 |
// create query to retrieve products.
|
411 |
$query = new WP_Query(
|
412 |
+
apply_filters(
|
413 |
+
'yith_wcan_filtered_products_query',
|
414 |
+
array(
|
415 |
+
'post_type' => 'product',
|
416 |
+
'post_status' => 'publish',
|
417 |
+
'posts_per_page' => '-1',
|
418 |
+
'fields' => 'ids',
|
419 |
+
)
|
420 |
)
|
421 |
);
|
422 |
|
430 |
$product_ids = $query->get_posts();
|
431 |
|
432 |
// save result set to stored queries.
|
433 |
+
YITH_WCAN_Cache_Helper::set( 'queried_products', $product_ids, $calculate_hash );
|
|
|
434 |
|
435 |
// reset original query values.
|
436 |
+
$this->query_vars = $tmp_query_vars;
|
437 |
+
$this->chosen_attributes = $tmp_chosen_attributes;
|
438 |
}
|
439 |
|
440 |
return $product_ids;
|
446 |
* @return bool Whether filters should be applied.
|
447 |
*/
|
448 |
public function should_filter() {
|
449 |
+
$query_param = isset( $_REQUEST[ $this->get_query_param() ] ) ? intval( wp_unslash( $_REQUEST[ $this->get_query_param() ] ) ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
450 |
|
451 |
return apply_filters( 'yith_wcan_should_filter', ! ! $query_param, $this );
|
452 |
}
|
463 |
if ( ! $query instanceof WP_Query ) {
|
464 |
// skip if wrong parameter.
|
465 |
$result = false;
|
466 |
+
} elseif ( ! in_array( 'product', (array) $query->get( 'post_type' ), true ) && ! in_array( $query->get( 'taxonomy' ), array_keys( $this->get_supported_taxonomies() ), true ) ) {
|
467 |
// skip if we're not querying products.
|
468 |
$result = false;
|
469 |
} elseif ( $query->is_main_query() && ! $query->get( 'wc_query' ) ) {
|
612 |
// Set visibility tax_query.
|
613 |
$product_visibility_term_ids = wc_get_product_visibility_term_ids();
|
614 |
|
615 |
+
$tax_query[] = array(
|
616 |
'taxonomy' => 'product_visibility',
|
617 |
'field' => 'term_taxonomy_id',
|
618 |
'terms' => is_search() ? $product_visibility_term_ids['exclude-from-search'] : $product_visibility_term_ids['exclude-from-catalog'],
|
628 |
* @return array
|
629 |
*/
|
630 |
public function get_layered_nav_chosen_attributes() {
|
631 |
+
if ( ! is_array( $this->chosen_attributes ) ) {
|
632 |
+
$this->chosen_attributes = array();
|
633 |
|
634 |
$query_vars = $this->get_query_vars();
|
635 |
|
646 |
|
647 |
$query_type = $this->get( 'query_type_' . $attribute );
|
648 |
|
649 |
+
$this->chosen_attributes[ $taxonomy ]['terms'] = array_map( 'sanitize_title', $filter_terms ); // Ensures correct encoding.
|
650 |
+
$this->chosen_attributes[ $taxonomy ]['query_type'] = $query_type ? $query_type : apply_filters( 'woocommerce_layered_nav_default_query_type', 'and' );
|
651 |
}
|
652 |
}
|
653 |
}
|
654 |
}
|
655 |
+
return $this->chosen_attributes;
|
656 |
}
|
657 |
|
658 |
/**
|
803 |
global $wp_query;
|
804 |
|
805 |
if ( apply_filters( 'yith_wcan_suppress_default_conditional_tags', false ) ) {
|
806 |
+
$wp_query->is_tax = false;
|
807 |
+
$wp_query->is_tag = false;
|
808 |
+
$wp_query->is_home = false;
|
809 |
+
$wp_query->is_single = false;
|
810 |
$wp_query->is_posts_page = false;
|
811 |
}
|
812 |
}
|
831 |
* @return void
|
832 |
*/
|
833 |
public function register_products() {
|
834 |
+
if ( ! $this->is_filtered() || ! empty( $this->products ) || ! apply_filters( 'yith_wcan_process_filters_intersection', true ) ) {
|
835 |
return;
|
836 |
}
|
837 |
|
838 |
+
$this->products = $this->get_filtered_products_by_query_vars();
|
839 |
}
|
840 |
|
841 |
/* === ALTER DEFAULT WC QUERY === */
|
936 |
|
937 |
$query_var = $param;
|
938 |
|
939 |
+
if ( in_array( $param, wc_get_attribute_taxonomy_names(), true ) ) {
|
940 |
$query_var = str_replace( 'pa_', 'filter_', $param );
|
941 |
}
|
942 |
|
954 |
$taxonomies = array_keys( $this->get_supported_taxonomies() );
|
955 |
$query_var = $taxonomy;
|
956 |
|
957 |
+
if ( ! in_array( $taxonomy, $taxonomies, true ) ) {
|
958 |
return false;
|
959 |
}
|
960 |
|
962 |
return true;
|
963 |
}
|
964 |
|
965 |
+
if ( in_array( $taxonomy, wc_get_attribute_taxonomy_names(), true ) ) {
|
966 |
$query_var = str_replace( 'pa_', 'filter_', $taxonomy );
|
967 |
}
|
968 |
|
1005 |
return array();
|
1006 |
}
|
1007 |
|
1008 |
+
if ( isset( $this->products_per_filter[ $taxonomy ][ $term_id ] ) ) {
|
1009 |
+
return $this->products_per_filter[ $taxonomy ][ $term_id ];
|
1010 |
} else {
|
1011 |
+
$posts = YITH_WCAN_Cache_Helper::get( 'object_in_terms', $term_id );
|
|
|
1012 |
|
1013 |
+
if ( ! $posts ) {
|
|
|
|
|
1014 |
$posts = get_objects_in_term( $term_id, $taxonomy );
|
1015 |
|
1016 |
// save result set to stored queries.
|
1017 |
+
YITH_WCAN_Cache_Helper::set( 'object_in_terms', $posts, $term_id );
|
|
|
1018 |
}
|
1019 |
|
1020 |
if ( is_wp_error( $posts ) ) {
|
1022 |
}
|
1023 |
|
1024 |
if ( ! $exclude_taxonomy ) {
|
1025 |
+
$query_vars = $this->get_query_vars();
|
1026 |
$original_taxonomy = $taxonomy;
|
1027 |
|
1028 |
+
if ( in_array( $original_taxonomy, wc_get_attribute_taxonomy_names(), true ) ) {
|
1029 |
$original_taxonomy = str_replace( 'pa_', 'filter_', $original_taxonomy );
|
1030 |
}
|
1031 |
|
1039 |
}
|
1040 |
|
1041 |
$match = array_intersect( $posts, $products );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1042 |
|
1043 |
+
$this->products_per_filter[ $taxonomy ][ $term_id ] = $match;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1044 |
|
1045 |
+
return $match;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1046 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1047 |
}
|
1048 |
|
1049 |
/* === UTILS === */
|
1054 |
* @return array Array of product ids
|
1055 |
*/
|
1056 |
public function get_product_ids_in_stock() {
|
1057 |
+
|
1058 |
// Load from cache.
|
1059 |
+
$product_ids_in_stock = YITH_WCAN_Cache_Helper::get( 'products_instock' );
|
|
|
1060 |
|
1061 |
// Valid cache found.
|
1062 |
if ( false !== $product_ids_in_stock ) {
|
1064 |
}
|
1065 |
|
1066 |
$product_ids_in_stock = wc_get_products(
|
1067 |
+
apply_filters(
|
1068 |
+
'yith_wcan_product_ids_in_stock_args',
|
1069 |
+
array(
|
1070 |
+
'status' => 'publish',
|
1071 |
+
'stock_status' => 'instock',
|
1072 |
+
'limit' => - 1,
|
1073 |
+
'return' => 'ids',
|
1074 |
+
'yith_wcan_suppress_filters' => true,
|
1075 |
+
)
|
1076 |
)
|
1077 |
);
|
1078 |
|
1079 |
+
YITH_WCAN_Cache_Helper::set( 'products_instock', $product_ids_in_stock );
|
1080 |
|
1081 |
return $product_ids_in_stock;
|
1082 |
}
|
1114 |
if ( ! empty( $vars_to_add ) ) {
|
1115 |
foreach ( $vars_to_add as $vars ) {
|
1116 |
foreach ( $vars as $key => $value ) {
|
1117 |
+
if ( in_array( $key, array_keys( $supported_taxonomies ), true ) ) {
|
1118 |
if ( ! isset( $query_vars[ $key ] ) ) {
|
1119 |
$query_vars[ $key ] = $value;
|
1120 |
} else {
|
1121 |
+
$glue = 'and' === $merge_mode ? '+' : ',';
|
1122 |
$existing = explode( $glue, $query_vars[ $key ] );
|
1123 |
+
$new = explode( $glue, $value );
|
1124 |
|
1125 |
$query_vars[ $key ] = implode( $glue, array_unique( array_merge( $existing, $new ) ) );
|
1126 |
}
|
1133 |
$query_vars[ $key ] = $value;
|
1134 |
} else {
|
1135 |
$existing = explode( ',', $query_vars[ $key ] );
|
1136 |
+
$new = explode( ',', $value );
|
1137 |
|
1138 |
$query_vars[ $key ] = implode( ',', array_unique( array_merge( $existing, $new ) ) );
|
1139 |
}
|
1140 |
} elseif ( is_array( $value ) ) {
|
1141 |
+
$glue = 'and' === $merge_mode ? '+' : ',';
|
1142 |
$query_vars[ $key ] = implode( $glue, array_merge( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
|
1143 |
} else {
|
1144 |
$query_vars[ $key ] = $value;
|
1165 |
if ( ! empty( $vars_to_remove ) ) {
|
1166 |
foreach ( $vars_to_remove as $vars ) {
|
1167 |
foreach ( $vars as $key => $value ) {
|
1168 |
+
if ( in_array( $key, array_keys( $supported_taxonomies ), true ) ) {
|
1169 |
if ( isset( $query_vars[ $key ] ) ) {
|
1170 |
+
$glue = 'and' === $merge_mode ? '+' : ',';
|
1171 |
$existing = explode( $glue, $query_vars[ $key ] );
|
1172 |
+
$new = explode( $glue, $value );
|
1173 |
|
1174 |
$query_vars[ $key ] = implode( $glue, array_unique( array_diff( $existing, $new ) ) );
|
1175 |
}
|
1184 |
|
1185 |
if ( isset( $query_vars[ $key ] ) ) {
|
1186 |
$existing = explode( ',', $query_vars[ $key ] );
|
1187 |
+
$new = explode( ',', $value );
|
1188 |
|
1189 |
$query_vars[ $key ] = implode( ',', array_unique( array_diff( $existing, $new ) ) );
|
1190 |
}
|
1194 |
unset( $query_vars[ "query_type_{$attribute}" ] );
|
1195 |
}
|
1196 |
} elseif ( is_array( $value ) ) {
|
1197 |
+
$glue = 'and' === $merge_mode ? '+' : ',';
|
1198 |
$query_vars[ $key ] = implode( $glue, array_diff( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
|
1199 |
|
1200 |
if ( empty( $query_vars[ $key ] ) ) {
|
1239 |
* @return array Filtered array of tax queries.
|
1240 |
*/
|
1241 |
public function reduce_tax_query( $tax_queries ) {
|
1242 |
+
$pre = apply_filters( 'yith_wcan_pre_reduce_tax_query', false, $tax_queries );
|
1243 |
+
|
1244 |
+
if ( false !== $pre ) {
|
1245 |
+
return $pre;
|
1246 |
+
}
|
1247 |
+
|
1248 |
$result = array();
|
1249 |
$queries = array();
|
1250 |
$relation = 'AND';
|
1272 |
|
1273 |
if ( ! isset( $queries[ $hash ] ) ) {
|
1274 |
$queries[ $hash ] = $tax_query;
|
1275 |
+
} elseif ( ! empty( $tax_query['terms'] ) ) {
|
1276 |
$queries[ $hash ]['terms'] = array_unique( (array) $queries[ $hash ]['terms'] + (array) $tax_query['terms'] );
|
1277 |
}
|
1278 |
}
|
1294 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
1295 |
*/
|
1296 |
public static function instance() {
|
1297 |
+
if ( is_null( self::$instance ) ) {
|
1298 |
+
self::$instance = new self();
|
1299 |
}
|
1300 |
|
1301 |
+
return self::$instance;
|
1302 |
}
|
1303 |
}
|
1304 |
}
|
1309 |
*
|
1310 |
* @return YITH_WCAN_Query
|
1311 |
*/
|
1312 |
+
function YITH_WCAN_Query() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
1313 |
if ( defined( 'YITH_WCAN_PREMIUM' ) ) {
|
1314 |
return YITH_WCAN_Query_Premium::instance();
|
1315 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Defines all the shortcodes supported by the plugin, and additional functions to support external compose
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
@@ -21,9 +21,9 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
|
|
21 |
/**
|
22 |
* A list of available plugin shortcodes
|
23 |
*
|
24 |
-
* @var array $
|
25 |
*/
|
26 |
-
private static $
|
27 |
|
28 |
/**
|
29 |
* Register shortcode and performs all shortcodes related ops
|
@@ -32,7 +32,7 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
|
|
32 |
*/
|
33 |
public static function init() {
|
34 |
// init available shortcodes.
|
35 |
-
self::$
|
36 |
'yith_wcan_shortcodes',
|
37 |
array(
|
38 |
'yith_wcan_filters',
|
@@ -50,21 +50,21 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
|
|
50 |
* @return void
|
51 |
*/
|
52 |
public static function init_shortcodes() {
|
53 |
-
if ( empty( self::$
|
54 |
return;
|
55 |
}
|
56 |
|
57 |
-
foreach ( self::$
|
58 |
$classname = str_replace( 'yith_wcan', 'YITH_WCAN_Shortcode', $tag );
|
59 |
$classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
|
60 |
-
$filename = 'class
|
61 |
$filepath = YITH_WCAN_INC . 'shortcodes/' . $filename . '.php';
|
62 |
|
63 |
if ( ! file_exists( $filepath ) ) {
|
64 |
continue;
|
65 |
}
|
66 |
|
67 |
-
include_once
|
68 |
|
69 |
if ( class_exists( $classname ) ) {
|
70 |
add_shortcode( $tag, array( $classname, 'render' ) );
|
@@ -97,21 +97,21 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
|
|
97 |
* @return void
|
98 |
*/
|
99 |
public static function register_elementor_widgets() {
|
100 |
-
if ( empty( self::$
|
101 |
return;
|
102 |
}
|
103 |
|
104 |
-
foreach ( self::$
|
105 |
$classname = str_replace( 'yith_wcan', 'YITH_WCAN_Elementor', $tag );
|
106 |
$classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
|
107 |
-
$filename = 'class
|
108 |
$filepath = YITH_WCAN_INC . 'elementor/' . $filename . '.php';
|
109 |
|
110 |
if ( ! file_exists( $filepath ) ) {
|
111 |
continue;
|
112 |
}
|
113 |
|
114 |
-
include_once
|
115 |
|
116 |
if ( class_exists( $classname ) ) {
|
117 |
\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new $classname() );
|
5 |
* Defines all the shortcodes supported by the plugin, and additional functions to support external compose
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
21 |
/**
|
22 |
* A list of available plugin shortcodes
|
23 |
*
|
24 |
+
* @var array $available_shortcodes
|
25 |
*/
|
26 |
+
private static $available_shortcodes;
|
27 |
|
28 |
/**
|
29 |
* Register shortcode and performs all shortcodes related ops
|
32 |
*/
|
33 |
public static function init() {
|
34 |
// init available shortcodes.
|
35 |
+
self::$available_shortcodes = apply_filters(
|
36 |
'yith_wcan_shortcodes',
|
37 |
array(
|
38 |
'yith_wcan_filters',
|
50 |
* @return void
|
51 |
*/
|
52 |
public static function init_shortcodes() {
|
53 |
+
if ( empty( self::$available_shortcodes ) ) {
|
54 |
return;
|
55 |
}
|
56 |
|
57 |
+
foreach ( self::$available_shortcodes as $tag ) {
|
58 |
$classname = str_replace( 'yith_wcan', 'YITH_WCAN_Shortcode', $tag );
|
59 |
$classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
|
60 |
+
$filename = 'class-' . strtolower( str_replace( '_', '-', $classname ) );
|
61 |
$filepath = YITH_WCAN_INC . 'shortcodes/' . $filename . '.php';
|
62 |
|
63 |
if ( ! file_exists( $filepath ) ) {
|
64 |
continue;
|
65 |
}
|
66 |
|
67 |
+
include_once $filepath;
|
68 |
|
69 |
if ( class_exists( $classname ) ) {
|
70 |
add_shortcode( $tag, array( $classname, 'render' ) );
|
97 |
* @return void
|
98 |
*/
|
99 |
public static function register_elementor_widgets() {
|
100 |
+
if ( empty( self::$available_shortcodes ) ) {
|
101 |
return;
|
102 |
}
|
103 |
|
104 |
+
foreach ( self::$available_shortcodes as $tag ) {
|
105 |
$classname = str_replace( 'yith_wcan', 'YITH_WCAN_Elementor', $tag );
|
106 |
$classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
|
107 |
+
$filename = 'class-' . strtolower( str_replace( '_', '-', $classname ) );
|
108 |
$filepath = YITH_WCAN_INC . 'elementor/' . $filename . '.php';
|
109 |
|
110 |
if ( ! file_exists( $filepath ) ) {
|
111 |
continue;
|
112 |
}
|
113 |
|
114 |
+
include_once $filepath;
|
115 |
|
116 |
if ( class_exists( $classname ) ) {
|
117 |
\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new $classname() );
|
@@ -5,7 +5,7 @@
|
|
5 |
* Defines all the widgets supported by the plugin
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0.2
|
10 |
*/
|
11 |
|
@@ -21,9 +21,9 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
|
|
21 |
/**
|
22 |
* A list of available plugin widgets
|
23 |
*
|
24 |
-
* @var array $
|
25 |
*/
|
26 |
-
private static $
|
27 |
|
28 |
/**
|
29 |
* Register shortcode and performs all shortcodes related ops
|
@@ -32,7 +32,7 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
|
|
32 |
*/
|
33 |
public static function init() {
|
34 |
// init available shortcodes.
|
35 |
-
self::$
|
36 |
'yith_wcan_widgets',
|
37 |
array(
|
38 |
'YITH_WCAN_Navigation_Widget',
|
@@ -50,13 +50,13 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
|
|
50 |
* @return void
|
51 |
*/
|
52 |
public static function init_widgets() {
|
53 |
-
if ( empty( self::$
|
54 |
return;
|
55 |
}
|
56 |
|
57 |
-
foreach ( self::$
|
58 |
-
$filename
|
59 |
-
$filepath
|
60 |
|
61 |
if ( ! file_exists( $filepath ) ) {
|
62 |
continue;
|
@@ -64,14 +64,14 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
|
|
64 |
|
65 |
if ( false !== strpos( $filename, '-premium' ) ) {
|
66 |
$parent_filename = str_replace( '-premium', '', $filename );
|
67 |
-
$parent_filepath
|
68 |
|
69 |
if ( file_exists( $parent_filepath ) ) {
|
70 |
-
include_once
|
71 |
}
|
72 |
}
|
73 |
|
74 |
-
include_once
|
75 |
|
76 |
if ( class_exists( $classname ) ) {
|
77 |
register_widget( $classname );
|
5 |
* Defines all the widgets supported by the plugin
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes
|
9 |
* @version 4.0.2
|
10 |
*/
|
11 |
|
21 |
/**
|
22 |
* A list of available plugin widgets
|
23 |
*
|
24 |
+
* @var array $available_widgets
|
25 |
*/
|
26 |
+
private static $available_widgets;
|
27 |
|
28 |
/**
|
29 |
* Register shortcode and performs all shortcodes related ops
|
32 |
*/
|
33 |
public static function init() {
|
34 |
// init available shortcodes.
|
35 |
+
self::$available_widgets = apply_filters(
|
36 |
'yith_wcan_widgets',
|
37 |
array(
|
38 |
'YITH_WCAN_Navigation_Widget',
|
50 |
* @return void
|
51 |
*/
|
52 |
public static function init_widgets() {
|
53 |
+
if ( empty( self::$available_widgets ) ) {
|
54 |
return;
|
55 |
}
|
56 |
|
57 |
+
foreach ( self::$available_widgets as $classname ) {
|
58 |
+
$filename = 'class-' . strtolower( str_replace( '_', '-', $classname ) );
|
59 |
+
$filepath = YITH_WCAN_INC . 'widgets/' . $filename . '.php';
|
60 |
|
61 |
if ( ! file_exists( $filepath ) ) {
|
62 |
continue;
|
64 |
|
65 |
if ( false !== strpos( $filename, '-premium' ) ) {
|
66 |
$parent_filename = str_replace( '-premium', '', $filename );
|
67 |
+
$parent_filepath = YITH_WCAN_INC . 'widgets/' . $parent_filename . '.php';
|
68 |
|
69 |
if ( file_exists( $parent_filepath ) ) {
|
70 |
+
include_once $parent_filepath;
|
71 |
}
|
72 |
}
|
73 |
|
74 |
+
include_once $filepath;
|
75 |
|
76 |
if ( class_exists( $classname ) ) {
|
77 |
register_widget( $classname );
|
@@ -3,7 +3,7 @@
|
|
3 |
* Main class
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
@@ -56,7 +56,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
56 |
* @var YITH_WCAN
|
57 |
* @since 4.0.0
|
58 |
*/
|
59 |
-
protected static $
|
60 |
|
61 |
/**
|
62 |
* Parameter of the term object used to filter shop.
|
@@ -105,7 +105,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
105 |
global $plugin_fw_data;
|
106 |
if ( ! empty( $plugin_fw_data ) ) {
|
107 |
$plugin_fw_file = array_shift( $plugin_fw_data );
|
108 |
-
require_once
|
109 |
}
|
110 |
}
|
111 |
}
|
@@ -140,30 +140,31 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
140 |
$required = apply_filters(
|
141 |
'yith_wcan_required_files',
|
142 |
array(
|
143 |
-
'functions
|
144 |
-
'class
|
145 |
-
'class
|
146 |
-
'class
|
147 |
-
'class
|
148 |
-
'class
|
149 |
-
'class
|
150 |
-
'class
|
151 |
-
'class
|
152 |
-
'class
|
153 |
-
'class
|
154 |
-
'class
|
155 |
-
'
|
|
|
156 |
)
|
157 |
);
|
158 |
|
159 |
foreach ( $required as $file ) {
|
160 |
-
file_exists( YITH_WCAN_INC . $file ) && require_once
|
161 |
}
|
162 |
|
163 |
// basic cli support.
|
164 |
if ( defined( 'WP_CLI' ) && WP_CLI ) {
|
165 |
-
file_exists( YITH_WCAN_DIR . 'includes/wp-cli/class
|
166 |
-
file_exists( YITH_WCAN_DIR . 'tools/wp-cli/class
|
167 |
}
|
168 |
}
|
169 |
|
@@ -207,10 +208,10 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
207 |
if ( $supported_types ) {
|
208 |
foreach ( $supported_types as $type => $label ) {
|
209 |
$file_name = str_replace( '_', '-', $type );
|
210 |
-
$file_name = "class
|
211 |
$file_path = YITH_WCAN_INC . '/filters/' . $file_name;
|
212 |
|
213 |
-
file_exists( $file_path ) && require_once
|
214 |
}
|
215 |
}
|
216 |
}
|
@@ -244,7 +245,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
244 |
$compatibility_path = YITH_WCAN_INC . "compatibility/themes/{$theme}/{$theme}.php";
|
245 |
|
246 |
if ( file_exists( $compatibility_path ) ) {
|
247 |
-
include_once
|
248 |
}
|
249 |
}
|
250 |
|
@@ -256,7 +257,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
256 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
257 |
*/
|
258 |
public function load_plugin_compatibilities() {
|
259 |
-
$supported_plugins = $this->
|
260 |
|
261 |
if ( ! empty( $supported_plugins ) ) {
|
262 |
foreach ( $supported_plugins as $plugin => $args ) {
|
@@ -274,7 +275,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
274 |
continue;
|
275 |
}
|
276 |
|
277 |
-
include_once
|
278 |
|
279 |
if ( isset( $args['callback'] ) ) {
|
280 |
list( $callback_callable, $callback_args ) = $args['callback'];
|
@@ -350,21 +351,24 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
350 |
* @since 4.0
|
351 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
352 |
*/
|
353 |
-
protected function
|
354 |
if ( empty( $this->supported_plugins ) ) {
|
355 |
$this->supported_plugins = array(
|
356 |
-
'ultimate-member'
|
357 |
'check' => array( 'class_exists', array( 'UM_API' ) ),
|
358 |
),
|
359 |
-
'qtranslate-x'
|
360 |
'check' => array( 'class_exists', array( 'QTX_Translator' ) ),
|
361 |
),
|
362 |
-
'wpml'
|
363 |
'check' => array( 'class_exists', array( 'Sitepress' ) ),
|
364 |
),
|
365 |
'yith-woocommerce-booking' => array(
|
366 |
'check' => array( 'class_exists', array( 'YITH_WCBK' ) ),
|
367 |
),
|
|
|
|
|
|
|
368 |
);
|
369 |
}
|
370 |
|
@@ -382,11 +386,11 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
|
|
382 |
if ( class_exists( 'YITH_WCAN_Premium' ) ) {
|
383 |
return YITH_WCAN_Premium::instance();
|
384 |
} else {
|
385 |
-
if ( is_null( self::$
|
386 |
-
self::$
|
387 |
}
|
388 |
|
389 |
-
return self::$
|
390 |
}
|
391 |
}
|
392 |
}
|
@@ -400,8 +404,7 @@ if ( ! function_exists( 'YITH_WCAN' ) ) {
|
|
400 |
* @since 4.0.0
|
401 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
402 |
*/
|
403 |
-
function YITH_WCAN() {
|
404 |
return YITH_WCAN::instance();
|
405 |
}
|
406 |
}
|
407 |
-
|
3 |
* Main class
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
56 |
* @var YITH_WCAN
|
57 |
* @since 4.0.0
|
58 |
*/
|
59 |
+
protected static $instance = null;
|
60 |
|
61 |
/**
|
62 |
* Parameter of the term object used to filter shop.
|
105 |
global $plugin_fw_data;
|
106 |
if ( ! empty( $plugin_fw_data ) ) {
|
107 |
$plugin_fw_file = array_shift( $plugin_fw_data );
|
108 |
+
require_once $plugin_fw_file;
|
109 |
}
|
110 |
}
|
111 |
}
|
140 |
$required = apply_filters(
|
141 |
'yith_wcan_required_files',
|
142 |
array(
|
143 |
+
'functions-yith-wcan.php',
|
144 |
+
'class-yith-wcan-cache-helper.php',
|
145 |
+
'class-yith-wcan-query.php',
|
146 |
+
'class-yith-wcan-install.php',
|
147 |
+
'class-yith-wcan-filter.php',
|
148 |
+
'class-yith-wcan-filter-factory.php',
|
149 |
+
'class-yith-wcan-preset.php',
|
150 |
+
'class-yith-wcan-presets.php',
|
151 |
+
'class-yith-wcan-preset-factory.php',
|
152 |
+
'class-yith-wcan-shortcodes.php',
|
153 |
+
'class-yith-wcan-widgets.php',
|
154 |
+
'class-yith-wcan-admin.php',
|
155 |
+
'class-yith-wcan-frontend.php',
|
156 |
+
'data-stores/class-yith-wcan-preset-data-store.php',
|
157 |
)
|
158 |
);
|
159 |
|
160 |
foreach ( $required as $file ) {
|
161 |
+
file_exists( YITH_WCAN_INC . $file ) && require_once YITH_WCAN_INC . $file;
|
162 |
}
|
163 |
|
164 |
// basic cli support.
|
165 |
if ( defined( 'WP_CLI' ) && WP_CLI ) {
|
166 |
+
file_exists( YITH_WCAN_DIR . 'includes/wp-cli/class-yith-wcan-cli-commands.php' ) && require_once YITH_WCAN_DIR . 'includes/wp-cli/class-yith-wcan-cli-commands.php';
|
167 |
+
file_exists( YITH_WCAN_DIR . 'tools/wp-cli/class-yith-wcan-cli-test-commands.php' ) && require_once YITH_WCAN_DIR . 'tools/wp-cli/class-yith-wcan-cli-test-commands.php';
|
168 |
}
|
169 |
}
|
170 |
|
208 |
if ( $supported_types ) {
|
209 |
foreach ( $supported_types as $type => $label ) {
|
210 |
$file_name = str_replace( '_', '-', $type );
|
211 |
+
$file_name = "class-yith-wcan-filter-{$file_name}.php";
|
212 |
$file_path = YITH_WCAN_INC . '/filters/' . $file_name;
|
213 |
|
214 |
+
file_exists( $file_path ) && require_once $file_path;
|
215 |
}
|
216 |
}
|
217 |
}
|
245 |
$compatibility_path = YITH_WCAN_INC . "compatibility/themes/{$theme}/{$theme}.php";
|
246 |
|
247 |
if ( file_exists( $compatibility_path ) ) {
|
248 |
+
include_once $compatibility_path;
|
249 |
}
|
250 |
}
|
251 |
|
257 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
258 |
*/
|
259 |
public function load_plugin_compatibilities() {
|
260 |
+
$supported_plugins = $this->get_compatible_plugins();
|
261 |
|
262 |
if ( ! empty( $supported_plugins ) ) {
|
263 |
foreach ( $supported_plugins as $plugin => $args ) {
|
275 |
continue;
|
276 |
}
|
277 |
|
278 |
+
include_once $compatibility_path;
|
279 |
|
280 |
if ( isset( $args['callback'] ) ) {
|
281 |
list( $callback_callable, $callback_args ) = $args['callback'];
|
351 |
* @since 4.0
|
352 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
353 |
*/
|
354 |
+
protected function get_compatible_plugins() {
|
355 |
if ( empty( $this->supported_plugins ) ) {
|
356 |
$this->supported_plugins = array(
|
357 |
+
'ultimate-member' => array(
|
358 |
'check' => array( 'class_exists', array( 'UM_API' ) ),
|
359 |
),
|
360 |
+
'qtranslate-x' => array(
|
361 |
'check' => array( 'class_exists', array( 'QTX_Translator' ) ),
|
362 |
),
|
363 |
+
'wpml' => array(
|
364 |
'check' => array( 'class_exists', array( 'Sitepress' ) ),
|
365 |
),
|
366 |
'yith-woocommerce-booking' => array(
|
367 |
'check' => array( 'class_exists', array( 'YITH_WCBK' ) ),
|
368 |
),
|
369 |
+
'yith-woocommerce-colors-label-variations' => array(
|
370 |
+
'check' => array( 'class_exists', array( 'YITH_WCCL' ) ),
|
371 |
+
),
|
372 |
);
|
373 |
}
|
374 |
|
386 |
if ( class_exists( 'YITH_WCAN_Premium' ) ) {
|
387 |
return YITH_WCAN_Premium::instance();
|
388 |
} else {
|
389 |
+
if ( is_null( self::$instance ) ) {
|
390 |
+
self::$instance = new self();
|
391 |
}
|
392 |
|
393 |
+
return self::$instance;
|
394 |
}
|
395 |
}
|
396 |
}
|
404 |
* @since 4.0.0
|
405 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
406 |
*/
|
407 |
+
function YITH_WCAN() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
408 |
return YITH_WCAN::instance();
|
409 |
}
|
410 |
}
|
|
@@ -3,7 +3,7 @@
|
|
3 |
* QTranslateX plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
3 |
* QTranslateX plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Compatibility
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
@@ -3,7 +3,7 @@
|
|
3 |
* Ultimate member plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
3 |
* Ultimate member plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Compatibility
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -1,9 +1,9 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* WPML plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.1
|
8 |
*/
|
9 |
|
@@ -190,7 +190,7 @@ class WPML_Language_Metabox {
|
|
190 |
foreach ( $filters as $filter ) {
|
191 |
if ( $filter->has_terms() ) {
|
192 |
$terms_options = $filter->get_terms_options();
|
193 |
-
$new_terms
|
194 |
|
195 |
foreach ( $terms_options as $term_id => $term_options ) {
|
196 |
$translated_term_id = apply_filters( 'wpml_object_id', $term_id, $filter->get_taxonomy(), false, $lang );
|
@@ -236,7 +236,7 @@ class WPML_Language_Metabox {
|
|
236 |
$this->panel_slug = YITH_WCAN()->admin->get_panel_page();
|
237 |
}
|
238 |
|
239 |
-
return ! empty( $_GET['page'] ) && ! empty( $_GET['preset'] ) && $this->get_panel_slug() === $_GET['page'];
|
240 |
}
|
241 |
|
242 |
/**
|
1 |
+
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
|
2 |
/**
|
3 |
* WPML plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Compatibility
|
7 |
* @version 4.0.1
|
8 |
*/
|
9 |
|
190 |
foreach ( $filters as $filter ) {
|
191 |
if ( $filter->has_terms() ) {
|
192 |
$terms_options = $filter->get_terms_options();
|
193 |
+
$new_terms = array();
|
194 |
|
195 |
foreach ( $terms_options as $term_id => $term_options ) {
|
196 |
$translated_term_id = apply_filters( 'wpml_object_id', $term_id, $filter->get_taxonomy(), false, $lang );
|
236 |
$this->panel_slug = YITH_WCAN()->admin->get_panel_page();
|
237 |
}
|
238 |
|
239 |
+
return ! empty( $_GET['page'] ) && ! empty( $_GET['preset'] ) && $this->get_panel_slug() === $_GET['page']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
240 |
}
|
241 |
|
242 |
/**
|
@@ -1,9 +1,9 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* YITH WooCommerce Booking plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.1.0
|
8 |
*/
|
9 |
|
@@ -25,7 +25,7 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
|
|
25 |
* @var YITH_WCAN_Booking_Compatibility
|
26 |
* @since 4.0.0
|
27 |
*/
|
28 |
-
protected static $
|
29 |
|
30 |
/**
|
31 |
* Init integration, hooking all required methods
|
@@ -45,7 +45,9 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
|
|
45 |
* @return array Filtered post__in param.
|
46 |
*/
|
47 |
public function filter_post_in( $post_in ) {
|
48 |
-
|
|
|
|
|
49 |
return $post_in;
|
50 |
}
|
51 |
|
@@ -55,7 +57,7 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
|
|
55 |
return $post_in;
|
56 |
}
|
57 |
|
58 |
-
$product_ids = $search_helper->search_booking_products( $
|
59 |
|
60 |
if ( empty( $post_in ) && ! empty( $product_ids ) ) {
|
61 |
return $product_ids;
|
@@ -81,7 +83,9 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
|
|
81 |
* @return array Filtered supported vars.
|
82 |
*/
|
83 |
public function filter_supported_query_vars( $supported_params ) {
|
84 |
-
|
|
|
|
|
85 |
return $supported_params;
|
86 |
}
|
87 |
|
@@ -125,11 +129,11 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
|
|
125 |
* @return YITH_WCAN_Booking_Compatibility Class unique instance
|
126 |
*/
|
127 |
public static function instance() {
|
128 |
-
if ( is_null( self::$
|
129 |
-
self::$
|
130 |
}
|
131 |
|
132 |
-
return self::$
|
133 |
}
|
134 |
}
|
135 |
}
|
1 |
+
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
|
2 |
/**
|
3 |
* YITH WooCommerce Booking plugin support
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Compatibility
|
7 |
* @version 4.1.0
|
8 |
*/
|
9 |
|
25 |
* @var YITH_WCAN_Booking_Compatibility
|
26 |
* @since 4.0.0
|
27 |
*/
|
28 |
+
protected static $instance = null;
|
29 |
|
30 |
/**
|
31 |
* Init integration, hooking all required methods
|
45 |
* @return array Filtered post__in param.
|
46 |
*/
|
47 |
public function filter_post_in( $post_in ) {
|
48 |
+
$request = $_REQUEST; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
49 |
+
|
50 |
+
if ( ! isset( $request['yith-wcbk-booking-search'] ) || 'search-bookings' !== $request['yith-wcbk-booking-search'] ) {
|
51 |
return $post_in;
|
52 |
}
|
53 |
|
57 |
return $post_in;
|
58 |
}
|
59 |
|
60 |
+
$product_ids = $search_helper->search_booking_products( $request );
|
61 |
|
62 |
if ( empty( $post_in ) && ! empty( $product_ids ) ) {
|
63 |
return $product_ids;
|
83 |
* @return array Filtered supported vars.
|
84 |
*/
|
85 |
public function filter_supported_query_vars( $supported_params ) {
|
86 |
+
$request = $_REQUEST; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
87 |
+
|
88 |
+
if ( ! function_exists( 'YITH_WCBK' ) || ! isset( $request['yith-wcbk-booking-search'] ) || 'search-bookings' !== $request['yith-wcbk-booking-search'] ) {
|
89 |
return $supported_params;
|
90 |
}
|
91 |
|
129 |
* @return YITH_WCAN_Booking_Compatibility Class unique instance
|
130 |
*/
|
131 |
public static function instance() {
|
132 |
+
if ( is_null( self::$instance ) ) {
|
133 |
+
self::$instance = new self();
|
134 |
}
|
135 |
|
136 |
+
return self::$instance;
|
137 |
}
|
138 |
}
|
139 |
}
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
|
2 |
+
/**
|
3 |
+
* YITH WooCommerce Color Label Variations plugin support
|
4 |
+
*
|
5 |
+
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Compatibility
|
7 |
+
* @version 4.1.1
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'YITH_WCAN' ) ) {
|
11 |
+
exit;
|
12 |
+
} // Exit if accessed directly
|
13 |
+
|
14 |
+
if ( ! class_exists( 'YITH_WCAN_Color_Label_Compatibility' ) ) {
|
15 |
+
/**
|
16 |
+
* Class that implements methods required to integrate single variations of YITH WC Color and Labels in YITH WCAN Filters.
|
17 |
+
*
|
18 |
+
* @since 4.1.1
|
19 |
+
*/
|
20 |
+
class YITH_WCAN_Color_Label_Compatibility {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Main instance
|
24 |
+
*
|
25 |
+
* @var YITH_WCAN_Color_Label_Compatibility
|
26 |
+
* @since 4.1.1
|
27 |
+
*/
|
28 |
+
protected static $instance = null;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Init integration, hooking all required methods
|
32 |
+
*
|
33 |
+
* @return void
|
34 |
+
*/
|
35 |
+
public function init() {
|
36 |
+
// clear transients when C&L options change.
|
37 |
+
add_action( 'update_option_yith-wccl-show-single-variations-loop', array( 'YITH_WCAN_Cache_Helper', 'delete_transients' ) );
|
38 |
+
add_action( 'update_option_yith-wccl-hide-parent-products-loop', array( 'YITH_WCAN_Cache_Helper', 'delete_transients' ) );
|
39 |
+
|
40 |
+
// add support for variations in query, when C&L asks for it.
|
41 |
+
if ( 'yes' === get_option( 'yith-wccl-show-single-variations-loop', 'no' ) ) {
|
42 |
+
add_filter( 'yith_wcan_product_ids_in_stock_args', array( $this, 'add_variations_ids_in_stock' ) );
|
43 |
+
add_filter( 'yith_wcan_filtered_products_query', array( $this, 'add_variation_query_to_filtered_products' ) );
|
44 |
+
}
|
45 |
+
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Filters post in for YITH WCAN queries, including post_in parameter as computed by Booking plugin
|
50 |
+
*
|
51 |
+
* @param array $query_args Array of products types.
|
52 |
+
* @return array Query arguments.
|
53 |
+
*/
|
54 |
+
public function add_variations_ids_in_stock( $query_args ) {
|
55 |
+
// add variation among valid product types.
|
56 |
+
$product_types = array_merge(
|
57 |
+
array_keys( wc_get_product_types() ),
|
58 |
+
array(
|
59 |
+
'variation',
|
60 |
+
)
|
61 |
+
);
|
62 |
+
|
63 |
+
// remove variable type if necessary.
|
64 |
+
$variable_index = array_search( 'variable', $product_types, true );
|
65 |
+
|
66 |
+
if ( 'yes' === get_option( 'yith-wccl-hide-parent-products-loop', 'yes' ) && false !== $variable_index ) {
|
67 |
+
unset( $product_types[ $variable_index ] );
|
68 |
+
}
|
69 |
+
|
70 |
+
$query_args['type'] = $product_types;
|
71 |
+
|
72 |
+
return $query_args;
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Add_variation_query_to_filtered_products
|
77 |
+
*
|
78 |
+
* @param array $query_args Array of products types.
|
79 |
+
* @return array Product query arguments.
|
80 |
+
*/
|
81 |
+
public function add_variation_query_to_filtered_products( $query_args ) {
|
82 |
+
$query_args['post_type'] = array(
|
83 |
+
'product',
|
84 |
+
'product_variation',
|
85 |
+
);
|
86 |
+
|
87 |
+
return $query_args;
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Compatibility class instance
|
92 |
+
*
|
93 |
+
* @return YITH_WCAN_Color_Label_Compatibility Class unique instance
|
94 |
+
*/
|
95 |
+
public static function instance() {
|
96 |
+
|
97 |
+
if ( is_null( self::$instance ) ) {
|
98 |
+
self::$instance = new self();
|
99 |
+
}
|
100 |
+
|
101 |
+
return self::$instance;
|
102 |
+
}
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
// init compatibility.
|
107 |
+
if ( defined( 'YITH_WCCL_PREMIUM' ) ) {
|
108 |
+
YITH_WCAN_Color_Label_Compatibility::instance()->init();
|
109 |
+
}
|
@@ -25,4 +25,4 @@ if ( ! function_exists( 'yith_wcan_hello_elementor_content_selector' ) ) {
|
|
25 |
}
|
26 |
|
27 |
add_filter( 'yith_wcan_content_selector', 'yith_wcan_hello_elementor_content_selector' );
|
28 |
-
}
|
25 |
}
|
26 |
|
27 |
add_filter( 'yith_wcan_content_selector', 'yith_wcan_hello_elementor_content_selector' );
|
28 |
+
}
|
@@ -3,7 +3,7 @@
|
|
3 |
* Filter Preset data store
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 3.0.0
|
8 |
*/
|
9 |
|
@@ -23,7 +23,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
|
|
23 |
*
|
24 |
* @var array
|
25 |
*/
|
26 |
-
protected $
|
27 |
'_selector' => 'selector',
|
28 |
'_enabled' => 'enabled',
|
29 |
'_filters' => 'filters',
|
@@ -95,14 +95,14 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
|
|
95 |
$posts_object = get_posts(
|
96 |
array_merge(
|
97 |
array(
|
98 |
-
'post_type'
|
99 |
'post_status' => 'publish',
|
100 |
'numberposts' => 1,
|
101 |
),
|
102 |
$data->get_id() ? array( 'p' => $data->get_id() ) : array( 'name' => $data->get_slug() )
|
103 |
)
|
104 |
);
|
105 |
-
$post_object
|
106 |
|
107 |
if ( ! $post_object || YITH_WCAN_Presets()->get_post_type() !== $post_object->post_type ) {
|
108 |
throw new Exception( _x( 'Invalid preset.', '[Generic] Error that happens when trying to read a filter preset that does not exist', 'yith-woocommerce-ajax-navigation' ) );
|
@@ -251,7 +251,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
|
|
251 |
protected function read_post_meta( &$preset, $force = false ) {
|
252 |
$id = $preset->get_id();
|
253 |
$post_meta_values = get_post_meta( $id );
|
254 |
-
$meta_key_to_props = $this->
|
255 |
|
256 |
$set_props = array();
|
257 |
|
@@ -273,7 +273,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
|
|
273 |
* @since 4.0.0
|
274 |
*/
|
275 |
protected function update_post_meta( &$preset, $force = false ) {
|
276 |
-
$meta_key_to_props = $this->
|
277 |
|
278 |
$props_to_update = $force ? $meta_key_to_props : $this->get_props_to_update( $preset, $meta_key_to_props );
|
279 |
|
@@ -337,10 +337,10 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
|
|
337 |
$args = wp_parse_args( $args, $default );
|
338 |
|
339 |
$query_args = array(
|
340 |
-
'post_type'
|
341 |
-
'fields'
|
342 |
-
'post_status'
|
343 |
-
'posts_per_page'
|
344 |
'suppress_filters' => false,
|
345 |
);
|
346 |
|
@@ -377,7 +377,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
|
|
377 |
public function items() {
|
378 |
global $wpdb;
|
379 |
|
380 |
-
$results = $wpdb->get_results(
|
381 |
$wpdb->prepare(
|
382 |
"SELECT post_name, post_title FROM {$wpdb->posts} WHERE post_type = %s AND post_status = %s",
|
383 |
YITH_WCAN_Presets()->get_post_type(),
|
3 |
* Filter Preset data store
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\DataStore
|
7 |
* @version 3.0.0
|
8 |
*/
|
9 |
|
23 |
*
|
24 |
* @var array
|
25 |
*/
|
26 |
+
protected $meta_key_to_props = array(
|
27 |
'_selector' => 'selector',
|
28 |
'_enabled' => 'enabled',
|
29 |
'_filters' => 'filters',
|
95 |
$posts_object = get_posts(
|
96 |
array_merge(
|
97 |
array(
|
98 |
+
'post_type' => YITH_WCAN_Presets()->get_post_type(),
|
99 |
'post_status' => 'publish',
|
100 |
'numberposts' => 1,
|
101 |
),
|
102 |
$data->get_id() ? array( 'p' => $data->get_id() ) : array( 'name' => $data->get_slug() )
|
103 |
)
|
104 |
);
|
105 |
+
$post_object = array_shift( $posts_object );
|
106 |
|
107 |
if ( ! $post_object || YITH_WCAN_Presets()->get_post_type() !== $post_object->post_type ) {
|
108 |
throw new Exception( _x( 'Invalid preset.', '[Generic] Error that happens when trying to read a filter preset that does not exist', 'yith-woocommerce-ajax-navigation' ) );
|
251 |
protected function read_post_meta( &$preset, $force = false ) {
|
252 |
$id = $preset->get_id();
|
253 |
$post_meta_values = get_post_meta( $id );
|
254 |
+
$meta_key_to_props = $this->meta_key_to_props;
|
255 |
|
256 |
$set_props = array();
|
257 |
|
273 |
* @since 4.0.0
|
274 |
*/
|
275 |
protected function update_post_meta( &$preset, $force = false ) {
|
276 |
+
$meta_key_to_props = $this->meta_key_to_props;
|
277 |
|
278 |
$props_to_update = $force ? $meta_key_to_props : $this->get_props_to_update( $preset, $meta_key_to_props );
|
279 |
|
337 |
$args = wp_parse_args( $args, $default );
|
338 |
|
339 |
$query_args = array(
|
340 |
+
'post_type' => YITH_WCAN_Presets()->get_post_type(),
|
341 |
+
'fields' => 'ids',
|
342 |
+
'post_status' => 'publish',
|
343 |
+
'posts_per_page' => -1,
|
344 |
'suppress_filters' => false,
|
345 |
);
|
346 |
|
377 |
public function items() {
|
378 |
global $wpdb;
|
379 |
|
380 |
+
$results = $wpdb->get_results( // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
381 |
$wpdb->prepare(
|
382 |
"SELECT post_name, post_title FROM {$wpdb->posts} WHERE post_type = %s AND post_status = %s",
|
383 |
YITH_WCAN_Presets()->get_post_type(),
|
@@ -3,7 +3,7 @@
|
|
3 |
* Filter Preset widget for Elementor
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -82,8 +82,8 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Filters' ) ) {
|
|
82 |
* @since 1.0.0
|
83 |
* @access protected
|
84 |
*/
|
85 |
-
protected function _register_controls() {
|
86 |
-
$presets
|
87 |
$presets_options = array_merge(
|
88 |
array(
|
89 |
'' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
|
3 |
* Filter Preset widget for Elementor
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Elementor
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
82 |
* @since 1.0.0
|
83 |
* @access protected
|
84 |
*/
|
85 |
+
protected function _register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
|
86 |
+
$presets = YITH_WCAN_Preset_Factory::list_presets();
|
87 |
$presets_options = array_merge(
|
88 |
array(
|
89 |
'' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
|
@@ -3,7 +3,7 @@
|
|
3 |
* Reset button widget for Elementor
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -82,7 +82,7 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Reset_Button' ) ) {
|
|
82 |
* @since 1.0.0
|
83 |
* @access protected
|
84 |
*/
|
85 |
-
protected function _register_controls() {
|
86 |
$this->start_controls_section(
|
87 |
'fields_section',
|
88 |
array(
|
@@ -94,18 +94,18 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Reset_Button' ) ) {
|
|
94 |
$this->add_control(
|
95 |
'description',
|
96 |
array(
|
97 |
-
'type'
|
98 |
'show_label' => false,
|
99 |
-
'raw'
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
)
|
110 |
);
|
111 |
|
@@ -128,11 +128,11 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Reset_Button' ) ) {
|
|
128 |
* @since 1.0.0
|
129 |
* @access protected
|
130 |
*/
|
131 |
-
protected function _content_template() {
|
132 |
$frontend = new YITH_WCAN_Frontend();
|
133 |
|
134 |
-
$_GET['min_price']
|
135 |
-
$_GET['max_price']
|
136 |
$_GET['onsale_filter'] = 1;
|
137 |
|
138 |
$_REQUEST[ YITH_WCAN_Query()->get_query_param() ] = 1;
|
3 |
* Reset button widget for Elementor
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Elementor
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
82 |
* @since 1.0.0
|
83 |
* @access protected
|
84 |
*/
|
85 |
+
protected function _register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
|
86 |
$this->start_controls_section(
|
87 |
'fields_section',
|
88 |
array(
|
94 |
$this->add_control(
|
95 |
'description',
|
96 |
array(
|
97 |
+
'type' => Controls_Manager::RAW_HTML,
|
98 |
'show_label' => false,
|
99 |
+
'raw' => '<p style="line-height: 1.2; margin: 15px 0;">' .
|
100 |
+
_x( 'This widget will display "Filters reset" button, wherever it is placed', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
|
101 |
+
'</p>' .
|
102 |
+
'<p style="line-height: 1.2; margin: 15px 0;">' .
|
103 |
+
_x( 'It will allow users to reset the filer selection; it will only appear when there is an active filter.', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
|
104 |
+
'</p>' .
|
105 |
+
'</p>' .
|
106 |
+
'<small style="color: #cdcdcd;">' .
|
107 |
+
_x( 'You can use this block to place "Reset filters" button inside your page, when "Reset button position" option won\'t work for your product\'s loop', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
|
108 |
+
'</small>',
|
109 |
)
|
110 |
);
|
111 |
|
128 |
* @since 1.0.0
|
129 |
* @access protected
|
130 |
*/
|
131 |
+
protected function _content_template() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
|
132 |
$frontend = new YITH_WCAN_Frontend();
|
133 |
|
134 |
+
$_GET['min_price'] = 10;
|
135 |
+
$_GET['max_price'] = 100;
|
136 |
$_GET['onsale_filter'] = 1;
|
137 |
|
138 |
$_REQUEST[ YITH_WCAN_Query()->get_query_param() ] = 1;
|
@@ -5,7 +5,7 @@
|
|
5 |
* Offers method specific to Taxonomy filter
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0.0
|
10 |
*/
|
11 |
|
@@ -26,7 +26,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
26 |
*
|
27 |
* @var array
|
28 |
*/
|
29 |
-
protected $
|
30 |
|
31 |
/**
|
32 |
* Checks whether current filter is active
|
@@ -93,10 +93,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
93 |
* @return string Item template.
|
94 |
*/
|
95 |
public function render_item( $term, $term_options = array() ) {
|
96 |
-
$design
|
97 |
$default_callback = "render_item_{$design}";
|
98 |
-
$
|
99 |
-
$
|
|
|
100 |
|
101 |
if ( ! $term instanceof WP_Term ) {
|
102 |
$term = get_term( $term, $taxonomy );
|
@@ -121,10 +122,10 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
121 |
if ( ! empty( $term_options['children'] ) ) {
|
122 |
$hierarchy = $this->get_hierarchical();
|
123 |
|
124 |
-
if ( 'collapsed'
|
125 |
$term_options['additional_classes'][] = 'hierarchy-collapsable';
|
126 |
$term_options['additional_classes'][] = 'closed';
|
127 |
-
} elseif ( 'expanded'
|
128 |
$term_options['additional_classes'][] = 'hierarchy-collapsable';
|
129 |
$term_options['additional_classes'][] = 'opened';
|
130 |
}
|
@@ -135,7 +136,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
135 |
}
|
136 |
|
137 |
// if we're using terms' default option, override any custom setting user may have entered.
|
138 |
-
if ( ! $customize_terms ) {
|
139 |
$term_options['label'] = $term->name;
|
140 |
$term_options['tooltip'] = '';
|
141 |
$term_options['color_1'] = '';
|
@@ -148,7 +149,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
148 |
$term_options = apply_filters( 'yith_wcan_tax_filter_item_args', $term_options, $term->term_id, $this );
|
149 |
|
150 |
// specific filtering for attributes.
|
151 |
-
if ( 0 === strpos( $taxonomy, 'pa_' ) && ! $customize_terms ) {
|
152 |
$term_options = apply_filters( 'yith_wcan_attribute_filter_item_args', $term_options, $term->term_id, $this );
|
153 |
}
|
154 |
|
@@ -161,7 +162,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
161 |
}
|
162 |
|
163 |
// implode additional classes.
|
164 |
-
$term_options['additional_classes'] = implode( ' ', apply_filters( 'yith_wcan_filter_tax_additional_item_classes', $term_options['additional_classes'] ) );
|
165 |
|
166 |
if ( method_exists( $this, $default_callback ) ) {
|
167 |
$item = $this->{$default_callback}( $term, $term_options );
|
@@ -262,15 +263,15 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
262 |
$atts = array_merge(
|
263 |
$term_options,
|
264 |
array(
|
265 |
-
'filter'
|
266 |
-
'preset'
|
267 |
-
'term'
|
268 |
-
'show_count'
|
269 |
'allow_multiple' => 'yes' === $this->get_multiple(),
|
270 |
-
'relation'
|
271 |
-
'adoptive'
|
272 |
-
'item_id'
|
273 |
-
'item_name'
|
274 |
)
|
275 |
);
|
276 |
|
@@ -287,7 +288,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
287 |
public function render_hierarchy( $children, $level = 0 ) {
|
288 |
$hierarchy = '';
|
289 |
|
290 |
-
if ( empty( $children ) || ! in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ) ) || ! in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ) ) ) {
|
291 |
return $hierarchy;
|
292 |
}
|
293 |
|
@@ -299,7 +300,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
299 |
|
300 |
foreach ( $children as $term_id => $term_options ) {
|
301 |
$term_options['level'] = $level;
|
302 |
-
$hierarchy
|
303 |
}
|
304 |
|
305 |
if ( 'select' !== $this->get_filter_design() ) {
|
@@ -349,14 +350,14 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
349 |
* @return array term_id=>term_options
|
350 |
*/
|
351 |
public function get_formatted_terms() {
|
352 |
-
if ( ! empty( $this->
|
353 |
-
return $this->
|
354 |
}
|
355 |
|
356 |
$hide_empty = 'yes' === yith_wcan_get_option( 'yith_wcan_hide_empty_terms', 'no' );
|
357 |
-
$terms
|
358 |
-
$children
|
359 |
-
$result
|
360 |
|
361 |
$sorted_terms = get_terms(
|
362 |
array_merge(
|
@@ -369,11 +370,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
369 |
'orderby' => $this->get_order_by(),
|
370 |
),
|
371 |
$this->use_all_terms() ? array() : array(
|
372 |
-
'include'
|
373 |
),
|
374 |
'term_order' === $this->get_order_by() ? array(
|
375 |
'orderby' => 'meta_value_num',
|
376 |
-
'meta_key' => 'order',
|
377 |
) : array(
|
378 |
'orderby' => $this->get_order_by(),
|
379 |
),
|
@@ -390,7 +391,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
390 |
$term = isset( $terms[ $term_id ] ) ? $terms[ $term_id ] : $this->get_default_term_options();
|
391 |
|
392 |
// set hierarchical data.
|
393 |
-
$children_result = $this->
|
394 |
|
395 |
$term['children'] = $children_result['formatted_children'];
|
396 |
$term['products'] = $children_result['products'];
|
@@ -399,7 +400,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
399 |
$term['count'] = count( $term['products'] );
|
400 |
|
401 |
// if we need to remove empty terms, skip here when count is 0.
|
402 |
-
if ( $this->
|
403 |
continue;
|
404 |
}
|
405 |
|
@@ -410,9 +411,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
410 |
}
|
411 |
|
412 |
// remove duplicated results, when showing hierarchical layout.
|
413 |
-
if ( ! empty( $children ) && ! empty( $result ) && in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ) ) && in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ) ) ) {
|
414 |
foreach ( $result as $term_id => $term_options ) {
|
415 |
-
if ( ! in_array( $term_id, $children ) ) {
|
416 |
continue;
|
417 |
}
|
418 |
|
@@ -421,7 +422,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
421 |
}
|
422 |
}
|
423 |
|
424 |
-
$this->
|
425 |
|
426 |
return $result;
|
427 |
}
|
@@ -450,23 +451,25 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
450 |
* @param int $term_id Term id.
|
451 |
* @return array Children hierarchy with options
|
452 |
*/
|
453 |
-
protected function
|
454 |
-
$terms
|
455 |
$formatted_children = array();
|
456 |
-
$children
|
457 |
-
$products
|
458 |
|
459 |
$child_terms = get_terms(
|
460 |
array_merge(
|
461 |
array(
|
462 |
'taxonomy' => $this->get_taxonomy(),
|
463 |
-
'include' => array_keys( $terms ),
|
464 |
'parent' => $term_id,
|
465 |
'order' => $this->get_order(),
|
466 |
'fields' => 'ids',
|
467 |
),
|
|
|
|
|
|
|
468 |
'term_order' === $this->get_order_by() ? array(
|
469 |
-
'orderby'
|
470 |
) : array(
|
471 |
'orderby' => $this->get_order_by(),
|
472 |
)
|
@@ -474,20 +477,20 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
474 |
);
|
475 |
|
476 |
foreach ( $child_terms as $child_id ) {
|
477 |
-
if ( ! isset( $terms[ $child_id ] ) ) {
|
478 |
continue;
|
479 |
}
|
480 |
|
481 |
-
$child = $terms[ $child_id ];
|
482 |
|
483 |
// set hierarchical data.
|
484 |
-
$children_result
|
485 |
$child['children'] = $children_result['formatted_children'];
|
486 |
|
487 |
// set count.
|
488 |
$child['count'] = count( $children_result['products'] );
|
489 |
|
490 |
-
if ( $this->
|
491 |
continue;
|
492 |
}
|
493 |
|
@@ -499,9 +502,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
499 |
}
|
500 |
|
501 |
return array(
|
502 |
-
'children'
|
503 |
'formatted_children' => $formatted_children,
|
504 |
-
'products'
|
505 |
);
|
506 |
}
|
507 |
|
@@ -511,9 +514,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
511 |
* @param int $term_id Term id.
|
512 |
* @return array Array of matcihing product ids.
|
513 |
*/
|
514 |
-
protected function
|
515 |
$filter_by_current_values = 'yes' === $this->get_multiple() && 'and' === $this->get_relation();
|
516 |
-
$products
|
517 |
|
518 |
return $products;
|
519 |
}
|
@@ -524,8 +527,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
524 |
* @param int $term_id Term id.
|
525 |
* @return int Count of matching product ids.
|
526 |
*/
|
527 |
-
protected function
|
528 |
-
return count( $this->
|
529 |
}
|
530 |
|
531 |
/**
|
@@ -534,7 +537,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
|
|
534 |
* @param array $term_options Array describing term and its options.
|
535 |
* @return bool Whther to hide term or not
|
536 |
*/
|
537 |
-
protected function
|
538 |
// hide when term doesn't match current selection.
|
539 |
if ( 'hide' === $this->get_adoptive() && ! $term_options['count'] && empty( $term_options['children'] ) ) {
|
540 |
return true;
|
5 |
* Offers method specific to Taxonomy filter
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes\Filters
|
9 |
* @version 4.0.0
|
10 |
*/
|
11 |
|
26 |
*
|
27 |
* @var array
|
28 |
*/
|
29 |
+
protected $formatted_terms;
|
30 |
|
31 |
/**
|
32 |
* Checks whether current filter is active
|
93 |
* @return string Item template.
|
94 |
*/
|
95 |
public function render_item( $term, $term_options = array() ) {
|
96 |
+
$design = $this->get_filter_design();
|
97 |
$default_callback = "render_item_{$design}";
|
98 |
+
$use_all_terms = $this->use_all_terms();
|
99 |
+
$customize_terms = $this->customize_terms();
|
100 |
+
$taxonomy = $this->get_taxonomy();
|
101 |
|
102 |
if ( ! $term instanceof WP_Term ) {
|
103 |
$term = get_term( $term, $taxonomy );
|
122 |
if ( ! empty( $term_options['children'] ) ) {
|
123 |
$hierarchy = $this->get_hierarchical();
|
124 |
|
125 |
+
if ( 'collapsed' === $hierarchy ) {
|
126 |
$term_options['additional_classes'][] = 'hierarchy-collapsable';
|
127 |
$term_options['additional_classes'][] = 'closed';
|
128 |
+
} elseif ( 'expanded' === $hierarchy ) {
|
129 |
$term_options['additional_classes'][] = 'hierarchy-collapsable';
|
130 |
$term_options['additional_classes'][] = 'opened';
|
131 |
}
|
136 |
}
|
137 |
|
138 |
// if we're using terms' default option, override any custom setting user may have entered.
|
139 |
+
if ( $use_all_terms || ! $customize_terms ) {
|
140 |
$term_options['label'] = $term->name;
|
141 |
$term_options['tooltip'] = '';
|
142 |
$term_options['color_1'] = '';
|
149 |
$term_options = apply_filters( 'yith_wcan_tax_filter_item_args', $term_options, $term->term_id, $this );
|
150 |
|
151 |
// specific filtering for attributes.
|
152 |
+
if ( 0 === strpos( $taxonomy, 'pa_' ) && ( $use_all_terms || ! $customize_terms ) ) {
|
153 |
$term_options = apply_filters( 'yith_wcan_attribute_filter_item_args', $term_options, $term->term_id, $this );
|
154 |
}
|
155 |
|
162 |
}
|
163 |
|
164 |
// implode additional classes.
|
165 |
+
$term_options['additional_classes'] = implode( ' ', apply_filters( 'yith_wcan_filter_tax_additional_item_classes', $term_options['additional_classes'], $this ) );
|
166 |
|
167 |
if ( method_exists( $this, $default_callback ) ) {
|
168 |
$item = $this->{$default_callback}( $term, $term_options );
|
263 |
$atts = array_merge(
|
264 |
$term_options,
|
265 |
array(
|
266 |
+
'filter' => $this,
|
267 |
+
'preset' => $this->get_preset(),
|
268 |
+
'term' => $term,
|
269 |
+
'show_count' => $this->show_count(),
|
270 |
'allow_multiple' => 'yes' === $this->get_multiple(),
|
271 |
+
'relation' => $this->get_relation(),
|
272 |
+
'adoptive' => $this->get_adoptive(),
|
273 |
+
'item_id' => "filter_{$this->get_preset()->get_id()}_{$this->get_id()}_{$term->term_id}",
|
274 |
+
'item_name' => "filter[{$this->get_preset()->get_id()}][{$this->get_id()}]",
|
275 |
)
|
276 |
);
|
277 |
|
288 |
public function render_hierarchy( $children, $level = 0 ) {
|
289 |
$hierarchy = '';
|
290 |
|
291 |
+
if ( empty( $children ) || ! in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ), true ) || ! in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ), true ) ) {
|
292 |
return $hierarchy;
|
293 |
}
|
294 |
|
300 |
|
301 |
foreach ( $children as $term_id => $term_options ) {
|
302 |
$term_options['level'] = $level;
|
303 |
+
$hierarchy .= $this->render_item( $term_id, $term_options );
|
304 |
}
|
305 |
|
306 |
if ( 'select' !== $this->get_filter_design() ) {
|
350 |
* @return array term_id=>term_options
|
351 |
*/
|
352 |
public function get_formatted_terms() {
|
353 |
+
if ( ! empty( $this->formatted_terms ) ) {
|
354 |
+
return $this->formatted_terms;
|
355 |
}
|
356 |
|
357 |
$hide_empty = 'yes' === yith_wcan_get_option( 'yith_wcan_hide_empty_terms', 'no' );
|
358 |
+
$terms = $this->get_terms_options();
|
359 |
+
$children = array();
|
360 |
+
$result = array();
|
361 |
|
362 |
$sorted_terms = get_terms(
|
363 |
array_merge(
|
370 |
'orderby' => $this->get_order_by(),
|
371 |
),
|
372 |
$this->use_all_terms() ? array() : array(
|
373 |
+
'include' => array_keys( $terms ),
|
374 |
),
|
375 |
'term_order' === $this->get_order_by() ? array(
|
376 |
'orderby' => 'meta_value_num',
|
377 |
+
'meta_key' => 'order', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
378 |
) : array(
|
379 |
'orderby' => $this->get_order_by(),
|
380 |
),
|
391 |
$term = isset( $terms[ $term_id ] ) ? $terms[ $term_id ] : $this->get_default_term_options();
|
392 |
|
393 |
// set hierarchical data.
|
394 |
+
$children_result = $this->get_term_children( $term_id );
|
395 |
|
396 |
$term['children'] = $children_result['formatted_children'];
|
397 |
$term['products'] = $children_result['products'];
|
400 |
$term['count'] = count( $term['products'] );
|
401 |
|
402 |
// if we need to remove empty terms, skip here when count is 0.
|
403 |
+
if ( $this->is_term_hidden( $term ) ) {
|
404 |
continue;
|
405 |
}
|
406 |
|
411 |
}
|
412 |
|
413 |
// remove duplicated results, when showing hierarchical layout.
|
414 |
+
if ( ! empty( $children ) && ! empty( $result ) && in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ), true ) && in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ), true ) ) {
|
415 |
foreach ( $result as $term_id => $term_options ) {
|
416 |
+
if ( ! in_array( $term_id, $children, true ) ) {
|
417 |
continue;
|
418 |
}
|
419 |
|
422 |
}
|
423 |
}
|
424 |
|
425 |
+
$this->formatted_terms = $result;
|
426 |
|
427 |
return $result;
|
428 |
}
|
451 |
* @param int $term_id Term id.
|
452 |
* @return array Children hierarchy with options
|
453 |
*/
|
454 |
+
protected function get_term_children( $term_id ) {
|
455 |
+
$terms = $this->get_terms_options();
|
456 |
$formatted_children = array();
|
457 |
+
$children = array();
|
458 |
+
$products = $this->get_term_products( $term_id );
|
459 |
|
460 |
$child_terms = get_terms(
|
461 |
array_merge(
|
462 |
array(
|
463 |
'taxonomy' => $this->get_taxonomy(),
|
|
|
464 |
'parent' => $term_id,
|
465 |
'order' => $this->get_order(),
|
466 |
'fields' => 'ids',
|
467 |
),
|
468 |
+
$this->use_all_terms() ? array() : array(
|
469 |
+
'include' => array_keys( $terms ),
|
470 |
+
),
|
471 |
'term_order' === $this->get_order_by() ? array(
|
472 |
+
'orderby' => 'include',
|
473 |
) : array(
|
474 |
'orderby' => $this->get_order_by(),
|
475 |
)
|
477 |
);
|
478 |
|
479 |
foreach ( $child_terms as $child_id ) {
|
480 |
+
if ( ! isset( $terms[ $child_id ] ) && ! $this->use_all_terms() ) {
|
481 |
continue;
|
482 |
}
|
483 |
|
484 |
+
$child = isset( $terms[ $child_id ] ) ? $terms[ $child_id ] : $this->get_default_term_options();
|
485 |
|
486 |
// set hierarchical data.
|
487 |
+
$children_result = $this->get_term_children( $child_id );
|
488 |
$child['children'] = $children_result['formatted_children'];
|
489 |
|
490 |
// set count.
|
491 |
$child['count'] = count( $children_result['products'] );
|
492 |
|
493 |
+
if ( $this->is_term_hidden( $child ) ) {
|
494 |
continue;
|
495 |
}
|
496 |
|
502 |
}
|
503 |
|
504 |
return array(
|
505 |
+
'children' => $children,
|
506 |
'formatted_children' => $formatted_children,
|
507 |
+
'products' => $products,
|
508 |
);
|
509 |
}
|
510 |
|
514 |
* @param int $term_id Term id.
|
515 |
* @return array Array of matcihing product ids.
|
516 |
*/
|
517 |
+
protected function get_term_products( $term_id ) {
|
518 |
$filter_by_current_values = 'yes' === $this->get_multiple() && 'and' === $this->get_relation();
|
519 |
+
$products = YITH_WCAN_Query()->get_query_relevant_term_objects( $this->get_taxonomy(), $term_id, $filter_by_current_values );
|
520 |
|
521 |
return $products;
|
522 |
}
|
527 |
* @param int $term_id Term id.
|
528 |
* @return int Count of matching product ids.
|
529 |
*/
|
530 |
+
protected function count_term_products( $term_id ) {
|
531 |
+
return count( $this->get_term_products( $term_id ) );
|
532 |
}
|
533 |
|
534 |
/**
|
537 |
* @param array $term_options Array describing term and its options.
|
538 |
* @return bool Whther to hide term or not
|
539 |
*/
|
540 |
+
protected function is_term_hidden( $term_options ) {
|
541 |
// hide when term doesn't match current selection.
|
542 |
if ( 'hide' === $this->get_adoptive() && ! $term_options['count'] && empty( $term_options['children'] ) ) {
|
543 |
return true;
|
@@ -3,7 +3,7 @@
|
|
3 |
* Functions
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0.
|
8 |
*/
|
9 |
|
@@ -86,14 +86,14 @@ if ( ! function_exists( 'yith_wcan_attributes_table' ) ) {
|
|
86 |
|
87 |
$terms = get_terms(
|
88 |
array(
|
89 |
-
'taxonomy'
|
90 |
'hide_empty' => '0',
|
91 |
)
|
92 |
);
|
93 |
|
94 |
-
if ( 'list'
|
95 |
$return = '<input type="hidden" name="' . $name . '[colors]" value="" /><input type="hidden" name="' . $name . '[labels]" value="" />';
|
96 |
-
} elseif ( 'color'
|
97 |
if ( ! empty( $terms ) ) {
|
98 |
$return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Color', 'yith-woocommerce-ajax-navigation' ) );
|
99 |
|
@@ -107,7 +107,7 @@ if ( ! function_exists( 'yith_wcan_attributes_table' ) ) {
|
|
107 |
}
|
108 |
|
109 |
$return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
|
110 |
-
} elseif ( 'multicolor'
|
111 |
if ( ! empty( $terms ) ) {
|
112 |
$return = sprintf( '<table class="yith-wcan-multicolor"><tr><th>%s</th><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 1', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 2', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ) );
|
113 |
|
@@ -127,7 +127,7 @@ if ( ! function_exists( 'yith_wcan_attributes_table' ) ) {
|
|
127 |
}
|
128 |
|
129 |
$return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
|
130 |
-
} elseif ( 'label'
|
131 |
if ( ! empty( $terms ) ) {
|
132 |
$return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Labels', 'yith-woocommerce-ajax-navigation' ) );
|
133 |
|
@@ -161,11 +161,12 @@ if ( ! function_exists( 'yith_wcan_can_be_displayed' ) ) {
|
|
161 |
$return = false;
|
162 |
|
163 |
if (
|
164 |
-
(
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
|
|
169 |
) {
|
170 |
$return = true;
|
171 |
}
|
@@ -227,9 +228,9 @@ if ( ! function_exists( 'yit_reorder_terms_by_parent' ) ) {
|
|
227 |
/* The term as child */
|
228 |
if ( array_key_exists( $term->term_id, $child_terms ) ) {
|
229 |
|
230 |
-
if ( 'product'
|
231 |
usort( $child_terms[ $term->term_id ], 'yit_terms_sort' );
|
232 |
-
} elseif ( 'alphabetical'
|
233 |
usort( $child_terms[ $term->term_id ], 'yit_alphabetical_terms_sort' );
|
234 |
}
|
235 |
|
@@ -241,9 +242,9 @@ if ( ! function_exists( 'yit_reorder_terms_by_parent' ) ) {
|
|
241 |
$terms_count ++;
|
242 |
}
|
243 |
|
244 |
-
if ( 'product'
|
245 |
usort( $terms, 'yit_terms_sort' );
|
246 |
-
} elseif ( 'alphabetical'
|
247 |
usort( $terms, 'yit_alphabetical_terms_sort' );
|
248 |
}
|
249 |
|
@@ -285,7 +286,7 @@ if ( ! function_exists( 'yit_get_terms' ) ) {
|
|
285 |
|
286 |
case 'hierarchical':
|
287 |
$terms = yith_wcan_wp_get_terms( $args );
|
288 |
-
if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ) ) ) {
|
289 |
$terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
|
290 |
$reordered = true;
|
291 |
}
|
@@ -299,14 +300,14 @@ if ( ! function_exists( 'yit_get_terms' ) ) {
|
|
299 |
default:
|
300 |
$args['include'] = $include;
|
301 |
|
302 |
-
if ( 'parent'
|
303 |
$args['parent'] = false;
|
304 |
}
|
305 |
|
306 |
$terms = yith_wcan_wp_get_terms( $args );
|
307 |
|
308 |
-
if ( 'hierarchical'
|
309 |
-
if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ) ) ) {
|
310 |
$terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
|
311 |
$reordered = true;
|
312 |
}
|
@@ -319,7 +320,7 @@ if ( ! function_exists( 'yit_get_terms' ) ) {
|
|
319 |
$reordered = true;
|
320 |
}
|
321 |
|
322 |
-
if ( apply_filters( 'yith_wcan_skip_shop_term_order', true, $taxonomy, $instance ) && 'product'
|
323 |
usort( $terms, 'yit_terms_sort' );
|
324 |
}
|
325 |
|
@@ -353,7 +354,7 @@ if ( ! function_exists( 'yit_term_is_parent' ) ) {
|
|
353 |
* @since 1.3.1
|
354 |
*/
|
355 |
function yit_term_is_parent( $term ) {
|
356 |
-
return ( isset( $term->parent ) && 0
|
357 |
}
|
358 |
}
|
359 |
|
@@ -385,7 +386,7 @@ if ( ! function_exists( 'yit_term_has_child' ) ) {
|
|
385 |
|
386 |
foreach ( $child_terms as $child_term ) {
|
387 |
$_products_in_term = get_objects_in_term( $child_term->term_id, $taxonomy );
|
388 |
-
$count
|
389 |
}
|
390 |
}
|
391 |
|
@@ -435,7 +436,7 @@ if ( ! function_exists( 'yit_get_filter_args' ) ) {
|
|
435 |
function yit_get_filter_args( $args = array() ) {
|
436 |
$default_args = array(
|
437 |
'check_price_filter' => true,
|
438 |
-
'queried_object'
|
439 |
);
|
440 |
|
441 |
/**
|
@@ -465,9 +466,11 @@ if ( ! function_exists( 'yit_get_filter_args' ) ) {
|
|
465 |
$regexs[] = "/{$brands_taxonomy}/";
|
466 |
}
|
467 |
|
468 |
-
|
|
|
|
|
469 |
foreach ( $regexs as $regex ) {
|
470 |
-
foreach ( $
|
471 |
if ( preg_match( $regex, $query_var ) ) {
|
472 |
$filter_value[ $query_var ] = $value;
|
473 |
}
|
@@ -477,43 +480,43 @@ if ( ! function_exists( 'yit_get_filter_args' ) ) {
|
|
477 |
|
478 |
if ( ! empty( $check_price_filter ) ) {
|
479 |
// WooCommerce Price Filter.
|
480 |
-
if ( isset( $
|
481 |
-
$filter_value['min_price'] = (float) $
|
482 |
}
|
483 |
|
484 |
-
if ( isset( $
|
485 |
-
$filter_value['max_price'] = (float) $
|
486 |
}
|
487 |
}
|
488 |
|
489 |
// WooCommerce In Stock/On Sale filters.
|
490 |
-
if ( isset( $
|
491 |
-
$filter_value['instock_filter'] = (int) $
|
492 |
}
|
493 |
|
494 |
-
if ( isset( $
|
495 |
-
$filter_value['onsale_filter'] = (int) $
|
496 |
}
|
497 |
|
498 |
-
if ( isset( $
|
499 |
-
$filter_value['orderby'] = sanitize_text_field( wp_unslash( $
|
500 |
}
|
501 |
|
502 |
-
if ( isset( $
|
503 |
-
$filter_value['product_tag'] = urlencode( sanitize_text_field( wp_unslash( $
|
504 |
} elseif ( is_product_tag() && ! empty( $queried_object ) ) {
|
505 |
$filter_value['product_tag'] = $queried_object->slug;
|
506 |
}
|
507 |
|
508 |
-
if ( isset( $
|
509 |
-
$filter_value['product_cat'] = urlencode( sanitize_text_field( wp_unslash( $
|
510 |
} elseif ( is_product_category() && ! empty( $queried_object ) ) {
|
511 |
$filter_value['product_cat'] = $queried_object->slug;
|
512 |
}
|
513 |
|
514 |
-
if ( isset( $
|
515 |
-
$filter_value['source_id'] = sanitize_text_field( wp_unslash( $
|
516 |
-
$filter_value['source_tax'] = sanitize_text_field( wp_unslash( $
|
517 |
} elseif ( ! is_shop() && is_product_taxonomy() && ! empty( $queried_object ) && ! isset( $filter_value['source_id'] ) && ! isset( $filter_value['source_tax'] ) ) {
|
518 |
$filter_value['source_id'] = $queried_object->term_id;
|
519 |
$filter_value['source_tax'] = $queried_object->taxonomy;
|
@@ -535,7 +538,12 @@ if ( ! function_exists( 'yit_check_active_price_filter' ) ) {
|
|
535 |
* @since 1.4
|
536 |
*/
|
537 |
function yit_check_active_price_filter( $min_price, $max_price ) {
|
538 |
-
|
|
|
|
|
|
|
|
|
|
|
539 |
}
|
540 |
}
|
541 |
|
@@ -747,8 +755,10 @@ if ( ! function_exists( 'yit_is_filtered_uri' ) ) {
|
|
747 |
function yit_is_filtered_uri() {
|
748 |
$_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
|
749 |
$brands = yit_get_brands_taxonomy();
|
|
|
|
|
750 |
// check if current page is filtered.
|
751 |
-
$is_filtered_uri = isset( $
|
752 |
|
753 |
return apply_filters( 'yit_wcan_is_filtered_uri', $is_filtered_uri );
|
754 |
}
|
@@ -782,7 +792,7 @@ if ( ! function_exists( 'yit_in_array_ignore_case' ) ) {
|
|
782 |
* @author Andrea Grillo <andrea.grillo@yithemes.com>
|
783 |
*/
|
784 |
function yit_in_array_ignore_case( $needle, $haystack ) {
|
785 |
-
return in_array( strtolower( $needle ), array_map( 'strtolower', $haystack ) );
|
786 |
}
|
787 |
}
|
788 |
|
@@ -851,8 +861,8 @@ if ( ! function_exists( 'yith_wcan_add_rel_nofollow_to_url' ) ) {
|
|
851 |
* @return bool|string
|
852 |
*/
|
853 |
function yith_wcan_add_rel_nofollow_to_url( $get_html_rel_attribute = false, $echo = false ) {
|
854 |
-
$enable_seo = 'yes'
|
855 |
-
$enable_rel_nofollow = 'yes'
|
856 |
$enabled = $enable_seo && $enable_rel_nofollow;
|
857 |
$return = $enabled;
|
858 |
|
@@ -868,6 +878,21 @@ if ( ! function_exists( 'yith_wcan_add_rel_nofollow_to_url' ) ) {
|
|
868 |
}
|
869 |
}
|
870 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
871 |
if ( ! function_exists( 'yith_wcan_get_preset' ) ) {
|
872 |
/**
|
873 |
* Wrapper for YITH_WCAN_Preset_Factory::get_preset( $preset ) static function
|
@@ -969,7 +994,7 @@ if ( ! function_exists( 'yith_wcan_hex2rgb' ) ) {
|
|
969 |
|
970 |
// otherwise try to convert hex.
|
971 |
$color = str_replace( '#', '', $hex );
|
972 |
-
if ( strlen( $color )
|
973 |
return array( 0, 0, 0 );
|
974 |
}
|
975 |
|
@@ -1100,14 +1125,14 @@ if ( ! function_exists( 'yith_wcan_merge_in_array' ) ) {
|
|
1100 |
*/
|
1101 |
function yith_wcan_merge_in_array( $array, $element, $pivot, $position = 'after' ) {
|
1102 |
// search for the pivot inside array.
|
1103 |
-
$pos = array_search( $pivot, array_keys( $array ) );
|
1104 |
|
1105 |
if ( false === $pos ) {
|
1106 |
return $array;
|
1107 |
}
|
1108 |
|
1109 |
// separate array into chunks.
|
1110 |
-
$i = 'after'
|
1111 |
$part_1 = array_slice( $array, 0, $pos + $i );
|
1112 |
$part_2 = array_slice( $array, $pos + $i );
|
1113 |
|
3 |
* Functions
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Functions
|
7 |
* @version 4.0.0.
|
8 |
*/
|
9 |
|
86 |
|
87 |
$terms = get_terms(
|
88 |
array(
|
89 |
+
'taxonomy' => 'pa_' . $attribute,
|
90 |
'hide_empty' => '0',
|
91 |
)
|
92 |
);
|
93 |
|
94 |
+
if ( 'list' === $type ) {
|
95 |
$return = '<input type="hidden" name="' . $name . '[colors]" value="" /><input type="hidden" name="' . $name . '[labels]" value="" />';
|
96 |
+
} elseif ( 'color' === $type ) {
|
97 |
if ( ! empty( $terms ) ) {
|
98 |
$return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Color', 'yith-woocommerce-ajax-navigation' ) );
|
99 |
|
107 |
}
|
108 |
|
109 |
$return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
|
110 |
+
} elseif ( 'multicolor' === $type ) {
|
111 |
if ( ! empty( $terms ) ) {
|
112 |
$return = sprintf( '<table class="yith-wcan-multicolor"><tr><th>%s</th><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 1', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 2', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ) );
|
113 |
|
127 |
}
|
128 |
|
129 |
$return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
|
130 |
+
} elseif ( 'label' === $type ) {
|
131 |
if ( ! empty( $terms ) ) {
|
132 |
$return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Labels', 'yith-woocommerce-ajax-navigation' ) );
|
133 |
|
161 |
$return = false;
|
162 |
|
163 |
if (
|
164 |
+
(
|
165 |
+
is_active_widget( false, false, 'yith-woo-ajax-navigation', true ) ||
|
166 |
+
is_active_widget( false, false, 'yith-woo-ajax-navigation-sort-by', true ) ||
|
167 |
+
is_active_widget( false, false, 'yith-woo-ajax-navigation-stock-on-sale', true ) ||
|
168 |
+
is_active_widget( false, false, 'yith-woo-ajax-navigation-list-price-filter', true )
|
169 |
+
) && ( is_shop() || defined( 'SHOP_IS_ON_FRONT' ) || is_product_taxonomy() || is_product_category() )
|
170 |
) {
|
171 |
$return = true;
|
172 |
}
|
228 |
/* The term as child */
|
229 |
if ( array_key_exists( $term->term_id, $child_terms ) ) {
|
230 |
|
231 |
+
if ( 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && ! is_wp_error( $child_terms[ $term->term_id ] ) ) {
|
232 |
usort( $child_terms[ $term->term_id ], 'yit_terms_sort' );
|
233 |
+
} elseif ( 'alphabetical' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
|
234 |
usort( $child_terms[ $term->term_id ], 'yit_alphabetical_terms_sort' );
|
235 |
}
|
236 |
|
242 |
$terms_count ++;
|
243 |
}
|
244 |
|
245 |
+
if ( 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && ! is_wp_error( $parent_terms ) ) {
|
246 |
usort( $terms, 'yit_terms_sort' );
|
247 |
+
} elseif ( 'alphabetical' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
|
248 |
usort( $terms, 'yit_alphabetical_terms_sort' );
|
249 |
}
|
250 |
|
286 |
|
287 |
case 'hierarchical':
|
288 |
$terms = yith_wcan_wp_get_terms( $args );
|
289 |
+
if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ), true ) ) {
|
290 |
$terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
|
291 |
$reordered = true;
|
292 |
}
|
300 |
default:
|
301 |
$args['include'] = $include;
|
302 |
|
303 |
+
if ( 'parent' === $instance['display'] ) {
|
304 |
$args['parent'] = false;
|
305 |
}
|
306 |
|
307 |
$terms = yith_wcan_wp_get_terms( $args );
|
308 |
|
309 |
+
if ( 'hierarchical' === $instance['display'] ) {
|
310 |
+
if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ), true ) ) {
|
311 |
$terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
|
312 |
$reordered = true;
|
313 |
}
|
320 |
$reordered = true;
|
321 |
}
|
322 |
|
323 |
+
if ( apply_filters( 'yith_wcan_skip_shop_term_order', true, $taxonomy, $instance ) && 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && 'hierarchical' !== $instance['display'] && ! is_wp_error( $terms ) && ! $reordered ) {
|
324 |
usort( $terms, 'yit_terms_sort' );
|
325 |
}
|
326 |
|
354 |
* @since 1.3.1
|
355 |
*/
|
356 |
function yit_term_is_parent( $term ) {
|
357 |
+
return ( isset( $term->parent ) && 0 === $term->parent );
|
358 |
}
|
359 |
}
|
360 |
|
386 |
|
387 |
foreach ( $child_terms as $child_term ) {
|
388 |
$_products_in_term = get_objects_in_term( $child_term->term_id, $taxonomy );
|
389 |
+
$count += count( array_intersect( $_products_in_term, YITH_WCAN()->frontend->layered_nav_product_ids ) );
|
390 |
}
|
391 |
}
|
392 |
|
436 |
function yit_get_filter_args( $args = array() ) {
|
437 |
$default_args = array(
|
438 |
'check_price_filter' => true,
|
439 |
+
'queried_object' => null,
|
440 |
);
|
441 |
|
442 |
/**
|
466 |
$regexs[] = "/{$brands_taxonomy}/";
|
467 |
}
|
468 |
|
469 |
+
$query_vars = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
470 |
+
|
471 |
+
if ( ! empty( $query_vars ) ) {
|
472 |
foreach ( $regexs as $regex ) {
|
473 |
+
foreach ( $query_vars as $query_var => $value ) {
|
474 |
if ( preg_match( $regex, $query_var ) ) {
|
475 |
$filter_value[ $query_var ] = $value;
|
476 |
}
|
480 |
|
481 |
if ( ! empty( $check_price_filter ) ) {
|
482 |
// WooCommerce Price Filter.
|
483 |
+
if ( isset( $query_vars['min_price'] ) ) {
|
484 |
+
$filter_value['min_price'] = (float) $query_vars['min_price'];
|
485 |
}
|
486 |
|
487 |
+
if ( isset( $query_vars['max_price'] ) ) {
|
488 |
+
$filter_value['max_price'] = (float) $query_vars['max_price'];
|
489 |
}
|
490 |
}
|
491 |
|
492 |
// WooCommerce In Stock/On Sale filters.
|
493 |
+
if ( isset( $query_vars['instock_filter'] ) ) {
|
494 |
+
$filter_value['instock_filter'] = (int) $query_vars['instock_filter'];
|
495 |
}
|
496 |
|
497 |
+
if ( isset( $query_vars['onsale_filter'] ) ) {
|
498 |
+
$filter_value['onsale_filter'] = (int) $query_vars['onsale_filter'];
|
499 |
}
|
500 |
|
501 |
+
if ( isset( $query_vars['orderby'] ) ) {
|
502 |
+
$filter_value['orderby'] = sanitize_text_field( wp_unslash( $query_vars['orderby'] ) );
|
503 |
}
|
504 |
|
505 |
+
if ( isset( $query_vars['product_tag'] ) ) {
|
506 |
+
$filter_value['product_tag'] = urlencode( sanitize_text_field( wp_unslash( $query_vars['product_tag'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
507 |
} elseif ( is_product_tag() && ! empty( $queried_object ) ) {
|
508 |
$filter_value['product_tag'] = $queried_object->slug;
|
509 |
}
|
510 |
|
511 |
+
if ( isset( $query_vars['product_cat'] ) ) {
|
512 |
+
$filter_value['product_cat'] = urlencode( sanitize_text_field( wp_unslash( $query_vars['product_cat'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
513 |
} elseif ( is_product_category() && ! empty( $queried_object ) ) {
|
514 |
$filter_value['product_cat'] = $queried_object->slug;
|
515 |
}
|
516 |
|
517 |
+
if ( isset( $query_vars['source_id'] ) && isset( $query_vars['source_tax'] ) ) {
|
518 |
+
$filter_value['source_id'] = sanitize_text_field( wp_unslash( $query_vars['source_id'] ) );
|
519 |
+
$filter_value['source_tax'] = sanitize_text_field( wp_unslash( $query_vars['source_tax'] ) );
|
520 |
} elseif ( ! is_shop() && is_product_taxonomy() && ! empty( $queried_object ) && ! isset( $filter_value['source_id'] ) && ! isset( $filter_value['source_tax'] ) ) {
|
521 |
$filter_value['source_id'] = $queried_object->term_id;
|
522 |
$filter_value['source_tax'] = $queried_object->taxonomy;
|
538 |
* @since 1.4
|
539 |
*/
|
540 |
function yit_check_active_price_filter( $min_price, $max_price ) {
|
541 |
+
// phpcs:disable WordPress.Security.NonceVerification.Recommended
|
542 |
+
$query_min_price = isset( $_GET['min_price'] ) ? (float) $_GET['min_price'] : false;
|
543 |
+
$query_max_price = isset( $_GET['max_price'] ) ? (float) $_GET['max_price'] : false;
|
544 |
+
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
545 |
+
|
546 |
+
return $query_min_price === (float) $min_price && $query_max_price === (float) $max_price;
|
547 |
}
|
548 |
}
|
549 |
|
755 |
function yit_is_filtered_uri() {
|
756 |
$_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
|
757 |
$brands = yit_get_brands_taxonomy();
|
758 |
+
$query_vars = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
759 |
+
|
760 |
// check if current page is filtered.
|
761 |
+
$is_filtered_uri = isset( $query_vars['product_cat'] ) || count( $_chosen_attributes ) > 0 || isset( $query_vars['min_price'] ) || isset( $query_vars['max_price'] ) || isset( $query_vars['orderby'] ) || isset( $query_vars['instock_filter'] ) || isset( $query_vars['onsale_filter'] ) || isset( $query_vars['product_tag'] ) || isset( $query_vars[ $brands ] );
|
762 |
|
763 |
return apply_filters( 'yit_wcan_is_filtered_uri', $is_filtered_uri );
|
764 |
}
|
792 |
* @author Andrea Grillo <andrea.grillo@yithemes.com>
|
793 |
*/
|
794 |
function yit_in_array_ignore_case( $needle, $haystack ) {
|
795 |
+
return in_array( strtolower( $needle ), array_map( 'strtolower', $haystack ), true );
|
796 |
}
|
797 |
}
|
798 |
|
861 |
* @return bool|string
|
862 |
*/
|
863 |
function yith_wcan_add_rel_nofollow_to_url( $get_html_rel_attribute = false, $echo = false ) {
|
864 |
+
$enable_seo = 'yes' === yith_wcan_get_option( 'yith_wcan_enable_seo' );
|
865 |
+
$enable_rel_nofollow = 'yes' === yith_wcan_get_option( 'yith_wcan_seo_rel_nofollow', 'no' );
|
866 |
$enabled = $enable_seo && $enable_rel_nofollow;
|
867 |
$return = $enabled;
|
868 |
|
878 |
}
|
879 |
}
|
880 |
|
881 |
+
if ( ! function_exists( 'yith_wcan_doing_filters' ) ) {
|
882 |
+
/**
|
883 |
+
* Checks is current page was requested by filter plugin
|
884 |
+
*
|
885 |
+
* @return bool Whether current page is requested by filter plugin
|
886 |
+
*/
|
887 |
+
function yith_wcan_doing_filters() {
|
888 |
+
if ( ! isset( $_SERVER['HTTP_X_YITH_WCAN'] ) ) {
|
889 |
+
return false;
|
890 |
+
}
|
891 |
+
|
892 |
+
return ! ! sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_YITH_WCAN'] ) );
|
893 |
+
}
|
894 |
+
}
|
895 |
+
|
896 |
if ( ! function_exists( 'yith_wcan_get_preset' ) ) {
|
897 |
/**
|
898 |
* Wrapper for YITH_WCAN_Preset_Factory::get_preset( $preset ) static function
|
994 |
|
995 |
// otherwise try to convert hex.
|
996 |
$color = str_replace( '#', '', $hex );
|
997 |
+
if ( strlen( $color ) !== 6 ) {
|
998 |
return array( 0, 0, 0 );
|
999 |
}
|
1000 |
|
1125 |
*/
|
1126 |
function yith_wcan_merge_in_array( $array, $element, $pivot, $position = 'after' ) {
|
1127 |
// search for the pivot inside array.
|
1128 |
+
$pos = array_search( $pivot, array_keys( $array ), true );
|
1129 |
|
1130 |
if ( false === $pos ) {
|
1131 |
return $array;
|
1132 |
}
|
1133 |
|
1134 |
// separate array into chunks.
|
1135 |
+
$i = 'after' === $position ? 1 : 0;
|
1136 |
$part_1 = array_slice( $array, 0, $pos + $i );
|
1137 |
$part_2 = array_slice( $array, $pos + $i );
|
1138 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Defines shortcode that output Filters Preset
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
@@ -26,10 +26,10 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Filters' ) ) {
|
|
26 |
*/
|
27 |
public static function render( $atts = array() ) {
|
28 |
$defaults = array(
|
29 |
-
'slug'
|
30 |
'selector' => '',
|
31 |
);
|
32 |
-
$atts
|
33 |
|
34 |
if ( ! $atts['slug'] ) {
|
35 |
return '';
|
@@ -54,7 +54,7 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Filters' ) ) {
|
|
54 |
* @return array Array of configuration.
|
55 |
*/
|
56 |
public static function get_gutenberg_config() {
|
57 |
-
$presets
|
58 |
$presets_options = array_merge(
|
59 |
array(
|
60 |
'' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
|
@@ -63,14 +63,14 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Filters' ) ) {
|
|
63 |
);
|
64 |
|
65 |
$blocks = array(
|
66 |
-
'yith-wcan-ajax-filters-preset'
|
67 |
'style' => 'yith-wcan-shortcodes',
|
68 |
'script' => 'yith-wcan-shortcodes',
|
69 |
'title' => _x( 'YITH AJAX Filters Preset', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
|
70 |
'description' => _x( 'Show filters from a preset', '[GUTENBERG]: block description', 'yith-woocommerce-ajax-navigation' ),
|
71 |
'shortcode_name' => 'yith_wcan_filters',
|
72 |
'attributes' => array(
|
73 |
-
'slug'
|
74 |
'type' => 'select',
|
75 |
'label' => _x( 'Preset', '[GUTENBERG]: attribute description', 'yith-woocommerce-ajax-navigation' ),
|
76 |
'options' => $presets_options,
|
5 |
* Defines shortcode that output Filters Preset
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes\Shortcodes
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
26 |
*/
|
27 |
public static function render( $atts = array() ) {
|
28 |
$defaults = array(
|
29 |
+
'slug' => '',
|
30 |
'selector' => '',
|
31 |
);
|
32 |
+
$atts = shortcode_atts( $defaults, $atts );
|
33 |
|
34 |
if ( ! $atts['slug'] ) {
|
35 |
return '';
|
54 |
* @return array Array of configuration.
|
55 |
*/
|
56 |
public static function get_gutenberg_config() {
|
57 |
+
$presets = YITH_WCAN_Preset_Factory::list_presets();
|
58 |
$presets_options = array_merge(
|
59 |
array(
|
60 |
'' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
|
63 |
);
|
64 |
|
65 |
$blocks = array(
|
66 |
+
'yith-wcan-ajax-filters-preset' => array(
|
67 |
'style' => 'yith-wcan-shortcodes',
|
68 |
'script' => 'yith-wcan-shortcodes',
|
69 |
'title' => _x( 'YITH AJAX Filters Preset', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
|
70 |
'description' => _x( 'Show filters from a preset', '[GUTENBERG]: block description', 'yith-woocommerce-ajax-navigation' ),
|
71 |
'shortcode_name' => 'yith_wcan_filters',
|
72 |
'attributes' => array(
|
73 |
+
'slug' => array(
|
74 |
'type' => 'select',
|
75 |
'label' => _x( 'Preset', '[GUTENBERG]: attribute description', 'yith-woocommerce-ajax-navigation' ),
|
76 |
'options' => $presets_options,
|
@@ -5,7 +5,7 @@
|
|
5 |
* Defines shortcode that output Reset Filters button
|
6 |
*
|
7 |
* @author YITH
|
8 |
-
* @package YITH
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
@@ -43,7 +43,7 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Reset_Button' ) ) {
|
|
43 |
add_action( 'yith_plugin_fw_gutenberg_before_do_shortcode', array( __CLASS__, 'fix_for_gutenberg_block' ), 10, 1 );
|
44 |
|
45 |
$blocks = array(
|
46 |
-
'yith-wcan-reset-button'
|
47 |
'style' => 'yith-wcan-shortcodes',
|
48 |
'script' => 'yith-wcan-shortcodes',
|
49 |
'title' => _x( 'YITH Reset Filters Button', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
|
5 |
* Defines shortcode that output Reset Filters button
|
6 |
*
|
7 |
* @author YITH
|
8 |
+
* @package YITH\AjaxProductFilter\Classes\Shortcodes
|
9 |
* @version 4.0
|
10 |
*/
|
11 |
|
43 |
add_action( 'yith_plugin_fw_gutenberg_before_do_shortcode', array( __CLASS__, 'fix_for_gutenberg_block' ), 10, 1 );
|
44 |
|
45 |
$blocks = array(
|
46 |
+
'yith-wcan-reset-button' => array(
|
47 |
'style' => 'yith-wcan-shortcodes',
|
48 |
'script' => 'yith-wcan-shortcodes',
|
49 |
'title' => _x( 'YITH Reset Filters Button', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
|
@@ -3,7 +3,7 @@
|
|
3 |
* Filter Presets Table class
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
-
* @package YITH
|
7 |
* @version 1.0.0
|
8 |
*/
|
9 |
|
@@ -50,7 +50,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
|
|
50 |
if ( isset( $item->$column_name ) ) {
|
51 |
return esc_html( $item->$column_name );
|
52 |
} else {
|
53 |
-
|
|
|
54 |
}
|
55 |
}
|
56 |
|
@@ -112,9 +113,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
|
|
112 |
*/
|
113 |
public function get_columns() {
|
114 |
$columns = array(
|
115 |
-
'name'
|
116 |
'shortcode' => _x( 'Shortcode', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
|
117 |
-
'actions'
|
118 |
);
|
119 |
|
120 |
return $columns;
|
@@ -191,9 +192,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
|
|
191 |
} else {
|
192 |
YITH_WCAN()->admin->show_empty_content(
|
193 |
array(
|
194 |
-
'item_name'
|
195 |
'button_label' => _x( 'Create a new preset', '[Admin] New preset button label', 'yith-woocommerce-ajax-navigation' ),
|
196 |
-
'button_url'
|
197 |
)
|
198 |
);
|
199 |
}
|
@@ -210,8 +211,14 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
|
|
210 |
public function prepare_items() {
|
211 |
$query_arg = array();
|
212 |
|
213 |
-
|
214 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
}
|
216 |
|
217 |
// sets pagination arguments.
|
@@ -223,8 +230,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
|
|
223 |
array(
|
224 |
'limit' => $per_page,
|
225 |
'offset' => ( ( $current_page - 1 ) * $per_page ),
|
226 |
-
'orderby' =>
|
227 |
-
'order' =>
|
228 |
),
|
229 |
$query_arg
|
230 |
)
|
3 |
* Filter Presets Table class
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Tables
|
7 |
* @version 1.0.0
|
8 |
*/
|
9 |
|
50 |
if ( isset( $item->$column_name ) ) {
|
51 |
return esc_html( $item->$column_name );
|
52 |
} else {
|
53 |
+
// Show the whole array for troubleshooting purposes.
|
54 |
+
return print_r( $item, true ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r
|
55 |
}
|
56 |
}
|
57 |
|
113 |
*/
|
114 |
public function get_columns() {
|
115 |
$columns = array(
|
116 |
+
'name' => _x( 'Preset name', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
|
117 |
'shortcode' => _x( 'Shortcode', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
|
118 |
+
'actions' => '',
|
119 |
);
|
120 |
|
121 |
return $columns;
|
192 |
} else {
|
193 |
YITH_WCAN()->admin->show_empty_content(
|
194 |
array(
|
195 |
+
'item_name' => _x( 'filter preset', '[Admin] Name of the item missing, shown in preset-empty-content template', 'yith-woocommerce-ajax-navigation' ),
|
196 |
'button_label' => _x( 'Create a new preset', '[Admin] New preset button label', 'yith-woocommerce-ajax-navigation' ),
|
197 |
+
'button_url' => YITH_WCAN()->admin->get_preset_create_page(),
|
198 |
)
|
199 |
);
|
200 |
}
|
211 |
public function prepare_items() {
|
212 |
$query_arg = array();
|
213 |
|
214 |
+
// phpcs:disable WordPress.Security.NonceVerification.Recommended
|
215 |
+
$search_string = ! empty( $_REQUEST['s'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['s'] ) ) : false;
|
216 |
+
$orderby = ! empty( $_REQUEST['orderby'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['orderby'] ) ) : false;
|
217 |
+
$order = ! empty( $_REQUEST['order'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['order'] ) ) : false;
|
218 |
+
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
219 |
+
|
220 |
+
if ( $search_string ) {
|
221 |
+
$query_arg['s'] = $search_string;
|
222 |
}
|
223 |
|
224 |
// sets pagination arguments.
|
230 |
array(
|
231 |
'limit' => $per_page,
|
232 |
'offset' => ( ( $current_page - 1 ) * $per_page ),
|
233 |
+
'orderby' => $orderby ? $orderby : 'ID',
|
234 |
+
'order' => $order ? $order : 'DESC',
|
235 |
),
|
236 |
$query_arg
|
237 |
)
|
@@ -3,7 +3,7 @@
|
|
3 |
* Filter preset widget
|
4 |
*
|
5 |
* @author YITH
|
6 |
-
* @package YITH
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
@@ -19,9 +19,9 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
|
|
19 |
/**
|
20 |
* Widget ID
|
21 |
*
|
22 |
-
* @
|
23 |
*/
|
24 |
-
|
25 |
|
26 |
/**
|
27 |
* Constructor method
|
@@ -31,7 +31,7 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
|
|
31 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
32 |
*/
|
33 |
public function __construct() {
|
34 |
-
parent::__construct(
|
35 |
}
|
36 |
|
37 |
/**
|
@@ -84,9 +84,9 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
|
|
84 |
$instance = $old_instance;
|
85 |
|
86 |
$preset_slug = sanitize_title_with_dashes( $new_instance['preset'] );
|
87 |
-
$presets
|
88 |
|
89 |
-
if ( in_array( $preset_slug, $presets ) ) {
|
90 |
$instance['preset'] = $preset_slug;
|
91 |
}
|
92 |
|
@@ -104,8 +104,8 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
|
|
104 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
105 |
*/
|
106 |
public function widget( $args, $instance ) {
|
107 |
-
$title
|
108 |
-
$title
|
109 |
$preset_slug = ! empty( $instance['preset'] ) ? $instance['preset'] : '';
|
110 |
|
111 |
if ( ! $preset_slug ) {
|
3 |
* Filter preset widget
|
4 |
*
|
5 |
* @author YITH
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Widgets
|
7 |
* @version 4.0.0
|
8 |
*/
|
9 |
|
19 |
/**
|
20 |
* Widget ID
|
21 |
*
|
22 |
+
* @const string
|
23 |
*/
|
24 |
+
const ID_BASE = 'yith-woocommerce-ajax-navigation-filters';
|
25 |
|
26 |
/**
|
27 |
* Constructor method
|
31 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
32 |
*/
|
33 |
public function __construct() {
|
34 |
+
parent::__construct( self::ID_BASE, _x( 'YITH AJAX Filters Preset', '[ADMIN] Name of the preset widget', 'yith-woocommerce-ajax-navigation' ) );
|
35 |
}
|
36 |
|
37 |
/**
|
84 |
$instance = $old_instance;
|
85 |
|
86 |
$preset_slug = sanitize_title_with_dashes( $new_instance['preset'] );
|
87 |
+
$presets = array_keys( YITH_WCAN_Preset_Factory::list_presets() );
|
88 |
|
89 |
+
if ( in_array( $preset_slug, $presets, true ) ) {
|
90 |
$instance['preset'] = $preset_slug;
|
91 |
}
|
92 |
|
104 |
* @author Antonio La Rocca <antonio.larocca@yithemes.com>
|
105 |
*/
|
106 |
public function widget( $args, $instance ) {
|
107 |
+
$title = ! empty( $instance['title'] ) ? $instance['title'] : '';
|
108 |
+
$title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
|
109 |
$preset_slug = ! empty( $instance['preset'] ) ? $instance['preset'] : '';
|
110 |
|
111 |
if ( ! $preset_slug ) {
|
@@ -3,7 +3,7 @@
|
|
3 |
* Ajax filter widget (legacy)
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
-
* @package YITH
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
@@ -12,7 +12,6 @@ if ( ! defined( 'YITH_WCAN' ) ) {
|
|
12 |
} // Exit if accessed directly
|
13 |
|
14 |
if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
15 |
-
|
16 |
/**
|
17 |
* YITH WooCommerce Ajax Navigation Widget
|
18 |
*
|
@@ -41,7 +40,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
41 |
*/
|
42 |
public function __construct() {
|
43 |
$classname = 'yith-woocommerce-ajax-product-filter yith-woo-ajax-navigation woocommerce widget_layered_nav';
|
44 |
-
$classname .= defined( 'YITH_WCAN_PREMIUM' ) && 'checkboxes'
|
45 |
$widget_ops = array(
|
46 |
'classname' => $classname,
|
47 |
'description' => __( 'Filter the list of products without reloading the page', 'yith-woocommerce-ajax-navigation' ),
|
@@ -67,11 +66,16 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
67 |
'use' => "{$this->id}_show_product_count",
|
68 |
'params' => 2,
|
69 |
),
|
70 |
-
"{$this->id}-li_style"
|
71 |
'since' => '3.11.7',
|
72 |
'use' => "{$this->id}_li_style",
|
73 |
'params' => 2,
|
74 |
),
|
|
|
|
|
|
|
|
|
|
|
75 |
);
|
76 |
|
77 |
yith_wcan_deprecated_filter( $deprecated_filters_map );
|
@@ -124,7 +128,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
124 |
$is_parent_class = 'yit-wcan-parent-terms';
|
125 |
$is_chosen_class = 'chosen';
|
126 |
$terms_type_list = ( isset( $instance['display'] ) ) ? $instance['display'] : 'all';
|
127 |
-
$in_array_function = apply_filters( '
|
128 |
$rel_nofollow = yith_wcan_add_rel_nofollow_to_url( true );
|
129 |
|
130 |
$instance['id'] = $this->id;
|
@@ -162,7 +166,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
162 |
}
|
163 |
}
|
164 |
|
165 |
-
if ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ) ) ) {
|
166 |
|
167 |
$tree = array();
|
168 |
$ancestors = yith_wcan_wp_get_terms(
|
@@ -176,14 +180,14 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
176 |
|
177 |
if ( ! empty( $ancestors ) && ! is_wp_error( $ancestors ) ) {
|
178 |
|
179 |
-
if ( 'product'
|
180 |
usort( $ancestors, 'yit_terms_sort' );
|
181 |
-
} elseif ( 'alphabetical'
|
182 |
usort( $ancestors, 'yit_alphabetical_terms_sort' );
|
183 |
}
|
184 |
|
185 |
foreach ( $ancestors as $ancestor ) {
|
186 |
-
$tree[ $ancestor->term_id ] = 'parent'
|
187 |
}
|
188 |
}
|
189 |
|
@@ -197,7 +201,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
197 |
$this->get_list_html( $tree, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, 0, $filter_term_field, $rel_nofollow );
|
198 |
|
199 |
echo '</ul>';
|
200 |
-
} elseif ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_select', array( 'select' ) ) ) ) {
|
201 |
$dropdown_label = apply_filters( 'yith_wcan_dropdown_label', __( 'Filters:', 'yith-woocommerce-ajax-navigation' ), $this, $instance, $instance['attribute'] );
|
202 |
?>
|
203 |
|
@@ -213,7 +217,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
213 |
foreach ( $terms as $term ) {
|
214 |
|
215 |
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
|
216 |
-
$option_is_set
|
217 |
|
218 |
if ( 'and' === $query_type ) {
|
219 |
// If this is an AND query, only show options with count > 0.
|
@@ -223,7 +227,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
223 |
$this->found = true;
|
224 |
}
|
225 |
|
226 |
-
if ( ( 'hierarchical'
|
227 |
continue;
|
228 |
}
|
229 |
} else {
|
@@ -309,7 +313,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
309 |
|
310 |
if ( ! empty( $instance['colors'][ $term_id ] ) ) {
|
311 |
$color = $instance['colors'][ $term_id ];
|
312 |
-
} elseif ( apply_filters( 'yith_wcan_ywccl_support', function_exists( 'ywccl_get_term_meta' ) ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'colorpicker'
|
313 |
$colors = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
|
314 |
|
315 |
if ( ! empty( $colors ) ) {
|
@@ -339,7 +343,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
339 |
|
340 |
foreach ( $terms as $term ) {
|
341 |
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
|
342 |
-
$option_is_set
|
343 |
|
344 |
if ( 'and' === $query_type ) {
|
345 |
// If this is an AND query, only show options with count > 0.
|
@@ -375,7 +379,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
375 |
|
376 |
if ( ! empty( $instance['labels'][ $term_id ] ) ) {
|
377 |
$label = $instance['labels'][ $term_id ];
|
378 |
-
} elseif ( function_exists( 'ywccl_get_term_meta' ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'label'
|
379 |
$label = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
|
380 |
}
|
381 |
|
@@ -464,7 +468,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
464 |
</select>
|
465 |
</p>
|
466 |
|
467 |
-
<p class="yith-wcan-attribute-list" style="display: <?php echo in_array( $instance['type'], array( 'tags', 'brands', 'categories' ) ) ? 'none' : 'block'; ?>;">
|
468 |
<label for="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>"><strong><?php esc_html_e( 'Attribute:', 'yith-woocommerce-ajax-navigation' ); ?></strong></label>
|
469 |
<select class="yith_wcan_attributes widefat" id="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'attribute' ) ); ?>">
|
470 |
<?php yith_wcan_dropdown_attributes( $instance['attribute'] ); ?>
|
@@ -531,7 +535,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
531 |
*/
|
532 |
public function update( $new_instance, $old_instance ) {
|
533 |
$instance = $old_instance;
|
534 |
-
$instance['title'] =
|
535 |
$instance['attribute'] = ! empty( $new_instance['attribute'] ) ? stripslashes( $new_instance['attribute'] ) : array();
|
536 |
$instance['query_type'] = stripslashes( $new_instance['query_type'] );
|
537 |
$instance['type'] = stripslashes( $new_instance['type'] );
|
@@ -553,16 +557,17 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
553 |
* @return array Array of currently active filters, plus term passed as param
|
554 |
*/
|
555 |
public function get_current_filters( $term, $args = array() ) {
|
556 |
-
$current_filters
|
557 |
-
$filter_term_field
|
558 |
-
$display_type
|
559 |
-
$query_type
|
560 |
-
$arg
|
561 |
-
$in_array_function
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
$
|
|
|
566 |
$current_filter_param = str_replace( ' ', '+', $current_filter_param );
|
567 |
$current_filter_param = apply_filters( "yith_wcan_{$display_type}_filter_query_{$arg}", $current_filter_param );
|
568 |
|
@@ -599,7 +604,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
599 |
$_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
|
600 |
$filter_term_field = YITH_WCAN()->filter_term_field;
|
601 |
$current_term = $_attributes_array && is_tax( $_attributes_array ) ? $queried_object->$filter_term_field : '';
|
602 |
-
$in_array_function = apply_filters( '
|
603 |
$query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
|
604 |
$display_type = isset( $args['type'] ) ? $args['type'] : 'list';
|
605 |
$terms_type_list = apply_filters( 'yith_wcan_get_terms_params', isset( $args['display'] ) ? $args['display'] : 'all', $args, 'terms_type' );
|
@@ -608,6 +613,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
608 |
$is_chosen_class = 'chosen';
|
609 |
$is_parent_class = 'yit-wcan-parent-terms';
|
610 |
$link = yit_get_woocommerce_layered_nav_link();
|
|
|
611 |
|
612 |
// All current filters.
|
613 |
if ( $_chosen_attributes ) {
|
@@ -616,7 +622,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
616 |
|
617 |
// Exclude query arg for current term archive term.
|
618 |
while ( $in_array_function( $term->slug, $data['terms'] ) ) {
|
619 |
-
$key = array_search( $current_term, $data );
|
620 |
unset( $data['terms'][ $key ] );
|
621 |
}
|
622 |
|
@@ -635,38 +641,38 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
635 |
}
|
636 |
|
637 |
// Min price.
|
638 |
-
if ( isset( $
|
639 |
-
$link = add_query_arg( 'min_price', (float) $
|
640 |
}
|
641 |
|
642 |
// Max price.
|
643 |
-
if ( isset( $
|
644 |
-
$link = add_query_arg( 'max_price', (float) $
|
645 |
}
|
646 |
|
647 |
// Product tag.
|
648 |
-
if ( isset( $
|
649 |
-
$link = add_query_arg( 'product_tag', urlencode( sanitize_text_field( wp_unslash( $
|
650 |
} elseif ( is_product_tag() && $queried_object ) {
|
651 |
$link = add_query_arg( array( 'product_tag' => $queried_object->slug ), $link );
|
652 |
}
|
653 |
|
654 |
// Brand.
|
655 |
-
if ( isset( $
|
656 |
-
$brands = get_term_by( 'slug', sanitize_text_field( wp_unslash( $
|
657 |
|
658 |
-
if ( $brands instanceof WP_Term && $brands->term_id
|
659 |
-
$link = add_query_arg( $this->brand_taxonomy, urlencode( $brands->slug ), $link );
|
660 |
}
|
661 |
} elseif ( is_tax( $this->brand_taxonomy ) && $queried_object ) {
|
662 |
$link = add_query_arg( array( $this->brand_taxonomy => $queried_object->slug ), $link );
|
663 |
}
|
664 |
|
665 |
// Product category.
|
666 |
-
if ( isset( $
|
667 |
-
$categories_filter_operator = 'and'
|
668 |
-
$_chosen_categories
|
669 |
-
$link
|
670 |
'product_cat',
|
671 |
implode( apply_filters( 'yith_wcan_categories_filter_operator', $categories_filter_operator, $display_type, $query_type ), $_chosen_categories ),
|
672 |
$link
|
@@ -676,11 +682,11 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
676 |
}
|
677 |
|
678 |
// Current term.
|
679 |
-
if ( is_product_taxonomy() && ! yit_is_filtered_uri() && $term->term_id
|
680 |
$link = add_query_arg(
|
681 |
array(
|
682 |
-
'source_id'
|
683 |
-
'source_tax'
|
684 |
$queried_object->taxonomy => $queried_object->slug,
|
685 |
),
|
686 |
$link
|
@@ -688,9 +694,9 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
688 |
}
|
689 |
|
690 |
// Current term.
|
691 |
-
if ( isset( $
|
692 |
$add_source_id = true;
|
693 |
-
if ( property_exists( $term, 'term_id' ) && property_exists( $queried_object, 'term_id' ) && $term->term_id
|
694 |
if ( ! yit_is_filtered_uri() ) {
|
695 |
$add_source_id = false;
|
696 |
}
|
@@ -698,23 +704,23 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
698 |
|
699 |
if ( $add_source_id ) {
|
700 |
$query_args = array(
|
701 |
-
'source_id' => sanitize_text_field( wp_unslash( $
|
702 |
-
'source_tax' => sanitize_text_field( wp_unslash( $
|
703 |
);
|
704 |
-
if ( property_exists( $queried_object, 'taxonomy' ) && isset( $
|
705 |
-
$args[ $queried_object->taxonomy ] = sanitize_text_field( wp_unslash( $
|
706 |
}
|
707 |
$link = add_query_arg( $query_args, $link );
|
708 |
}
|
709 |
}
|
710 |
|
711 |
// Vendor.
|
712 |
-
if ( isset( $
|
713 |
-
$link = add_query_arg( array( 'yith_shop_vendor' => sanitize_text_field( wp_unslash( $
|
714 |
}
|
715 |
|
716 |
// Current Filter = this widget.
|
717 |
-
$term_param
|
718 |
$check_for_current_widget = isset( $_chosen_attributes[ $taxonomy ] ) && is_array( $_chosen_attributes[ $taxonomy ]['terms'] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] );
|
719 |
$check_for_current_widget = apply_filters( "yith_wcan_{$display_type}_type_current_widget_check", $check_for_current_widget, $current_filters, $display_type, $term_param, $query_type );
|
720 |
|
@@ -734,7 +740,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
734 |
// Remove this term is $current_filter has more than 1 term filtered.
|
735 |
if ( count( $current_filters ) > 1 ) {
|
736 |
$current_filter_without_this = array_diff( $current_filters, array( $term->$filter_term_field ) );
|
737 |
-
$link
|
738 |
} else {
|
739 |
$link = remove_query_arg( $arg, $link );
|
740 |
}
|
@@ -751,17 +757,17 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
751 |
$class = '';
|
752 |
}
|
753 |
|
754 |
-
$link
|
755 |
}
|
756 |
|
757 |
// Search Arg.
|
758 |
if ( get_search_query() ) {
|
759 |
-
$link = add_query_arg( 's', urlencode( get_search_query() ), $link );
|
760 |
}
|
761 |
|
762 |
// Post Type Arg.
|
763 |
-
if ( isset( $
|
764 |
-
$link = add_query_arg( 'post_type', sanitize_text_field( wp_unslash( $
|
765 |
}
|
766 |
|
767 |
// Query type Arg.
|
@@ -807,11 +813,11 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
807 |
$widget_settings = $settings[ $this->number ];
|
808 |
$value = '';
|
809 |
|
810 |
-
if ( 'label'
|
811 |
$value = $widget_settings['labels'];
|
812 |
-
} elseif ( 'color'
|
813 |
$value = $widget_settings['colors'];
|
814 |
-
} elseif ( 'multicolor'
|
815 |
$value = $widget_settings['multicolor'];
|
816 |
}
|
817 |
|
@@ -826,7 +832,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
826 |
);
|
827 |
}
|
828 |
|
829 |
-
echo
|
830 |
die();
|
831 |
}
|
832 |
|
@@ -852,7 +858,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
852 |
*/
|
853 |
public function get_list_html( $terms, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, $level = 0, $filter_term_field = 'slug', $rel_nofollow = '' ) {
|
854 |
$_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
|
855 |
-
$in_array_function = apply_filters( '
|
856 |
$terms = apply_filters( 'yith_wcan_get_list_html_terms', $terms, $taxonomy, $instance );
|
857 |
|
858 |
foreach ( $terms as $parent_id => $term_ids ) {
|
@@ -864,9 +870,9 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
864 |
|
865 |
if ( 'tags' === $instance['type'] ) {
|
866 |
$term_id = yit_wcan_localize_terms( $term->term_id, $taxonomy );
|
867 |
-
if ( 'exclude'
|
868 |
$echo = ! $in_array_function( $term_id, $exclude );
|
869 |
-
} elseif ( 'include'
|
870 |
$echo = $in_array_function( $term_id, $include );
|
871 |
}
|
872 |
} else {
|
@@ -879,8 +885,8 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
879 |
|
880 |
// Get count based on current view - uses transients.
|
881 |
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
|
882 |
-
$option_is_set
|
883 |
-
$term_param
|
884 |
|
885 |
if ( 'and' === $query_type ) {
|
886 |
// If this is an AND query, only show options with count > 0.
|
@@ -899,14 +905,14 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
899 |
list( $link, $class ) = $this->get_link_attributes( $term, $taxonomy, $current_filter, $instance );
|
900 |
|
901 |
$li_printed = false;
|
902 |
-
$term_name
|
903 |
|
904 |
if ( $count > 0 || $option_is_set ) {
|
905 |
-
$to_print
|
906 |
printf( '<li %s><a %s href="%s">%s</a>', $class, $rel_nofollow, esc_url( $link ), wp_kses_post( $term_name ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
907 |
$li_printed = true;
|
908 |
} else {
|
909 |
-
$to_print = apply_filters( 'yith_wcan_show_no_products_attributes', ( ! $filter_by_tags_hierarchical && 'and'
|
910 |
$class = apply_filters( 'yith_wcan_list_type_empty_filter_class', $class );
|
911 |
|
912 |
if ( $to_print ) {
|
3 |
* Ajax filter widget (legacy)
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Widgets
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
12 |
} // Exit if accessed directly
|
13 |
|
14 |
if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
|
|
|
15 |
/**
|
16 |
* YITH WooCommerce Ajax Navigation Widget
|
17 |
*
|
40 |
*/
|
41 |
public function __construct() {
|
42 |
$classname = 'yith-woocommerce-ajax-product-filter yith-woo-ajax-navigation woocommerce widget_layered_nav';
|
43 |
+
$classname .= defined( 'YITH_WCAN_PREMIUM' ) && 'checkboxes' === yith_wcan_get_option( 'yith_wcan_ajax_shop_filter_style', 'standard' ) ? ' with-checkbox' : '';
|
44 |
$widget_ops = array(
|
45 |
'classname' => $classname,
|
46 |
'description' => __( 'Filter the list of products without reloading the page', 'yith-woocommerce-ajax-navigation' ),
|
66 |
'use' => "{$this->id}_show_product_count",
|
67 |
'params' => 2,
|
68 |
),
|
69 |
+
"{$this->id}-li_style" => array(
|
70 |
'since' => '3.11.7',
|
71 |
'use' => "{$this->id}_li_style",
|
72 |
'params' => 2,
|
73 |
),
|
74 |
+
'yith_wcan_in_array_ignor_case' => array(
|
75 |
+
'since' => '4.1.1',
|
76 |
+
'use' => 'yith_wcan_in_array_ignore_case',
|
77 |
+
'params' => 1,
|
78 |
+
),
|
79 |
);
|
80 |
|
81 |
yith_wcan_deprecated_filter( $deprecated_filters_map );
|
128 |
$is_parent_class = 'yit-wcan-parent-terms';
|
129 |
$is_chosen_class = 'chosen';
|
130 |
$terms_type_list = ( isset( $instance['display'] ) ) ? $instance['display'] : 'all';
|
131 |
+
$in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
|
132 |
$rel_nofollow = yith_wcan_add_rel_nofollow_to_url( true );
|
133 |
|
134 |
$instance['id'] = $this->id;
|
166 |
}
|
167 |
}
|
168 |
|
169 |
+
if ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ), true ) ) {
|
170 |
|
171 |
$tree = array();
|
172 |
$ancestors = yith_wcan_wp_get_terms(
|
180 |
|
181 |
if ( ! empty( $ancestors ) && ! is_wp_error( $ancestors ) ) {
|
182 |
|
183 |
+
if ( 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
|
184 |
usort( $ancestors, 'yit_terms_sort' );
|
185 |
+
} elseif ( 'alphabetical' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
|
186 |
usort( $ancestors, 'yit_alphabetical_terms_sort' );
|
187 |
}
|
188 |
|
189 |
foreach ( $ancestors as $ancestor ) {
|
190 |
+
$tree[ $ancestor->term_id ] = 'parent' === $terms_type_list ? array() : yit_reorder_hierachical_categories( $ancestor->term_id, $taxonomy );
|
191 |
}
|
192 |
}
|
193 |
|
201 |
$this->get_list_html( $tree, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, 0, $filter_term_field, $rel_nofollow );
|
202 |
|
203 |
echo '</ul>';
|
204 |
+
} elseif ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_select', array( 'select' ) ), true ) ) {
|
205 |
$dropdown_label = apply_filters( 'yith_wcan_dropdown_label', __( 'Filters:', 'yith-woocommerce-ajax-navigation' ), $this, $instance, $instance['attribute'] );
|
206 |
?>
|
207 |
|
217 |
foreach ( $terms as $term ) {
|
218 |
|
219 |
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
|
220 |
+
$option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
|
221 |
|
222 |
if ( 'and' === $query_type ) {
|
223 |
// If this is an AND query, only show options with count > 0.
|
227 |
$this->found = true;
|
228 |
}
|
229 |
|
230 |
+
if ( ( 'hierarchical' !== $terms_type_list || ! yit_term_has_child( $term, $taxonomy ) ) && ! $count && ! $option_is_set ) {
|
231 |
continue;
|
232 |
}
|
233 |
} else {
|
313 |
|
314 |
if ( ! empty( $instance['colors'][ $term_id ] ) ) {
|
315 |
$color = $instance['colors'][ $term_id ];
|
316 |
+
} elseif ( apply_filters( 'yith_wcan_ywccl_support', function_exists( 'ywccl_get_term_meta' ) ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'colorpicker' === $wc_product_attributes[ $term->taxonomy ]->attribute_type ) {
|
317 |
$colors = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
|
318 |
|
319 |
if ( ! empty( $colors ) ) {
|
343 |
|
344 |
foreach ( $terms as $term ) {
|
345 |
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
|
346 |
+
$option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
|
347 |
|
348 |
if ( 'and' === $query_type ) {
|
349 |
// If this is an AND query, only show options with count > 0.
|
379 |
|
380 |
if ( ! empty( $instance['labels'][ $term_id ] ) ) {
|
381 |
$label = $instance['labels'][ $term_id ];
|
382 |
+
} elseif ( function_exists( 'ywccl_get_term_meta' ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'label' === $wc_product_attributes[ $term->taxonomy ]->attribute_type ) {
|
383 |
$label = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
|
384 |
}
|
385 |
|
468 |
</select>
|
469 |
</p>
|
470 |
|
471 |
+
<p class="yith-wcan-attribute-list" style="display: <?php echo in_array( $instance['type'], array( 'tags', 'brands', 'categories' ), true ) ? 'none' : 'block'; ?>;">
|
472 |
<label for="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>"><strong><?php esc_html_e( 'Attribute:', 'yith-woocommerce-ajax-navigation' ); ?></strong></label>
|
473 |
<select class="yith_wcan_attributes widefat" id="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'attribute' ) ); ?>">
|
474 |
<?php yith_wcan_dropdown_attributes( $instance['attribute'] ); ?>
|
535 |
*/
|
536 |
public function update( $new_instance, $old_instance ) {
|
537 |
$instance = $old_instance;
|
538 |
+
$instance['title'] = wp_strip_all_tags( $new_instance['title'] );
|
539 |
$instance['attribute'] = ! empty( $new_instance['attribute'] ) ? stripslashes( $new_instance['attribute'] ) : array();
|
540 |
$instance['query_type'] = stripslashes( $new_instance['query_type'] );
|
541 |
$instance['type'] = stripslashes( $new_instance['type'] );
|
557 |
* @return array Array of currently active filters, plus term passed as param
|
558 |
*/
|
559 |
public function get_current_filters( $term, $args = array() ) {
|
560 |
+
$current_filters = array();
|
561 |
+
$filter_term_field = YITH_WCAN()->filter_term_field;
|
562 |
+
$display_type = isset( $args['type'] ) ? $args['type'] : 'list';
|
563 |
+
$query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
|
564 |
+
$arg = apply_filters( "yith_wcan_{$display_type}_type_query_arg", isset( $args['attribute'] ) ? 'filter_' . sanitize_title( $args['attribute'] ) : '', $display_type, $term );
|
565 |
+
$in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
|
566 |
+
$request = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
567 |
+
|
568 |
+
if ( isset( $request[ $arg ] ) ) {
|
569 |
+
$separator = apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type );
|
570 |
+
$current_filter_param = sanitize_text_field( wp_unslash( $request[ $arg ] ) );
|
571 |
$current_filter_param = str_replace( ' ', '+', $current_filter_param );
|
572 |
$current_filter_param = apply_filters( "yith_wcan_{$display_type}_filter_query_{$arg}", $current_filter_param );
|
573 |
|
604 |
$_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
|
605 |
$filter_term_field = YITH_WCAN()->filter_term_field;
|
606 |
$current_term = $_attributes_array && is_tax( $_attributes_array ) ? $queried_object->$filter_term_field : '';
|
607 |
+
$in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
|
608 |
$query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
|
609 |
$display_type = isset( $args['type'] ) ? $args['type'] : 'list';
|
610 |
$terms_type_list = apply_filters( 'yith_wcan_get_terms_params', isset( $args['display'] ) ? $args['display'] : 'all', $args, 'terms_type' );
|
613 |
$is_chosen_class = 'chosen';
|
614 |
$is_parent_class = 'yit-wcan-parent-terms';
|
615 |
$link = yit_get_woocommerce_layered_nav_link();
|
616 |
+
$request = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
617 |
|
618 |
// All current filters.
|
619 |
if ( $_chosen_attributes ) {
|
622 |
|
623 |
// Exclude query arg for current term archive term.
|
624 |
while ( $in_array_function( $term->slug, $data['terms'] ) ) {
|
625 |
+
$key = array_search( $current_term, $data ); // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
|
626 |
unset( $data['terms'][ $key ] );
|
627 |
}
|
628 |
|
641 |
}
|
642 |
|
643 |
// Min price.
|
644 |
+
if ( isset( $request['min_price'] ) ) {
|
645 |
+
$link = add_query_arg( 'min_price', (float) $request['min_price'], $link );
|
646 |
}
|
647 |
|
648 |
// Max price.
|
649 |
+
if ( isset( $request['max_price'] ) ) {
|
650 |
+
$link = add_query_arg( 'max_price', (float) $request['max_price'], $link );
|
651 |
}
|
652 |
|
653 |
// Product tag.
|
654 |
+
if ( isset( $request['product_tag'] ) ) {
|
655 |
+
$link = add_query_arg( 'product_tag', urlencode( sanitize_text_field( wp_unslash( $request['product_tag'] ) ) ), $link ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
656 |
} elseif ( is_product_tag() && $queried_object ) {
|
657 |
$link = add_query_arg( array( 'product_tag' => $queried_object->slug ), $link );
|
658 |
}
|
659 |
|
660 |
// Brand.
|
661 |
+
if ( isset( $request[ $this->brand_taxonomy ] ) ) {
|
662 |
+
$brands = get_term_by( 'slug', sanitize_text_field( wp_unslash( $request[ $this->brand_taxonomy ] ) ), $this->brand_taxonomy );
|
663 |
|
664 |
+
if ( $brands instanceof WP_Term && $brands->term_id !== $term->term_id ) {
|
665 |
+
$link = add_query_arg( $this->brand_taxonomy, urlencode( $brands->slug ), $link ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
666 |
}
|
667 |
} elseif ( is_tax( $this->brand_taxonomy ) && $queried_object ) {
|
668 |
$link = add_query_arg( array( $this->brand_taxonomy => $queried_object->slug ), $link );
|
669 |
}
|
670 |
|
671 |
// Product category.
|
672 |
+
if ( isset( $request['product_cat'] ) ) {
|
673 |
+
$categories_filter_operator = 'and' === $query_type ? '+' : ',';
|
674 |
+
$_chosen_categories = explode( $categories_filter_operator, urlencode( sanitize_text_field( wp_unslash( $request['product_cat'] ) ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
675 |
+
$link = add_query_arg(
|
676 |
'product_cat',
|
677 |
implode( apply_filters( 'yith_wcan_categories_filter_operator', $categories_filter_operator, $display_type, $query_type ), $_chosen_categories ),
|
678 |
$link
|
682 |
}
|
683 |
|
684 |
// Current term.
|
685 |
+
if ( is_product_taxonomy() && ! yit_is_filtered_uri() && $term->term_id !== $queried_object->term_id ) {
|
686 |
$link = add_query_arg(
|
687 |
array(
|
688 |
+
'source_id' => $queried_object->term_id,
|
689 |
+
'source_tax' => $queried_object->taxonomy,
|
690 |
$queried_object->taxonomy => $queried_object->slug,
|
691 |
),
|
692 |
$link
|
694 |
}
|
695 |
|
696 |
// Current term.
|
697 |
+
if ( isset( $request['source_id'] ) && isset( $request['source_tax'] ) ) {
|
698 |
$add_source_id = true;
|
699 |
+
if ( property_exists( $term, 'term_id' ) && property_exists( $queried_object, 'term_id' ) && $term->term_id === $queried_object->term_id ) {
|
700 |
if ( ! yit_is_filtered_uri() ) {
|
701 |
$add_source_id = false;
|
702 |
}
|
704 |
|
705 |
if ( $add_source_id ) {
|
706 |
$query_args = array(
|
707 |
+
'source_id' => sanitize_text_field( wp_unslash( $request['source_id'] ) ),
|
708 |
+
'source_tax' => sanitize_text_field( wp_unslash( $request['source_tax'] ) ),
|
709 |
);
|
710 |
+
if ( property_exists( $queried_object, 'taxonomy' ) && isset( $request[ $queried_object->taxonomy ] ) ) {
|
711 |
+
$args[ $queried_object->taxonomy ] = sanitize_text_field( wp_unslash( $request[ $queried_object->taxonomy ] ) );
|
712 |
}
|
713 |
$link = add_query_arg( $query_args, $link );
|
714 |
}
|
715 |
}
|
716 |
|
717 |
// Vendor.
|
718 |
+
if ( isset( $request['yith_shop_vendor'] ) ) {
|
719 |
+
$link = add_query_arg( array( 'yith_shop_vendor' => sanitize_text_field( wp_unslash( $request['yith_shop_vendor'] ) ) ), $link );
|
720 |
}
|
721 |
|
722 |
// Current Filter = this widget.
|
723 |
+
$term_param = apply_filters( 'yith_wcan_term_param_uri', $term->$filter_term_field, $display_type, $term );
|
724 |
$check_for_current_widget = isset( $_chosen_attributes[ $taxonomy ] ) && is_array( $_chosen_attributes[ $taxonomy ]['terms'] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] );
|
725 |
$check_for_current_widget = apply_filters( "yith_wcan_{$display_type}_type_current_widget_check", $check_for_current_widget, $current_filters, $display_type, $term_param, $query_type );
|
726 |
|
740 |
// Remove this term is $current_filter has more than 1 term filtered.
|
741 |
if ( count( $current_filters ) > 1 ) {
|
742 |
$current_filter_without_this = array_diff( $current_filters, array( $term->$filter_term_field ) );
|
743 |
+
$link = add_query_arg( $arg, implode( apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type ), $current_filter_without_this ), $link );
|
744 |
} else {
|
745 |
$link = remove_query_arg( $arg, $link );
|
746 |
}
|
757 |
$class = '';
|
758 |
}
|
759 |
|
760 |
+
$link = add_query_arg( $arg, implode( apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type ), $current_filters ), $link );
|
761 |
}
|
762 |
|
763 |
// Search Arg.
|
764 |
if ( get_search_query() ) {
|
765 |
+
$link = add_query_arg( 's', urlencode( get_search_query() ), $link ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
766 |
}
|
767 |
|
768 |
// Post Type Arg.
|
769 |
+
if ( isset( $request['post_type'] ) ) {
|
770 |
+
$link = add_query_arg( 'post_type', sanitize_text_field( wp_unslash( $request['post_type'] ) ), $link );
|
771 |
}
|
772 |
|
773 |
// Query type Arg.
|
813 |
$widget_settings = $settings[ $this->number ];
|
814 |
$value = '';
|
815 |
|
816 |
+
if ( 'label' === $type ) {
|
817 |
$value = $widget_settings['labels'];
|
818 |
+
} elseif ( 'color' === $type ) {
|
819 |
$value = $widget_settings['colors'];
|
820 |
+
} elseif ( 'multicolor' === $type ) {
|
821 |
$value = $widget_settings['multicolor'];
|
822 |
}
|
823 |
|
832 |
);
|
833 |
}
|
834 |
|
835 |
+
echo wp_json_encode( $return );
|
836 |
die();
|
837 |
}
|
838 |
|
858 |
*/
|
859 |
public function get_list_html( $terms, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, $level = 0, $filter_term_field = 'slug', $rel_nofollow = '' ) {
|
860 |
$_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
|
861 |
+
$in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
|
862 |
$terms = apply_filters( 'yith_wcan_get_list_html_terms', $terms, $taxonomy, $instance );
|
863 |
|
864 |
foreach ( $terms as $parent_id => $term_ids ) {
|
870 |
|
871 |
if ( 'tags' === $instance['type'] ) {
|
872 |
$term_id = yit_wcan_localize_terms( $term->term_id, $taxonomy );
|
873 |
+
if ( 'exclude' === $instance['tags_list_query'] ) {
|
874 |
$echo = ! $in_array_function( $term_id, $exclude );
|
875 |
+
} elseif ( 'include' === $instance['tags_list_query'] ) {
|
876 |
$echo = $in_array_function( $term_id, $include );
|
877 |
}
|
878 |
} else {
|
885 |
|
886 |
// Get count based on current view - uses transients.
|
887 |
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
|
888 |
+
$option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
|
889 |
+
$term_param = apply_filters( 'yith_wcan_term_param_uri', $term->$filter_term_field, $display_type, $term );
|
890 |
|
891 |
if ( 'and' === $query_type ) {
|
892 |
// If this is an AND query, only show options with count > 0.
|
905 |
list( $link, $class ) = $this->get_link_attributes( $term, $taxonomy, $current_filter, $instance );
|
906 |
|
907 |
$li_printed = false;
|
908 |
+
$term_name = apply_filters( 'yith_wcan_term_name_to_show', $term->name, $term );
|
909 |
|
910 |
if ( $count > 0 || $option_is_set ) {
|
911 |
+
$to_print = true;
|
912 |
printf( '<li %s><a %s href="%s">%s</a>', $class, $rel_nofollow, esc_url( $link ), wp_kses_post( $term_name ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
913 |
$li_printed = true;
|
914 |
} else {
|
915 |
+
$to_print = apply_filters( 'yith_wcan_show_no_products_attributes', ( ! $filter_by_tags_hierarchical && 'and' !== $query_type ), $count, $term );
|
916 |
$class = apply_filters( 'yith_wcan_list_type_empty_filter_class', $class );
|
917 |
|
918 |
if ( $to_print ) {
|
@@ -3,7 +3,7 @@
|
|
3 |
* Reset button widget
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
-
* @package YITH
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
@@ -30,7 +30,7 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
30 |
'description' => _x( 'Reset all filters set by YITH WooCommerce AJAX Product Filter', '[Plugin Name]', 'yith-woocommerce-ajax-navigation' ),
|
31 |
);
|
32 |
$control_ops = array(
|
33 |
-
'width'
|
34 |
'height' => 350,
|
35 |
);
|
36 |
|
@@ -45,7 +45,7 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
45 |
* @ return void
|
46 |
*/
|
47 |
$deprecated_filters_map = array(
|
48 |
-
'yith-wcan-reset-navigation-label'
|
49 |
'since' => '3.11.7',
|
50 |
'use' => 'yith_wcan_reset_navigation_label',
|
51 |
'params' => 3,
|
@@ -84,14 +84,15 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
84 |
extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
|
85 |
|
86 |
$_attributes_array = yit_wcan_get_product_taxonomy();
|
|
|
87 |
|
88 |
if ( apply_filters( 'yith_wcan_show_widget', ! is_post_type_archive( 'product' ) && ! is_tax( $_attributes_array ), $instance ) ) {
|
89 |
return;
|
90 |
}
|
91 |
|
92 |
// Price.
|
93 |
-
$min_price = isset( $
|
94 |
-
$max_price = isset( $
|
95 |
|
96 |
$after_widget = apply_filters( 'yith_wcan_after_reset_widget', $after_widget );
|
97 |
$before_widget = apply_filters( 'yith_wcan_before_reset_widget', $before_widget );
|
@@ -103,14 +104,14 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
103 |
$link = '';
|
104 |
|
105 |
// clean the url.
|
106 |
-
if ( ! isset( $
|
107 |
$link = '';
|
108 |
|
109 |
// Check if the user have enabled only WC PRice Filter.
|
110 |
-
if ( yit_is_filtered_uri() && ( isset( $
|
111 |
$queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
|
112 |
|
113 |
-
if ( $queried_object instanceof WP_Term && ! isset( $
|
114 |
$link = get_term_link( $queried_object );
|
115 |
}
|
116 |
}
|
@@ -127,8 +128,8 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
127 |
// Start filter from Product category Page.
|
128 |
$term = null;
|
129 |
|
130 |
-
if ( ! empty( $
|
131 |
-
$term = get_term_by( 'term_id', sanitize_text_field( wp_unslash( $
|
132 |
}
|
133 |
|
134 |
if ( $term instanceof WP_Term ) {
|
@@ -136,12 +137,12 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
136 |
}
|
137 |
}
|
138 |
|
139 |
-
if ( is_search() && isset( $
|
140 |
-
$s = urlencode( sanitize_text_field( wp_unslash( $
|
141 |
$link = add_query_arg(
|
142 |
array(
|
143 |
-
's'
|
144 |
-
'post_type' => sanitize_text_field( wp_unslash( $
|
145 |
),
|
146 |
get_home_url()
|
147 |
);
|
@@ -215,8 +216,8 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
|
|
215 |
*/
|
216 |
public function update( $new_instance, $old_instance ) {
|
217 |
$instance = $old_instance;
|
218 |
-
$instance['title'] =
|
219 |
-
$instance['label'] =
|
220 |
|
221 |
return $instance;
|
222 |
}
|
3 |
* Reset button widget
|
4 |
*
|
5 |
* @author Your Inspiration Themes
|
6 |
+
* @package YITH\AjaxProductFilter\Classes\Widgets
|
7 |
* @version 1.3.2
|
8 |
*/
|
9 |
|
30 |
'description' => _x( 'Reset all filters set by YITH WooCommerce AJAX Product Filter', '[Plugin Name]', 'yith-woocommerce-ajax-navigation' ),
|
31 |
);
|
32 |
$control_ops = array(
|
33 |
+
'width' => 400,
|
34 |
'height' => 350,
|
35 |
);
|
36 |
|
45 |
* @ return void
|
46 |
*/
|
47 |
$deprecated_filters_map = array(
|
48 |
+
'yith-wcan-reset-navigation-label' => array(
|
49 |
'since' => '3.11.7',
|
50 |
'use' => 'yith_wcan_reset_navigation_label',
|
51 |
'params' => 3,
|
84 |
extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
|
85 |
|
86 |
$_attributes_array = yit_wcan_get_product_taxonomy();
|
87 |
+
$request = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
88 |
|
89 |
if ( apply_filters( 'yith_wcan_show_widget', ! is_post_type_archive( 'product' ) && ! is_tax( $_attributes_array ), $instance ) ) {
|
90 |
return;
|
91 |
}
|
92 |
|
93 |
// Price.
|
94 |
+
$min_price = isset( $request['min_price'] ) ? (float) $request['min_price'] : 0;
|
95 |
+
$max_price = isset( $request['max_price'] ) ? (float) $request['max_price'] : 0;
|
96 |
|
97 |
$after_widget = apply_filters( 'yith_wcan_after_reset_widget', $after_widget );
|
98 |
$before_widget = apply_filters( 'yith_wcan_before_reset_widget', $before_widget );
|
104 |
$link = '';
|
105 |
|
106 |
// clean the url.
|
107 |
+
if ( ! isset( $request['source_id'] ) ) {
|
108 |
$link = '';
|
109 |
|
110 |
// Check if the user have enabled only WC PRice Filter.
|
111 |
+
if ( yit_is_filtered_uri() && ( isset( $request['min_price'] ) || isset( $request['max_price'] ) ) && is_product_taxonomy() ) {
|
112 |
$queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
|
113 |
|
114 |
+
if ( $queried_object instanceof WP_Term && ! isset( $request[ $queried_object->taxonomy ] ) ) {
|
115 |
$link = get_term_link( $queried_object );
|
116 |
}
|
117 |
}
|
128 |
// Start filter from Product category Page.
|
129 |
$term = null;
|
130 |
|
131 |
+
if ( ! empty( $request['source_id'] ) && ! empty( $request['source_tax'] ) ) {
|
132 |
+
$term = get_term_by( 'term_id', sanitize_text_field( wp_unslash( $request['source_id'] ) ), sanitize_text_field( wp_unslash( $request['source_tax'] ) ) );
|
133 |
}
|
134 |
|
135 |
if ( $term instanceof WP_Term ) {
|
137 |
}
|
138 |
}
|
139 |
|
140 |
+
if ( is_search() && isset( $request['s'] ) && isset( $request['post_type'] ) ) {
|
141 |
+
$s = urlencode( sanitize_text_field( wp_unslash( $request['s'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
|
142 |
$link = add_query_arg(
|
143 |
array(
|
144 |
+
's' => $s,
|
145 |
+
'post_type' => sanitize_text_field( wp_unslash( $request['post_type'] ) ),
|
146 |
),
|
147 |
get_home_url()
|
148 |
);
|
216 |
*/
|
217 |
public function update( $new_instance, $old_instance ) {
|
218 |
$instance = $old_instance;
|
219 |
+
$instance['title'] = wp_strip_all_tags( $new_instance['title'] );
|
220 |
+
$instance['label'] = wp_strip_all_tags( $new_instance['label'] );
|
221 |
|
222 |
return $instance;
|
223 |
}
|
@@ -3,17 +3,17 @@
|
|
3 |
* Plugin Name: YITH WooCommerce Ajax Product Filter
|
4 |
* Plugin URI: https://wordpress.org/plugins/yith-woocommerce-ajax-navigation/
|
5 |
* Description: <code><strong>YITH WooCommerce AJAX Product Filter</strong></code> allows your users to find the product they are looking for as quickly as possible. Thanks to the plugin you will be able to set up one or more search filters for your WooCommerce products and improve the user experience of your shop. <a href="https://yithemes.com/" target="_blank">Get more plugins for your e-commerce shop on <strong>YITH</strong></a>
|
6 |
-
* Version: 4.
|
7 |
* Author: YITH
|
8 |
* Author URI: https://yithemes.com/
|
9 |
* Text Domain: yith-woocommerce-ajax-navigation
|
10 |
* Domain Path: /languages/
|
11 |
*
|
12 |
-
* WC requires at least:
|
13 |
-
* WC tested up to: 5.
|
14 |
*
|
15 |
* @author YITH
|
16 |
-
* @package YITH
|
17 |
* @version 1.3.2
|
18 |
*/
|
19 |
|
@@ -44,7 +44,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
44 |
! defined( 'YITH_WCAN_URL' ) && define( 'YITH_WCAN_URL', plugin_dir_url( __FILE__ ) );
|
45 |
! defined( 'YITH_WCAN_DIR' ) && define( 'YITH_WCAN_DIR', plugin_dir_path( __FILE__ ) );
|
46 |
! defined( 'YITH_WCAN_INC' ) && define( 'YITH_WCAN_INC', YITH_WCAN_DIR . 'includes/' );
|
47 |
-
! defined( 'YITH_WCAN_VERSION' ) && define( 'YITH_WCAN_VERSION', '4.
|
48 |
! defined( 'YITH_WCAN_FREE_INIT' ) && define( 'YITH_WCAN_FREE_INIT', plugin_basename( __FILE__ ) );
|
49 |
! defined( 'YITH_WCAN_FILE' ) && define( 'YITH_WCAN_FILE', __FILE__ );
|
50 |
! defined( 'YITH_WCAN_SLUG' ) && define( 'YITH_WCAN_SLUG', 'yith-woocommerce-ajax-navigation' );
|
@@ -108,7 +108,7 @@ if ( ! function_exists( 'yith_wcan_initialize' ) ) {
|
|
108 |
*/
|
109 |
function yith_wcan_initialize() {
|
110 |
// Load required classes and functions.
|
111 |
-
require_once( YITH_WCAN_INC . 'class
|
112 |
|
113 |
return YITH_WCAN();
|
114 |
}
|
3 |
* Plugin Name: YITH WooCommerce Ajax Product Filter
|
4 |
* Plugin URI: https://wordpress.org/plugins/yith-woocommerce-ajax-navigation/
|
5 |
* Description: <code><strong>YITH WooCommerce AJAX Product Filter</strong></code> allows your users to find the product they are looking for as quickly as possible. Thanks to the plugin you will be able to set up one or more search filters for your WooCommerce products and improve the user experience of your shop. <a href="https://yithemes.com/" target="_blank">Get more plugins for your e-commerce shop on <strong>YITH</strong></a>
|
6 |
+
* Version: 4.2.0
|
7 |
* Author: YITH
|
8 |
* Author URI: https://yithemes.com/
|
9 |
* Text Domain: yith-woocommerce-ajax-navigation
|
10 |
* Domain Path: /languages/
|
11 |
*
|
12 |
+
* WC requires at least: 5.3
|
13 |
+
* WC tested up to: 5.7
|
14 |
*
|
15 |
* @author YITH
|
16 |
+
* @package YITH\AjaxProductFilter
|
17 |
* @version 1.3.2
|
18 |
*/
|
19 |
|
44 |
! defined( 'YITH_WCAN_URL' ) && define( 'YITH_WCAN_URL', plugin_dir_url( __FILE__ ) );
|
45 |
! defined( 'YITH_WCAN_DIR' ) && define( 'YITH_WCAN_DIR', plugin_dir_path( __FILE__ ) );
|
46 |
! defined( 'YITH_WCAN_INC' ) && define( 'YITH_WCAN_INC', YITH_WCAN_DIR . 'includes/' );
|
47 |
+
! defined( 'YITH_WCAN_VERSION' ) && define( 'YITH_WCAN_VERSION', '4.2.0' );
|
48 |
! defined( 'YITH_WCAN_FREE_INIT' ) && define( 'YITH_WCAN_FREE_INIT', plugin_basename( __FILE__ ) );
|
49 |
! defined( 'YITH_WCAN_FILE' ) && define( 'YITH_WCAN_FILE', __FILE__ );
|
50 |
! defined( 'YITH_WCAN_SLUG' ) && define( 'YITH_WCAN_SLUG', 'yith-woocommerce-ajax-navigation' );
|
108 |
*/
|
109 |
function yith_wcan_initialize() {
|
110 |
// Load required classes and functions.
|
111 |
+
require_once( YITH_WCAN_INC . 'class-yith-wcan.php' );
|
112 |
|
113 |
return YITH_WCAN();
|
114 |
}
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2021-03-02 11:03+0100\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
@@ -16,94 +16,94 @@ msgstr ""
|
|
16 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
"X-Generator: Poedit 2.4.2\n"
|
18 |
|
19 |
-
#: includes/data-stores/class
|
20 |
msgid "Draft Preset"
|
21 |
msgstr "Preset Entwurf"
|
22 |
|
23 |
-
#: includes/functions
|
24 |
-
#: includes/functions
|
25 |
msgid "Term"
|
26 |
msgstr "Begriff"
|
27 |
|
28 |
-
#: includes/functions
|
29 |
-
#: includes/widgets/class
|
30 |
msgid "Color"
|
31 |
msgstr "Farbe"
|
32 |
|
33 |
-
#: includes/functions
|
34 |
msgid "Labels"
|
35 |
msgstr "Label"
|
36 |
|
37 |
-
#: includes/widgets/class
|
38 |
msgid "Filter the list of products without reloading the page"
|
39 |
msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
|
40 |
|
41 |
-
#: includes/widgets/class
|
42 |
msgid "Filters:"
|
43 |
msgstr "Filter:"
|
44 |
|
45 |
-
#: includes/widgets/class
|
46 |
msgid "List"
|
47 |
msgstr "Liste"
|
48 |
|
49 |
-
#: includes/widgets/class
|
50 |
msgid "Label"
|
51 |
msgstr "Label"
|
52 |
|
53 |
-
#: includes/widgets/class
|
54 |
msgid "Dropdown"
|
55 |
msgstr "Dropdown"
|
56 |
|
57 |
-
#: includes/widgets/class
|
58 |
-
#: includes/widgets/class
|
59 |
msgid "Title"
|
60 |
msgstr "Titel"
|
61 |
|
62 |
-
#: includes/widgets/class
|
63 |
msgid "Type:"
|
64 |
msgstr "Typ:"
|
65 |
|
66 |
-
#: includes/widgets/class
|
67 |
msgid "Query Type:"
|
68 |
msgstr "Query-Typ"
|
69 |
|
70 |
-
#: includes/widgets/class
|
71 |
msgid "OR"
|
72 |
msgstr "ODER"
|
73 |
|
74 |
-
#: includes/widgets/class
|
75 |
msgid "Attribute:"
|
76 |
msgstr "Attribute:"
|
77 |
|
78 |
-
#: includes/widgets/class
|
79 |
msgid "Display (default All):"
|
80 |
msgstr "Anzeige (Standard Alles):"
|
81 |
|
82 |
-
#: includes/widgets/class
|
83 |
msgid "All (no hierarchical)"
|
84 |
msgstr "Alle (nicht hierarchisch)"
|
85 |
|
86 |
-
#: includes/widgets/class
|
87 |
msgid "All (hierarchical)"
|
88 |
msgstr "Alles (hierarchisch)"
|
89 |
|
90 |
-
#: includes/widgets/class
|
91 |
msgid "Only Parent"
|
92 |
msgstr "Nur Übergeordnete"
|
93 |
|
94 |
-
#: includes/widgets/class
|
95 |
msgid "CSS custom class"
|
96 |
msgstr "Individuelle CSS-Klasse"
|
97 |
|
98 |
-
#: includes/widgets/class
|
99 |
msgid "YITH AJAX Reset Filter"
|
100 |
msgstr "YITH AJAX-Filter zurücksetzen"
|
101 |
|
102 |
-
#: includes/widgets/class
|
103 |
msgid "Reset All Filters"
|
104 |
msgstr "Alle Filter zurücksetzen"
|
105 |
|
106 |
-
#: includes/widgets/class
|
107 |
msgid "Button Label"
|
108 |
msgstr "Button-Beschriftung"
|
109 |
|
@@ -139,76 +139,71 @@ msgstr ""
|
|
139 |
"\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für deinen E-"
|
140 |
"Commerce-Shop erhältst du bei <strong>YITH</strong></a>"
|
141 |
|
142 |
-
#: includes/class
|
143 |
msgctxt "[Admin] Copy confirmation message"
|
144 |
msgid "Content copied to your clipboard"
|
145 |
msgstr "Inhalt in die Zwischenablage kopiert"
|
146 |
|
147 |
-
#: includes/class
|
148 |
msgctxt "[Admin] Confirm filter delete message"
|
149 |
msgid "Are you sure you want to delete this item?"
|
150 |
msgstr "Bist du sicher, dass du dieses Element löschen möchtest?"
|
151 |
|
152 |
#. translators: 1. Number of items that will be added.
|
153 |
-
#: includes/class
|
154 |
msgctxt "[Admin] Confirm add all terms message"
|
155 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
156 |
msgstr ""
|
157 |
"Bist du sicher, dass du fortfahren möchtest? Dieser Vorgang wird %s Elemente "
|
158 |
"hinzufügen"
|
159 |
|
160 |
-
#: includes/class
|
161 |
msgctxt "[Admin] Error message"
|
162 |
msgid "\"Filter title\" is a required field"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class
|
166 |
msgctxt "[Admin] Message shown when filter has empty title"
|
167 |
msgid "< no title >"
|
168 |
msgstr "< Kein Titel >"
|
169 |
|
170 |
-
#: includes/class
|
171 |
msgctxt "[Admin] Media library title, when selecting images"
|
172 |
msgid "Select media you want to use"
|
173 |
msgstr "Die zu verwendenden Medien auswählen"
|
174 |
|
175 |
-
#: includes/class
|
176 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
177 |
msgid "Use this media"
|
178 |
msgstr "Dieses Medium verwenden"
|
179 |
|
180 |
-
#: includes/class
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "Filter presets"
|
183 |
msgstr "Filter-Presets"
|
184 |
|
185 |
-
#: includes/class
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "General settings"
|
188 |
msgstr "Allgemeine Einstellungen"
|
189 |
|
190 |
-
#: includes/class
|
191 |
#, fuzzy
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "SEO"
|
194 |
msgstr "SEO"
|
195 |
|
196 |
-
#: includes/class
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "Premium Version"
|
199 |
msgstr "Premium-Version"
|
200 |
|
201 |
-
#: includes/class
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Legacy"
|
204 |
msgstr "Legacy"
|
205 |
|
206 |
-
#: includes/class
|
207 |
-
msgctxt "[Admin] Menu title"
|
208 |
-
msgid "Ajax Product Filter"
|
209 |
-
msgstr "AJAX Produkt-Filter "
|
210 |
-
|
211 |
-
#: includes/class.yith-wcan-admin.php:199
|
212 |
msgctxt "[Admin] Plugin description"
|
213 |
msgid ""
|
214 |
"It allows your users to find the product they are looking for as quickly as "
|
@@ -217,44 +212,44 @@ msgstr ""
|
|
217 |
"Ermöglicht deinen Benutzern, das gesuchte Produkt so schnell wie möglich zu "
|
218 |
"finden."
|
219 |
|
220 |
-
#: includes/class
|
221 |
msgctxt "[HELP TAB] Video title"
|
222 |
msgid ""
|
223 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
224 |
"the shop page:</b>"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: includes/class
|
228 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
229 |
msgid "item"
|
230 |
msgstr "Artikel"
|
231 |
|
232 |
-
#: includes/class
|
233 |
msgctxt "[Admin] Preset table empty message second line"
|
234 |
msgid "But don't worry, here you can create your first one!"
|
235 |
msgstr "Aber keine Sorge, hier kannst du deine erste erstellen!"
|
236 |
|
237 |
-
#: includes/class
|
238 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
239 |
msgid "Clear Product Filter transients"
|
240 |
msgstr "Produktfilter-Tansients löschen"
|
241 |
|
242 |
-
#: includes/class
|
243 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
244 |
msgid "Run filter widgets upgrade"
|
245 |
msgstr "Upgrade der Filter-Widgets ausführen"
|
246 |
|
247 |
-
#: includes/class
|
248 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
249 |
msgid "Clear"
|
250 |
msgstr "Löschen"
|
251 |
|
252 |
-
#: includes/class
|
253 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
254 |
msgid "Run"
|
255 |
msgstr "Start"
|
256 |
|
257 |
-
#: includes/class
|
258 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
259 |
msgid ""
|
260 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -266,7 +261,7 @@ msgstr ""
|
|
266 |
"Konfiguration deines Produkts geändert hast und die Filter nicht die "
|
267 |
"erwarteten Ergebnisse anzeigen. "
|
268 |
|
269 |
-
#: includes/class
|
270 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
271 |
msgid ""
|
272 |
"This will create a preset for any sidebar of your shop containing filter "
|
@@ -276,32 +271,32 @@ msgstr ""
|
|
276 |
"Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
|
277 |
"Spezifikationen der Widgets entspricht"
|
278 |
|
279 |
-
#: includes/class
|
280 |
msgctxt "[Admin] Filter edit form"
|
281 |
msgid "Taxonomy"
|
282 |
msgstr "Taxonomie"
|
283 |
|
284 |
-
#: includes/class
|
285 |
msgctxt "[Admin] Filter edit form"
|
286 |
msgid "Checkbox"
|
287 |
msgstr "Checkbox"
|
288 |
|
289 |
-
#: includes/class
|
290 |
msgctxt "[Admin] Filter edit form"
|
291 |
msgid "Select"
|
292 |
msgstr "Auswahl"
|
293 |
|
294 |
-
#: includes/class
|
295 |
msgctxt "[Admin] Filter edit form"
|
296 |
msgid "Text"
|
297 |
msgstr "Text"
|
298 |
|
299 |
-
#: includes/class
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Color Swatches"
|
302 |
msgstr "Farbmuster"
|
303 |
|
304 |
-
#: includes/class
|
305 |
msgctxt "[Admin] Filter edit form"
|
306 |
msgid "Label"
|
307 |
msgstr "Label"
|
@@ -316,32 +311,32 @@ msgctxt "[Admin] Filter edit form"
|
|
316 |
msgid "Enter a name to identify this filter"
|
317 |
msgstr "Gib einen Namen ein, um diesen Filter zu identifizieren"
|
318 |
|
319 |
-
#: plugin-options/filter-options.php:
|
320 |
msgctxt "[Admin] Filter edit form"
|
321 |
msgid "Filter for"
|
322 |
msgstr "Filtern nach"
|
323 |
|
324 |
-
#: plugin-options/filter-options.php:
|
325 |
msgctxt "[Admin] Filter edit form"
|
326 |
msgid "Select the parameters you wish to filter for"
|
327 |
msgstr "Wähle die Parameter, nach denen du filtern möchtest"
|
328 |
|
329 |
-
#: plugin-options/filter-options.php:
|
330 |
msgctxt "[Admin] Filter edit form"
|
331 |
msgid "Choose taxonomy"
|
332 |
msgstr "Taxonomie wählen"
|
333 |
|
334 |
-
#: plugin-options/filter-options.php:
|
335 |
msgctxt "[Admin] Filter edit form"
|
336 |
msgid "Select which taxonomy to use for this filter"
|
337 |
msgstr "Wähle, welche Taxonomie für diesen Filter verwendet werden soll"
|
338 |
|
339 |
-
#: plugin-options/filter-options.php:
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid "Auto-populate with all terms"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: plugin-options/filter-options.php:
|
345 |
msgctxt "[Admin] Filter edit form"
|
346 |
msgid ""
|
347 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -350,73 +345,73 @@ msgid ""
|
|
350 |
"well.</span>"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: plugin-options/filter-options.php:
|
354 |
msgctxt "[Admin] Filter edit form"
|
355 |
msgid "Choose terms"
|
356 |
msgstr "Begriffe wählen"
|
357 |
|
358 |
-
#: plugin-options/filter-options.php:
|
359 |
msgctxt "[Admin] Filter edit form"
|
360 |
msgid "Select which terms to use for filtering"
|
361 |
msgstr "Wähle aus, welche Begriffe für die Filterung verwendet werden sollen"
|
362 |
|
363 |
-
#: plugin-options/filter-options.php:
|
364 |
msgctxt "[Admin] Filter edit form"
|
365 |
msgid "Filter type"
|
366 |
msgstr "Filter-Typ"
|
367 |
|
368 |
-
#: plugin-options/filter-options.php:
|
369 |
msgctxt "[Admin] Filter edit form"
|
370 |
msgid "Select the filter type for this filter"
|
371 |
msgstr "Wähle den Filtertyp für diesen Filter"
|
372 |
|
373 |
-
#: plugin-options/filter-options.php:
|
374 |
#, fuzzy
|
375 |
msgctxt "[Admin] Filter edit form"
|
376 |
msgid "Labels"
|
377 |
msgstr "Label"
|
378 |
|
379 |
-
#: plugin-options/filter-options.php:
|
380 |
#, fuzzy
|
381 |
msgctxt "[Admin] Filter edit form"
|
382 |
msgid "Show below"
|
383 |
msgstr "Ergebnisse anzeigen"
|
384 |
|
385 |
-
#: plugin-options/filter-options.php:
|
386 |
#, fuzzy
|
387 |
msgctxt "[Admin] Filter edit form"
|
388 |
msgid "Show on the right"
|
389 |
msgstr "Anzahl der Elemente anzeigen"
|
390 |
|
391 |
-
#: plugin-options/filter-options.php:
|
392 |
msgctxt "[Admin] Filter edit form"
|
393 |
msgid "Hide"
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: plugin-options/filter-options.php:
|
397 |
#, fuzzy
|
398 |
msgctxt "[Admin] Filter edit form"
|
399 |
msgid "Choose if and where to show the label inside your filter"
|
400 |
msgstr "Wähle den Stil des Filters innerhalb von Widgets "
|
401 |
|
402 |
-
#: plugin-options/filter-options.php:
|
403 |
msgctxt "[Admin] Filter edit form"
|
404 |
msgid "Columns number"
|
405 |
msgstr "Anzahl der Spalten"
|
406 |
|
407 |
-
#: plugin-options/filter-options.php:
|
408 |
msgctxt "[Admin] Filter edit form"
|
409 |
msgid "Set the number of items per row you want to show for this design"
|
410 |
msgstr ""
|
411 |
"Stelle die Anzahl der Elemente pro Zeile ein, die du für dieses Design "
|
412 |
"anzeigen möchtest"
|
413 |
|
414 |
-
#: plugin-options/filter-options.php:
|
415 |
msgctxt "[Admin] Filter edit form"
|
416 |
msgid "Customize terms"
|
417 |
msgstr "Begriffe anpassen"
|
418 |
|
419 |
-
#: plugin-options/filter-options.php:
|
420 |
msgctxt "[Admin] Filter edit form"
|
421 |
msgid ""
|
422 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -430,157 +425,157 @@ msgid ""
|
|
430 |
"this option and use the boxes below</span>"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: plugin-options/filter-options.php:
|
434 |
#, fuzzy
|
435 |
msgctxt "[Admin] Filter edit form"
|
436 |
msgid "Terms options"
|
437 |
msgstr "Sortierungsoptionen"
|
438 |
|
439 |
-
#: plugin-options/filter-options.php:
|
440 |
msgctxt "[Admin] Filter edit form"
|
441 |
msgid "Show hierarchy"
|
442 |
msgstr "Hierarchie anzeigen"
|
443 |
|
444 |
-
#: plugin-options/filter-options.php:
|
445 |
msgctxt "[Admin] Filter edit form"
|
446 |
msgid "No, show all terms in same level"
|
447 |
msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
|
448 |
|
449 |
-
#: plugin-options/filter-options.php:
|
450 |
msgctxt "[Admin] Filter edit form"
|
451 |
msgid "No, show only parent terms"
|
452 |
msgstr "Nein, nur übergeordnete Begriffe anzeigen"
|
453 |
|
454 |
-
#: plugin-options/filter-options.php:
|
455 |
msgctxt "[Admin] Filter edit form"
|
456 |
msgid "Yes"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: plugin-options/filter-options.php:
|
460 |
msgctxt "[Admin] Filter edit form"
|
461 |
msgid "Choose how to show terms hierarchy"
|
462 |
msgstr "Wähle, wie die Begriffshierarchie angezeigt werden soll"
|
463 |
|
464 |
-
#: plugin-options/filter-options.php:
|
465 |
msgctxt "[Admin] Filter edit form"
|
466 |
msgid "Allow multiple selection"
|
467 |
msgstr "Mehrfachauswahl zulassen"
|
468 |
|
469 |
-
#: plugin-options/filter-options.php:
|
470 |
msgctxt "[Admin] Filter edit form"
|
471 |
msgid "Enable if the user can select multiple terms when filtering products"
|
472 |
msgstr ""
|
473 |
"Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
|
474 |
"auswählen kann"
|
475 |
|
476 |
-
#: plugin-options/filter-options.php:
|
477 |
msgctxt "[Admin] Filter edit form"
|
478 |
msgid "Multiselect relation"
|
479 |
msgstr "Multiselect-Beziehung"
|
480 |
|
481 |
-
#: plugin-options/filter-options.php:
|
482 |
msgctxt "[Admin] Filter edit form"
|
483 |
msgid "Choose how multiple terms selection should behave"
|
484 |
msgstr "Wähle, wie sich die Auswahl mehrerer Begriffe verhalten soll"
|
485 |
|
486 |
-
#: includes/class
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Default sorting"
|
489 |
msgstr "Standard-Sortierung"
|
490 |
|
491 |
-
#: includes/class
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by popularity"
|
494 |
msgstr "Nach Beliebtheit sortieren"
|
495 |
|
496 |
-
#: includes/class
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by average rating"
|
499 |
msgstr "Best bewertete zuerst"
|
500 |
|
501 |
-
#: includes/class
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by latest"
|
504 |
msgstr "Neueste zuerst"
|
505 |
|
506 |
-
#: includes/class
|
507 |
msgctxt "[Admin] Filter edit form, sorting options"
|
508 |
msgid "Sort by price: low to high"
|
509 |
msgstr "Sortieren nach Preis: Preis aufsteigend"
|
510 |
|
511 |
-
#: includes/class
|
512 |
msgctxt "[Admin] Filter edit form, sorting options"
|
513 |
msgid "Sort by price: high to low"
|
514 |
msgstr "Sortieren nach Preis: Preis absteigend"
|
515 |
|
516 |
-
#: includes/class
|
517 |
msgctxt "[Admin] Default filter title"
|
518 |
msgid "New filter"
|
519 |
msgstr "Neuer Filter"
|
520 |
|
521 |
-
#: includes/class
|
522 |
-
#: includes/filters/class
|
523 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
524 |
msgid "All"
|
525 |
msgstr "Alle"
|
526 |
|
527 |
-
#: includes/class
|
528 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
529 |
msgid "Search..."
|
530 |
msgstr "Suchen..."
|
531 |
|
532 |
-
#: includes/class
|
533 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
534 |
msgid "No item found"
|
535 |
msgstr "Kein Artikel gefunden"
|
536 |
|
537 |
#. translators: 1. Number of items to show.
|
538 |
-
#: includes/class
|
539 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
540 |
msgid "Show %d more"
|
541 |
msgstr "%d mehr anzeigen"
|
542 |
|
543 |
-
#: includes/class
|
544 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
545 |
msgid "Close"
|
546 |
msgstr "Schließen"
|
547 |
|
548 |
-
#: includes/class
|
549 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
550 |
msgid "Save"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: includes/class
|
554 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
555 |
msgid "Show results"
|
556 |
msgstr "Ergebnisse anzeigen"
|
557 |
|
558 |
-
#: includes/class
|
559 |
msgctxt ""
|
560 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
561 |
"selection"
|
562 |
msgid "Clear"
|
563 |
msgstr "Löschen"
|
564 |
|
565 |
-
#: includes/class
|
566 |
msgctxt ""
|
567 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
568 |
"selection"
|
569 |
msgid "Clear All"
|
570 |
msgstr "Alle löschen"
|
571 |
|
572 |
-
#: includes/class
|
573 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
574 |
msgid "Default preset"
|
575 |
msgstr "Standard-Preset"
|
576 |
|
577 |
#. translators: 1. Taxonomy name.
|
578 |
-
#: includes/class
|
579 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
580 |
msgid "Filter by %s"
|
581 |
msgstr "Nach %s filtern"
|
582 |
|
583 |
-
#: includes/class
|
584 |
#, fuzzy
|
585 |
msgctxt "[Admin] Label in new preset page"
|
586 |
msgid "Default"
|
@@ -596,33 +591,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
596 |
msgid "Enter a name to identify this filter preset"
|
597 |
msgstr "Gib einen Namen ein, um dieses Filter-Preset zu identifizieren"
|
598 |
|
599 |
-
#: templates/admin/preset-filters.php:
|
600 |
msgctxt "[Admin] Label in new preset page"
|
601 |
msgid "Filters of this preset"
|
602 |
msgstr "Filter in diesem Preset"
|
603 |
|
604 |
-
#: includes/class
|
605 |
-
#: includes/class
|
606 |
msgctxt "[Admin] name of presets custom post type"
|
607 |
msgid "Filter presets"
|
608 |
msgstr "Filter-Presets"
|
609 |
|
610 |
-
#: includes/class
|
611 |
msgctxt "[Admin] singular name of presets custom post type"
|
612 |
msgid "Filter preset"
|
613 |
msgstr "Filter-Preset"
|
614 |
|
615 |
-
#: includes/class
|
616 |
msgctxt "[Admin] add new filter preset label"
|
617 |
msgid "Add new preset"
|
618 |
msgstr "Neues Preset hinzufügen"
|
619 |
|
620 |
-
#: includes/class
|
621 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
622 |
msgid "Convert widgets in a preset"
|
623 |
msgstr "Widgets in eine Preset konvertieren"
|
624 |
|
625 |
-
#: includes/data-stores/class
|
626 |
msgctxt ""
|
627 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
628 |
"not exist"
|
@@ -630,43 +625,43 @@ msgid "Invalid preset."
|
|
630 |
msgstr "Ungültige Voreinstellung."
|
631 |
|
632 |
#. translators: 1. Title of original preset.
|
633 |
-
#: includes/data-stores/class
|
634 |
msgctxt "[ADMIN] Title of the cloned preset"
|
635 |
msgid "%s - Copy"
|
636 |
msgstr "%s - Kopieren"
|
637 |
|
638 |
-
#: includes/elementor/class
|
639 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
640 |
msgid "YITH AJAX Filters Preset"
|
641 |
msgstr "YITH AJAX-Filter Presets"
|
642 |
|
643 |
-
#: includes/elementor/class
|
644 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
645 |
msgid "YITH AJAX Filters Reset Button"
|
646 |
msgstr "YITH AJAX-Filter Reset-Button"
|
647 |
|
648 |
-
#: includes/elementor/class
|
649 |
-
#: includes/shortcodes/class
|
650 |
msgctxt "[ELEMENTOR] Default preset option"
|
651 |
msgid "Choose an option"
|
652 |
msgstr "Wähle eine Option"
|
653 |
|
654 |
-
#: includes/elementor/class
|
655 |
msgctxt "[ELEMENTOR] Section title"
|
656 |
msgid "Filters"
|
657 |
msgstr "Filter"
|
658 |
|
659 |
-
#: includes/elementor/class
|
660 |
msgctxt "[ELEMENTOR] Section title"
|
661 |
msgid "General"
|
662 |
msgstr "Allgemein"
|
663 |
|
664 |
-
#: includes/elementor/class
|
665 |
msgctxt "[ELEMENTOR] Control label"
|
666 |
msgid "Preset"
|
667 |
msgstr "Preset"
|
668 |
|
669 |
-
#: includes/elementor/class
|
670 |
msgctxt "[ELEMENTOR] Widget description"
|
671 |
msgid ""
|
672 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
@@ -674,7 +669,7 @@ msgstr ""
|
|
674 |
"Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
|
675 |
"platziert wird"
|
676 |
|
677 |
-
#: includes/elementor/class
|
678 |
msgctxt "[ELEMENTOR] Widget description"
|
679 |
msgid ""
|
680 |
"It will allow users to reset the filer selection; it will only appear when "
|
@@ -683,7 +678,7 @@ msgstr ""
|
|
683 |
"Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
|
684 |
"erscheint nur, wenn ein Filter aktiv ist. "
|
685 |
|
686 |
-
#: includes/elementor/class
|
687 |
msgctxt "[ELEMENTOR] Widget description"
|
688 |
msgid ""
|
689 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
@@ -693,17 +688,17 @@ msgstr ""
|
|
693 |
"innerhalb deiner Seite zu platzieren, wenn die Option \"Position des Buttons "
|
694 |
"zurücksetzen\" für den Loop deines Produkts nicht funktioniert "
|
695 |
|
696 |
-
#: includes/functions
|
697 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
698 |
msgid "Color 1"
|
699 |
msgstr "Farbe 2"
|
700 |
|
701 |
-
#: includes/functions
|
702 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
703 |
msgid "Color 2"
|
704 |
msgstr "Farbe 2"
|
705 |
|
706 |
-
#: includes/functions
|
707 |
msgctxt "[FRONTEND] Star rating template"
|
708 |
msgid "star"
|
709 |
msgid_plural "stars"
|
@@ -711,27 +706,27 @@ msgstr[0] "Stern"
|
|
711 |
msgstr[1] "Sternen"
|
712 |
|
713 |
#. translators: 1. Rating.
|
714 |
-
#: includes/functions
|
715 |
msgctxt "[FRONTEND] Star rating label"
|
716 |
msgid "Rated %s out of 5"
|
717 |
msgstr "Bewertet mit %s von 5"
|
718 |
|
719 |
-
#: includes/shortcodes/class
|
720 |
msgctxt "[GUTENBERG]: block name"
|
721 |
msgid "YITH AJAX Filters Preset"
|
722 |
msgstr "YITH AJAX Filters Preset"
|
723 |
|
724 |
-
#: includes/shortcodes/class
|
725 |
msgctxt "[GUTENBERG]: block name"
|
726 |
msgid "YITH Reset Filters Button"
|
727 |
msgstr "YITH \"Filter zurücksetzen\"-Button"
|
728 |
|
729 |
-
#: includes/shortcodes/class
|
730 |
msgctxt "[GUTENBERG]: block description"
|
731 |
msgid "Show filters from a preset"
|
732 |
msgstr "Filter aus einem Preset anzeigen"
|
733 |
|
734 |
-
#: includes/shortcodes/class
|
735 |
msgctxt "[GUTENBERG]: block description"
|
736 |
msgid ""
|
737 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -745,80 +740,80 @@ msgstr ""
|
|
745 |
"Seite zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" "
|
746 |
"für den Loop deines Produkts nicht funktioniert"
|
747 |
|
748 |
-
#: includes/shortcodes/class
|
749 |
msgctxt "[GUTENBERG]: attribute description"
|
750 |
msgid "Preset"
|
751 |
msgstr "Preset"
|
752 |
|
753 |
-
#: includes/tables/class
|
754 |
msgctxt "[Admin] Preset table column header"
|
755 |
msgid "Preset name"
|
756 |
msgstr "Preset-Name"
|
757 |
|
758 |
-
#: includes/tables/class
|
759 |
msgctxt "[Admin] Preset table column header"
|
760 |
msgid "Shortcode"
|
761 |
msgstr "Shortcode"
|
762 |
|
763 |
-
#: includes/tables/class
|
764 |
msgctxt "[Admin] Preset edit action label"
|
765 |
msgid "Edit this preset"
|
766 |
msgstr "Dieses Preset bearbeiten"
|
767 |
|
768 |
-
#: includes/tables/class
|
769 |
msgctxt "[Admin] Preset clone action label"
|
770 |
msgid "Clone this preset"
|
771 |
msgstr "Dieses Preset kopieren"
|
772 |
|
773 |
-
#: includes/tables/class
|
774 |
msgctxt "[Admin] Preset delete action label"
|
775 |
msgid "Delete this preset"
|
776 |
msgstr "Dieses Preset löschen"
|
777 |
|
778 |
-
#: includes/tables/class
|
779 |
msgctxt "[Admin] Preset delete confirm label"
|
780 |
msgid "Are you sure you want to delete this preset?"
|
781 |
msgstr "Bist du sicher, dass du dieses Preset löschen möchtest?"
|
782 |
|
783 |
-
#: includes/tables/class
|
784 |
msgctxt "[Admin] on-off yes"
|
785 |
msgid "YES"
|
786 |
msgstr "JA"
|
787 |
|
788 |
-
#: includes/tables/class
|
789 |
msgctxt "[Admin] on-off no"
|
790 |
msgid "NO"
|
791 |
msgstr "NEIN"
|
792 |
|
793 |
-
#: includes/tables/class
|
794 |
msgctxt ""
|
795 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
796 |
msgid "filter preset"
|
797 |
msgstr "Filter-Preset"
|
798 |
|
799 |
-
#: templates/admin/preset-filters.php:
|
800 |
msgctxt ""
|
801 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
802 |
msgid "filter"
|
803 |
msgstr "Filter"
|
804 |
|
805 |
-
#: includes/tables/class
|
806 |
msgctxt "[Admin] New preset button label"
|
807 |
msgid "Create a new preset"
|
808 |
msgstr "Neues Preset erstellen"
|
809 |
|
810 |
-
#: includes/widgets/class
|
811 |
msgctxt "[ADMIN] Name of the preset widget"
|
812 |
msgid "YITH AJAX Filters Preset"
|
813 |
msgstr "YITH AJAX Filters Preset"
|
814 |
|
815 |
-
#: includes/widgets/class
|
816 |
msgctxt "[ADMIN] Preset widget options"
|
817 |
msgid "Preset"
|
818 |
msgstr "Preset"
|
819 |
|
820 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
821 |
-
#: includes/widgets/class
|
822 |
msgctxt "[ADMIN] Preset widget options"
|
823 |
msgid ""
|
824 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -827,25 +822,25 @@ msgstr ""
|
|
827 |
"Bitte gehe auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product Filter -> "
|
828 |
"Presets</a> und erstelle dein erstes Preset"
|
829 |
|
830 |
-
#: includes/widgets/class
|
831 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
832 |
msgid "YITH AJAX Product Filter"
|
833 |
msgstr "YITH AJAX Product Filter"
|
834 |
|
835 |
-
#: includes/widgets/class
|
836 |
#, fuzzy
|
837 |
msgctxt ""
|
838 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
839 |
msgid "AND"
|
840 |
msgstr "UND"
|
841 |
|
842 |
-
#: includes/widgets/class
|
843 |
msgctxt "[Plugin Name]"
|
844 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
845 |
msgstr ""
|
846 |
"Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
|
847 |
|
848 |
-
#: plugin-options/filter-options.php:
|
849 |
#, fuzzy
|
850 |
msgctxt ""
|
851 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -854,7 +849,7 @@ msgstr ""
|
|
854 |
"UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
|
855 |
"übereinstimmen"
|
856 |
|
857 |
-
#: plugin-options/filter-options.php:
|
858 |
#, fuzzy
|
859 |
msgctxt ""
|
860 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -1142,21 +1137,21 @@ msgstr ""
|
|
1142 |
msgctxt "[ADMIN] Premium tab"
|
1143 |
msgid ""
|
1144 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1145 |
-
"view<br/>\
|
1146 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1147 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1148 |
-
"range (based on their budget availability)<br/>\
|
1149 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1150 |
"attributes available in your store, like color and size. For the color "
|
1151 |
"filter, you can either choose square or circular color swatches or use "
|
1152 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1153 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1154 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1155 |
-
"concentrate only on high-rated ones)<br/>\
|
1156 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1157 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1158 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1159 |
-
"filter products and view only those with a discount<br/>\
|
1160 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1161 |
"filter products based on their needs and exclude out-of-stock products from "
|
1162 |
"the list"
|
@@ -1282,73 +1277,73 @@ msgid ""
|
|
1282 |
"easier to share)"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: templates/admin/preset-edit.php:
|
1286 |
msgctxt "[Admin] Back link in new preset page"
|
1287 |
msgid "< back to preset list"
|
1288 |
msgstr "< zurück zur Preset-Liste"
|
1289 |
|
1290 |
-
#: templates/admin/preset-edit.php:
|
1291 |
msgctxt "[ADMIN] Title for new preset page"
|
1292 |
msgid "Edit filter preset"
|
1293 |
msgstr "Filter-Preset bearbeiten"
|
1294 |
|
1295 |
-
#: templates/admin/preset-edit.php:
|
1296 |
msgctxt "[ADMIN] Title for new preset page"
|
1297 |
msgid "Add new filter preset"
|
1298 |
msgstr "Neues Filter-Preset hinzufügen"
|
1299 |
|
1300 |
-
#: templates/admin/preset-edit.php:
|
1301 |
msgctxt "[ADMIN] Preset save message"
|
1302 |
msgid "Preset saved correctly"
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: templates/admin/preset-edit.php:
|
1306 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1307 |
msgid "Save preset"
|
1308 |
msgstr "Preset speichern"
|
1309 |
|
1310 |
-
#: templates/admin/preset-empty-content.php:
|
1311 |
msgctxt "Alt text for empty preset image"
|
1312 |
msgid "Empty preset"
|
1313 |
msgstr "Leeres Preset"
|
1314 |
|
1315 |
#. translators: 1. Missing item name.
|
1316 |
-
#: templates/admin/preset-empty-content.php:
|
1317 |
msgctxt "[Admin] Preset table empty message"
|
1318 |
msgid "You don't have any %s yet."
|
1319 |
msgstr "Du hast bis jetzt keine %s."
|
1320 |
|
1321 |
-
#: templates/admin/preset-filter-term.php:
|
1322 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1323 |
msgid "Label"
|
1324 |
msgstr "Label"
|
1325 |
|
1326 |
-
#: templates/admin/preset-filter-term.php:
|
1327 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1328 |
msgid "Tooltip"
|
1329 |
msgstr "Tooltip"
|
1330 |
|
1331 |
-
#: templates/admin/preset-filter-term.php:
|
1332 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1333 |
msgid "Color"
|
1334 |
msgstr "Farbe"
|
1335 |
|
1336 |
-
#: templates/admin/preset-filter.php:
|
1337 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1338 |
msgid "Save Filter"
|
1339 |
msgstr "Filter speichern"
|
1340 |
|
1341 |
-
#: templates/admin/preset-filter.php:
|
1342 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1343 |
msgid "Delete Filter"
|
1344 |
msgstr "Filter löschen"
|
1345 |
|
1346 |
-
#: templates/admin/preset-filters.php:
|
1347 |
msgctxt "[Admin] New filter button label"
|
1348 |
msgid "Add a new filter"
|
1349 |
msgstr "Einen neuen Filter hinzufügen"
|
1350 |
|
1351 |
-
#: templates/admin/preset-filters.php:
|
1352 |
msgctxt "[Admin] Add new filter in new preset page"
|
1353 |
msgid "+ Add filter"
|
1354 |
msgstr "+ Filter hinzufügen "
|
@@ -1360,12 +1355,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1360 |
msgid "See %d more filters"
|
1361 |
msgstr "Vor Filtern"
|
1362 |
|
1363 |
-
#: templates/admin/upgrade-note-modal.php:
|
1364 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1365 |
msgid "Use the new filter preset feature for your filters"
|
1366 |
msgstr "Nutze das neuen Filter-Preset-Feature für deine Filter "
|
1367 |
|
1368 |
-
#: templates/admin/upgrade-note-modal.php:
|
1369 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1370 |
msgid ""
|
1371 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1380,7 +1375,7 @@ msgstr ""
|
|
1380 |
"Widget verwendest. "
|
1381 |
|
1382 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1383 |
-
#: templates/admin/upgrade-note-modal.php:
|
1384 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1385 |
msgid ""
|
1386 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1391,7 +1386,7 @@ msgstr ""
|
|
1391 |
"Feature genutzt werden kann."
|
1392 |
|
1393 |
#. translators: 1. Url to docs.
|
1394 |
-
#: templates/admin/upgrade-note-modal.php:
|
1395 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1396 |
msgid ""
|
1397 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
@@ -1400,7 +1395,7 @@ msgstr ""
|
|
1400 |
"Wir empfehlen dir, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> "
|
1401 |
"um zu lernen, wie dieses neue Feature genutzt werden kann."
|
1402 |
|
1403 |
-
#: templates/admin/upgrade-note-modal.php:
|
1404 |
#, fuzzy
|
1405 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1406 |
msgid ""
|
@@ -1415,7 +1410,7 @@ msgstr ""
|
|
1415 |
"übertragen.<br/>\n"
|
1416 |
"<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
|
1417 |
|
1418 |
-
#: templates/admin/upgrade-note-modal.php:
|
1419 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1420 |
msgid ""
|
1421 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1423,21 +1418,25 @@ msgid ""
|
|
1423 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: templates/admin/upgrade-note-modal.php:
|
1427 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1428 |
msgid "Convert your widgets in a preset now"
|
1429 |
msgstr "Wandle deine Widgets jetzt ins Presets um"
|
1430 |
|
1431 |
-
#: templates/admin/upgrade-note-modal.php:
|
1432 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1433 |
msgid "No thanks"
|
1434 |
msgstr "Nein Danke"
|
1435 |
|
1436 |
-
#: templates/filters/global/reset-filters.php:
|
1437 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1438 |
msgid "Reset filters"
|
1439 |
msgstr "Filter zurücksetzen"
|
1440 |
|
|
|
|
|
|
|
|
|
1441 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1442 |
#~ msgid "All"
|
1443 |
#~ msgstr "Alle"
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2021-03-02 11:03+0100\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
16 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
"X-Generator: Poedit 2.4.2\n"
|
18 |
|
19 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
20 |
msgid "Draft Preset"
|
21 |
msgstr "Preset Entwurf"
|
22 |
|
23 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
24 |
+
#: includes/functions-yith-wcan.php:132
|
25 |
msgid "Term"
|
26 |
msgstr "Begriff"
|
27 |
|
28 |
+
#: includes/functions-yith-wcan.php:98
|
29 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
30 |
msgid "Color"
|
31 |
msgstr "Farbe"
|
32 |
|
33 |
+
#: includes/functions-yith-wcan.php:132
|
34 |
msgid "Labels"
|
35 |
msgstr "Label"
|
36 |
|
37 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
38 |
msgid "Filter the list of products without reloading the page"
|
39 |
msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
|
40 |
|
41 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
42 |
msgid "Filters:"
|
43 |
msgstr "Filter:"
|
44 |
|
45 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
46 |
msgid "List"
|
47 |
msgstr "Liste"
|
48 |
|
49 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
50 |
msgid "Label"
|
51 |
msgstr "Label"
|
52 |
|
53 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
54 |
msgid "Dropdown"
|
55 |
msgstr "Dropdown"
|
56 |
|
57 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
58 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
59 |
msgid "Title"
|
60 |
msgstr "Titel"
|
61 |
|
62 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
63 |
msgid "Type:"
|
64 |
msgstr "Typ:"
|
65 |
|
66 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
67 |
msgid "Query Type:"
|
68 |
msgstr "Query-Typ"
|
69 |
|
70 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
71 |
msgid "OR"
|
72 |
msgstr "ODER"
|
73 |
|
74 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
75 |
msgid "Attribute:"
|
76 |
msgstr "Attribute:"
|
77 |
|
78 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
79 |
msgid "Display (default All):"
|
80 |
msgstr "Anzeige (Standard Alles):"
|
81 |
|
82 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
83 |
msgid "All (no hierarchical)"
|
84 |
msgstr "Alle (nicht hierarchisch)"
|
85 |
|
86 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
87 |
msgid "All (hierarchical)"
|
88 |
msgstr "Alles (hierarchisch)"
|
89 |
|
90 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
91 |
msgid "Only Parent"
|
92 |
msgstr "Nur Übergeordnete"
|
93 |
|
94 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
95 |
msgid "CSS custom class"
|
96 |
msgstr "Individuelle CSS-Klasse"
|
97 |
|
98 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
99 |
msgid "YITH AJAX Reset Filter"
|
100 |
msgstr "YITH AJAX-Filter zurücksetzen"
|
101 |
|
102 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
103 |
msgid "Reset All Filters"
|
104 |
msgstr "Alle Filter zurücksetzen"
|
105 |
|
106 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
107 |
msgid "Button Label"
|
108 |
msgstr "Button-Beschriftung"
|
109 |
|
139 |
"\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für deinen E-"
|
140 |
"Commerce-Shop erhältst du bei <strong>YITH</strong></a>"
|
141 |
|
142 |
+
#: includes/class-yith-wcan-admin.php:107
|
143 |
msgctxt "[Admin] Copy confirmation message"
|
144 |
msgid "Content copied to your clipboard"
|
145 |
msgstr "Inhalt in die Zwischenablage kopiert"
|
146 |
|
147 |
+
#: includes/class-yith-wcan-admin.php:108
|
148 |
msgctxt "[Admin] Confirm filter delete message"
|
149 |
msgid "Are you sure you want to delete this item?"
|
150 |
msgstr "Bist du sicher, dass du dieses Element löschen möchtest?"
|
151 |
|
152 |
#. translators: 1. Number of items that will be added.
|
153 |
+
#: includes/class-yith-wcan-admin.php:110
|
154 |
msgctxt "[Admin] Confirm add all terms message"
|
155 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
156 |
msgstr ""
|
157 |
"Bist du sicher, dass du fortfahren möchtest? Dieser Vorgang wird %s Elemente "
|
158 |
"hinzufügen"
|
159 |
|
160 |
+
#: includes/class-yith-wcan-admin.php:111
|
161 |
msgctxt "[Admin] Error message"
|
162 |
msgid "\"Filter title\" is a required field"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
166 |
msgctxt "[Admin] Message shown when filter has empty title"
|
167 |
msgid "< no title >"
|
168 |
msgstr "< Kein Titel >"
|
169 |
|
170 |
+
#: includes/class-yith-wcan-admin.php:115
|
171 |
msgctxt "[Admin] Media library title, when selecting images"
|
172 |
msgid "Select media you want to use"
|
173 |
msgstr "Die zu verwendenden Medien auswählen"
|
174 |
|
175 |
+
#: includes/class-yith-wcan-admin.php:116
|
176 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
177 |
msgid "Use this media"
|
178 |
msgstr "Dieses Medium verwenden"
|
179 |
|
180 |
+
#: includes/class-yith-wcan-admin.php:184
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "Filter presets"
|
183 |
msgstr "Filter-Presets"
|
184 |
|
185 |
+
#: includes/class-yith-wcan-admin.php:185
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "General settings"
|
188 |
msgstr "Allgemeine Einstellungen"
|
189 |
|
190 |
+
#: includes/class-yith-wcan-admin.php:186
|
191 |
#, fuzzy
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "SEO"
|
194 |
msgstr "SEO"
|
195 |
|
196 |
+
#: includes/class-yith-wcan-admin.php:187
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "Premium Version"
|
199 |
msgstr "Premium-Version"
|
200 |
|
201 |
+
#: includes/class-yith-wcan-admin.php:191
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Legacy"
|
204 |
msgstr "Legacy"
|
205 |
|
206 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
207 |
msgctxt "[Admin] Plugin description"
|
208 |
msgid ""
|
209 |
"It allows your users to find the product they are looking for as quickly as "
|
212 |
"Ermöglicht deinen Benutzern, das gesuchte Produkt so schnell wie möglich zu "
|
213 |
"finden."
|
214 |
|
215 |
+
#: includes/class-yith-wcan-admin.php:211
|
216 |
msgctxt "[HELP TAB] Video title"
|
217 |
msgid ""
|
218 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
219 |
"the shop page:</b>"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: includes/class-yith-wcan-admin.php:329
|
223 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
224 |
msgid "item"
|
225 |
msgstr "Artikel"
|
226 |
|
227 |
+
#: includes/class-yith-wcan-admin.php:330
|
228 |
msgctxt "[Admin] Preset table empty message second line"
|
229 |
msgid "But don't worry, here you can create your first one!"
|
230 |
msgstr "Aber keine Sorge, hier kannst du deine erste erstellen!"
|
231 |
|
232 |
+
#: includes/class-yith-wcan-admin.php:480
|
233 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
234 |
msgid "Clear Product Filter transients"
|
235 |
msgstr "Produktfilter-Tansients löschen"
|
236 |
|
237 |
+
#: includes/class-yith-wcan-admin.php:486
|
238 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
239 |
msgid "Run filter widgets upgrade"
|
240 |
msgstr "Upgrade der Filter-Widgets ausführen"
|
241 |
|
242 |
+
#: includes/class-yith-wcan-admin.php:481
|
243 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
244 |
msgid "Clear"
|
245 |
msgstr "Löschen"
|
246 |
|
247 |
+
#: includes/class-yith-wcan-admin.php:487
|
248 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
249 |
msgid "Run"
|
250 |
msgstr "Start"
|
251 |
|
252 |
+
#: includes/class-yith-wcan-admin.php:482
|
253 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
254 |
msgid ""
|
255 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
261 |
"Konfiguration deines Produkts geändert hast und die Filter nicht die "
|
262 |
"erwarteten Ergebnisse anzeigen. "
|
263 |
|
264 |
+
#: includes/class-yith-wcan-admin.php:488
|
265 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
266 |
msgid ""
|
267 |
"This will create a preset for any sidebar of your shop containing filter "
|
271 |
"Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
|
272 |
"Spezifikationen der Widgets entspricht"
|
273 |
|
274 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
275 |
msgctxt "[Admin] Filter edit form"
|
276 |
msgid "Taxonomy"
|
277 |
msgstr "Taxonomie"
|
278 |
|
279 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
280 |
msgctxt "[Admin] Filter edit form"
|
281 |
msgid "Checkbox"
|
282 |
msgstr "Checkbox"
|
283 |
|
284 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
285 |
msgctxt "[Admin] Filter edit form"
|
286 |
msgid "Select"
|
287 |
msgstr "Auswahl"
|
288 |
|
289 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
290 |
msgctxt "[Admin] Filter edit form"
|
291 |
msgid "Text"
|
292 |
msgstr "Text"
|
293 |
|
294 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
295 |
msgctxt "[Admin] Filter edit form"
|
296 |
msgid "Color Swatches"
|
297 |
msgstr "Farbmuster"
|
298 |
|
299 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Label"
|
302 |
msgstr "Label"
|
311 |
msgid "Enter a name to identify this filter"
|
312 |
msgstr "Gib einen Namen ein, um diesen Filter zu identifizieren"
|
313 |
|
314 |
+
#: plugin-options/filter-options.php:40
|
315 |
msgctxt "[Admin] Filter edit form"
|
316 |
msgid "Filter for"
|
317 |
msgstr "Filtern nach"
|
318 |
|
319 |
+
#: plugin-options/filter-options.php:44
|
320 |
msgctxt "[Admin] Filter edit form"
|
321 |
msgid "Select the parameters you wish to filter for"
|
322 |
msgstr "Wähle die Parameter, nach denen du filtern möchtest"
|
323 |
|
324 |
+
#: plugin-options/filter-options.php:49
|
325 |
msgctxt "[Admin] Filter edit form"
|
326 |
msgid "Choose taxonomy"
|
327 |
msgstr "Taxonomie wählen"
|
328 |
|
329 |
+
#: plugin-options/filter-options.php:53
|
330 |
msgctxt "[Admin] Filter edit form"
|
331 |
msgid "Select which taxonomy to use for this filter"
|
332 |
msgstr "Wähle, welche Taxonomie für diesen Filter verwendet werden soll"
|
333 |
|
334 |
+
#: plugin-options/filter-options.php:58
|
335 |
msgctxt "[Admin] Filter edit form"
|
336 |
msgid "Auto-populate with all terms"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: plugin-options/filter-options.php:60
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid ""
|
342 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
345 |
"well.</span>"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: plugin-options/filter-options.php:69
|
349 |
msgctxt "[Admin] Filter edit form"
|
350 |
msgid "Choose terms"
|
351 |
msgstr "Begriffe wählen"
|
352 |
|
353 |
+
#: plugin-options/filter-options.php:74
|
354 |
msgctxt "[Admin] Filter edit form"
|
355 |
msgid "Select which terms to use for filtering"
|
356 |
msgstr "Wähle aus, welche Begriffe für die Filterung verwendet werden sollen"
|
357 |
|
358 |
+
#: plugin-options/filter-options.php:78
|
359 |
msgctxt "[Admin] Filter edit form"
|
360 |
msgid "Filter type"
|
361 |
msgstr "Filter-Typ"
|
362 |
|
363 |
+
#: plugin-options/filter-options.php:82
|
364 |
msgctxt "[Admin] Filter edit form"
|
365 |
msgid "Select the filter type for this filter"
|
366 |
msgstr "Wähle den Filtertyp für diesen Filter"
|
367 |
|
368 |
+
#: plugin-options/filter-options.php:86
|
369 |
#, fuzzy
|
370 |
msgctxt "[Admin] Filter edit form"
|
371 |
msgid "Labels"
|
372 |
msgstr "Label"
|
373 |
|
374 |
+
#: plugin-options/filter-options.php:89
|
375 |
#, fuzzy
|
376 |
msgctxt "[Admin] Filter edit form"
|
377 |
msgid "Show below"
|
378 |
msgstr "Ergebnisse anzeigen"
|
379 |
|
380 |
+
#: plugin-options/filter-options.php:90
|
381 |
#, fuzzy
|
382 |
msgctxt "[Admin] Filter edit form"
|
383 |
msgid "Show on the right"
|
384 |
msgstr "Anzahl der Elemente anzeigen"
|
385 |
|
386 |
+
#: plugin-options/filter-options.php:91
|
387 |
msgctxt "[Admin] Filter edit form"
|
388 |
msgid "Hide"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: plugin-options/filter-options.php:93
|
392 |
#, fuzzy
|
393 |
msgctxt "[Admin] Filter edit form"
|
394 |
msgid "Choose if and where to show the label inside your filter"
|
395 |
msgstr "Wähle den Stil des Filters innerhalb von Widgets "
|
396 |
|
397 |
+
#: plugin-options/filter-options.php:97
|
398 |
msgctxt "[Admin] Filter edit form"
|
399 |
msgid "Columns number"
|
400 |
msgstr "Anzahl der Spalten"
|
401 |
|
402 |
+
#: plugin-options/filter-options.php:102
|
403 |
msgctxt "[Admin] Filter edit form"
|
404 |
msgid "Set the number of items per row you want to show for this design"
|
405 |
msgstr ""
|
406 |
"Stelle die Anzahl der Elemente pro Zeile ein, die du für dieses Design "
|
407 |
"anzeigen möchtest"
|
408 |
|
409 |
+
#: plugin-options/filter-options.php:106
|
410 |
msgctxt "[Admin] Filter edit form"
|
411 |
msgid "Customize terms"
|
412 |
msgstr "Begriffe anpassen"
|
413 |
|
414 |
+
#: plugin-options/filter-options.php:109
|
415 |
msgctxt "[Admin] Filter edit form"
|
416 |
msgid ""
|
417 |
"Configure your terms individually; system will otherwise use default labels/"
|
425 |
"this option and use the boxes below</span>"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: plugin-options/filter-options.php:119
|
429 |
#, fuzzy
|
430 |
msgctxt "[Admin] Filter edit form"
|
431 |
msgid "Terms options"
|
432 |
msgstr "Sortierungsoptionen"
|
433 |
|
434 |
+
#: plugin-options/filter-options.php:125
|
435 |
msgctxt "[Admin] Filter edit form"
|
436 |
msgid "Show hierarchy"
|
437 |
msgstr "Hierarchie anzeigen"
|
438 |
|
439 |
+
#: plugin-options/filter-options.php:128
|
440 |
msgctxt "[Admin] Filter edit form"
|
441 |
msgid "No, show all terms in same level"
|
442 |
msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
|
443 |
|
444 |
+
#: plugin-options/filter-options.php:129
|
445 |
msgctxt "[Admin] Filter edit form"
|
446 |
msgid "No, show only parent terms"
|
447 |
msgstr "Nein, nur übergeordnete Begriffe anzeigen"
|
448 |
|
449 |
+
#: plugin-options/filter-options.php:130
|
450 |
msgctxt "[Admin] Filter edit form"
|
451 |
msgid "Yes"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: plugin-options/filter-options.php:132
|
455 |
msgctxt "[Admin] Filter edit form"
|
456 |
msgid "Choose how to show terms hierarchy"
|
457 |
msgstr "Wähle, wie die Begriffshierarchie angezeigt werden soll"
|
458 |
|
459 |
+
#: plugin-options/filter-options.php:136
|
460 |
msgctxt "[Admin] Filter edit form"
|
461 |
msgid "Allow multiple selection"
|
462 |
msgstr "Mehrfachauswahl zulassen"
|
463 |
|
464 |
+
#: plugin-options/filter-options.php:138
|
465 |
msgctxt "[Admin] Filter edit form"
|
466 |
msgid "Enable if the user can select multiple terms when filtering products"
|
467 |
msgstr ""
|
468 |
"Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
|
469 |
"auswählen kann"
|
470 |
|
471 |
+
#: plugin-options/filter-options.php:142
|
472 |
msgctxt "[Admin] Filter edit form"
|
473 |
msgid "Multiselect relation"
|
474 |
msgstr "Multiselect-Beziehung"
|
475 |
|
476 |
+
#: plugin-options/filter-options.php:148
|
477 |
msgctxt "[Admin] Filter edit form"
|
478 |
msgid "Choose how multiple terms selection should behave"
|
479 |
msgstr "Wähle, wie sich die Auswahl mehrerer Begriffe verhalten soll"
|
480 |
|
481 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
482 |
msgctxt "[Admin] Filter edit form, sorting options"
|
483 |
msgid "Default sorting"
|
484 |
msgstr "Standard-Sortierung"
|
485 |
|
486 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Sort by popularity"
|
489 |
msgstr "Nach Beliebtheit sortieren"
|
490 |
|
491 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by average rating"
|
494 |
msgstr "Best bewertete zuerst"
|
495 |
|
496 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by latest"
|
499 |
msgstr "Neueste zuerst"
|
500 |
|
501 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by price: low to high"
|
504 |
msgstr "Sortieren nach Preis: Preis aufsteigend"
|
505 |
|
506 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
507 |
msgctxt "[Admin] Filter edit form, sorting options"
|
508 |
msgid "Sort by price: high to low"
|
509 |
msgstr "Sortieren nach Preis: Preis absteigend"
|
510 |
|
511 |
+
#: includes/class-yith-wcan-filter.php:116
|
512 |
msgctxt "[Admin] Default filter title"
|
513 |
msgid "New filter"
|
514 |
msgstr "Neuer Filter"
|
515 |
|
516 |
+
#: includes/class-yith-wcan-frontend.php:591
|
517 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
518 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
519 |
msgid "All"
|
520 |
msgstr "Alle"
|
521 |
|
522 |
+
#: includes/class-yith-wcan-frontend.php:592
|
523 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
524 |
msgid "Search..."
|
525 |
msgstr "Suchen..."
|
526 |
|
527 |
+
#: includes/class-yith-wcan-frontend.php:593
|
528 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
529 |
msgid "No item found"
|
530 |
msgstr "Kein Artikel gefunden"
|
531 |
|
532 |
#. translators: 1. Number of items to show.
|
533 |
+
#: includes/class-yith-wcan-frontend.php:595
|
534 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
535 |
msgid "Show %d more"
|
536 |
msgstr "%d mehr anzeigen"
|
537 |
|
538 |
+
#: includes/class-yith-wcan-frontend.php:596
|
539 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
540 |
msgid "Close"
|
541 |
msgstr "Schließen"
|
542 |
|
543 |
+
#: includes/class-yith-wcan-frontend.php:597
|
544 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
545 |
msgid "Save"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/class-yith-wcan-frontend.php:598
|
549 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
550 |
msgid "Show results"
|
551 |
msgstr "Ergebnisse anzeigen"
|
552 |
|
553 |
+
#: includes/class-yith-wcan-frontend.php:599
|
554 |
msgctxt ""
|
555 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
556 |
"selection"
|
557 |
msgid "Clear"
|
558 |
msgstr "Löschen"
|
559 |
|
560 |
+
#: includes/class-yith-wcan-frontend.php:600
|
561 |
msgctxt ""
|
562 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
563 |
"selection"
|
564 |
msgid "Clear All"
|
565 |
msgstr "Alle löschen"
|
566 |
|
567 |
+
#: includes/class-yith-wcan-install.php:95
|
568 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
569 |
msgid "Default preset"
|
570 |
msgstr "Standard-Preset"
|
571 |
|
572 |
#. translators: 1. Taxonomy name.
|
573 |
+
#: includes/class-yith-wcan-install.php:285
|
574 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
575 |
msgid "Filter by %s"
|
576 |
msgstr "Nach %s filtern"
|
577 |
|
578 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
579 |
#, fuzzy
|
580 |
msgctxt "[Admin] Label in new preset page"
|
581 |
msgid "Default"
|
591 |
msgid "Enter a name to identify this filter preset"
|
592 |
msgstr "Gib einen Namen ein, um dieses Filter-Preset zu identifizieren"
|
593 |
|
594 |
+
#: templates/admin/preset-filters.php:22
|
595 |
msgctxt "[Admin] Label in new preset page"
|
596 |
msgid "Filters of this preset"
|
597 |
msgstr "Filter in diesem Preset"
|
598 |
|
599 |
+
#: includes/class-yith-wcan-presets.php:95
|
600 |
+
#: includes/class-yith-wcan-presets.php:100
|
601 |
msgctxt "[Admin] name of presets custom post type"
|
602 |
msgid "Filter presets"
|
603 |
msgstr "Filter-Presets"
|
604 |
|
605 |
+
#: includes/class-yith-wcan-presets.php:96
|
606 |
msgctxt "[Admin] singular name of presets custom post type"
|
607 |
msgid "Filter preset"
|
608 |
msgstr "Filter-Preset"
|
609 |
|
610 |
+
#: includes/class-yith-wcan-presets.php:97
|
611 |
msgctxt "[Admin] add new filter preset label"
|
612 |
msgid "Add new preset"
|
613 |
msgstr "Neues Preset hinzufügen"
|
614 |
|
615 |
+
#: includes/class-yith-wcan-presets.php:139
|
616 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
617 |
msgid "Convert widgets in a preset"
|
618 |
msgstr "Widgets in eine Preset konvertieren"
|
619 |
|
620 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
621 |
msgctxt ""
|
622 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
623 |
"not exist"
|
625 |
msgstr "Ungültige Voreinstellung."
|
626 |
|
627 |
#. translators: 1. Title of original preset.
|
628 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
629 |
msgctxt "[ADMIN] Title of the cloned preset"
|
630 |
msgid "%s - Copy"
|
631 |
msgstr "%s - Kopieren"
|
632 |
|
633 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
634 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
635 |
msgid "YITH AJAX Filters Preset"
|
636 |
msgstr "YITH AJAX-Filter Presets"
|
637 |
|
638 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
639 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
640 |
msgid "YITH AJAX Filters Reset Button"
|
641 |
msgstr "YITH AJAX-Filter Reset-Button"
|
642 |
|
643 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
644 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
645 |
msgctxt "[ELEMENTOR] Default preset option"
|
646 |
msgid "Choose an option"
|
647 |
msgstr "Wähle eine Option"
|
648 |
|
649 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
650 |
msgctxt "[ELEMENTOR] Section title"
|
651 |
msgid "Filters"
|
652 |
msgstr "Filter"
|
653 |
|
654 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
655 |
msgctxt "[ELEMENTOR] Section title"
|
656 |
msgid "General"
|
657 |
msgstr "Allgemein"
|
658 |
|
659 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
660 |
msgctxt "[ELEMENTOR] Control label"
|
661 |
msgid "Preset"
|
662 |
msgstr "Preset"
|
663 |
|
664 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
665 |
msgctxt "[ELEMENTOR] Widget description"
|
666 |
msgid ""
|
667 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
669 |
"Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
|
670 |
"platziert wird"
|
671 |
|
672 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
673 |
msgctxt "[ELEMENTOR] Widget description"
|
674 |
msgid ""
|
675 |
"It will allow users to reset the filer selection; it will only appear when "
|
678 |
"Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
|
679 |
"erscheint nur, wenn ein Filter aktiv ist. "
|
680 |
|
681 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
682 |
msgctxt "[ELEMENTOR] Widget description"
|
683 |
msgid ""
|
684 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
688 |
"innerhalb deiner Seite zu platzieren, wenn die Option \"Position des Buttons "
|
689 |
"zurücksetzen\" für den Loop deines Produkts nicht funktioniert "
|
690 |
|
691 |
+
#: includes/functions-yith-wcan.php:112
|
692 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
693 |
msgid "Color 1"
|
694 |
msgstr "Farbe 2"
|
695 |
|
696 |
+
#: includes/functions-yith-wcan.php:112
|
697 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
698 |
msgid "Color 2"
|
699 |
msgstr "Farbe 2"
|
700 |
|
701 |
+
#: includes/functions-yith-wcan.php:1026
|
702 |
msgctxt "[FRONTEND] Star rating template"
|
703 |
msgid "star"
|
704 |
msgid_plural "stars"
|
706 |
msgstr[1] "Sternen"
|
707 |
|
708 |
#. translators: 1. Rating.
|
709 |
+
#: includes/functions-yith-wcan.php:1041
|
710 |
msgctxt "[FRONTEND] Star rating label"
|
711 |
msgid "Rated %s out of 5"
|
712 |
msgstr "Bewertet mit %s von 5"
|
713 |
|
714 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
715 |
msgctxt "[GUTENBERG]: block name"
|
716 |
msgid "YITH AJAX Filters Preset"
|
717 |
msgstr "YITH AJAX Filters Preset"
|
718 |
|
719 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
720 |
msgctxt "[GUTENBERG]: block name"
|
721 |
msgid "YITH Reset Filters Button"
|
722 |
msgstr "YITH \"Filter zurücksetzen\"-Button"
|
723 |
|
724 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
725 |
msgctxt "[GUTENBERG]: block description"
|
726 |
msgid "Show filters from a preset"
|
727 |
msgstr "Filter aus einem Preset anzeigen"
|
728 |
|
729 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
730 |
msgctxt "[GUTENBERG]: block description"
|
731 |
msgid ""
|
732 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
740 |
"Seite zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" "
|
741 |
"für den Loop deines Produkts nicht funktioniert"
|
742 |
|
743 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
744 |
msgctxt "[GUTENBERG]: attribute description"
|
745 |
msgid "Preset"
|
746 |
msgstr "Preset"
|
747 |
|
748 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
749 |
msgctxt "[Admin] Preset table column header"
|
750 |
msgid "Preset name"
|
751 |
msgstr "Preset-Name"
|
752 |
|
753 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
754 |
msgctxt "[Admin] Preset table column header"
|
755 |
msgid "Shortcode"
|
756 |
msgstr "Shortcode"
|
757 |
|
758 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
759 |
msgctxt "[Admin] Preset edit action label"
|
760 |
msgid "Edit this preset"
|
761 |
msgstr "Dieses Preset bearbeiten"
|
762 |
|
763 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
764 |
msgctxt "[Admin] Preset clone action label"
|
765 |
msgid "Clone this preset"
|
766 |
msgstr "Dieses Preset kopieren"
|
767 |
|
768 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
769 |
msgctxt "[Admin] Preset delete action label"
|
770 |
msgid "Delete this preset"
|
771 |
msgstr "Dieses Preset löschen"
|
772 |
|
773 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
774 |
msgctxt "[Admin] Preset delete confirm label"
|
775 |
msgid "Are you sure you want to delete this preset?"
|
776 |
msgstr "Bist du sicher, dass du dieses Preset löschen möchtest?"
|
777 |
|
778 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
779 |
msgctxt "[Admin] on-off yes"
|
780 |
msgid "YES"
|
781 |
msgstr "JA"
|
782 |
|
783 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
784 |
msgctxt "[Admin] on-off no"
|
785 |
msgid "NO"
|
786 |
msgstr "NEIN"
|
787 |
|
788 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
789 |
msgctxt ""
|
790 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
791 |
msgid "filter preset"
|
792 |
msgstr "Filter-Preset"
|
793 |
|
794 |
+
#: templates/admin/preset-filters.php:31
|
795 |
msgctxt ""
|
796 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
797 |
msgid "filter"
|
798 |
msgstr "Filter"
|
799 |
|
800 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
801 |
msgctxt "[Admin] New preset button label"
|
802 |
msgid "Create a new preset"
|
803 |
msgstr "Neues Preset erstellen"
|
804 |
|
805 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
806 |
msgctxt "[ADMIN] Name of the preset widget"
|
807 |
msgid "YITH AJAX Filters Preset"
|
808 |
msgstr "YITH AJAX Filters Preset"
|
809 |
|
810 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
811 |
msgctxt "[ADMIN] Preset widget options"
|
812 |
msgid "Preset"
|
813 |
msgstr "Preset"
|
814 |
|
815 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
816 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
817 |
msgctxt "[ADMIN] Preset widget options"
|
818 |
msgid ""
|
819 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
822 |
"Bitte gehe auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product Filter -> "
|
823 |
"Presets</a> und erstelle dein erstes Preset"
|
824 |
|
825 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
826 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
827 |
msgid "YITH AJAX Product Filter"
|
828 |
msgstr "YITH AJAX Product Filter"
|
829 |
|
830 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
831 |
#, fuzzy
|
832 |
msgctxt ""
|
833 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
834 |
msgid "AND"
|
835 |
msgstr "UND"
|
836 |
|
837 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
838 |
msgctxt "[Plugin Name]"
|
839 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
840 |
msgstr ""
|
841 |
"Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
|
842 |
|
843 |
+
#: plugin-options/filter-options.php:145
|
844 |
#, fuzzy
|
845 |
msgctxt ""
|
846 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
849 |
"UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
|
850 |
"übereinstimmen"
|
851 |
|
852 |
+
#: plugin-options/filter-options.php:146
|
853 |
#, fuzzy
|
854 |
msgctxt ""
|
855 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
1137 |
msgctxt "[ADMIN] Premium tab"
|
1138 |
msgid ""
|
1139 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1140 |
+
"view<br/>\n"
|
1141 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1142 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1143 |
+
"range (based on their budget availability)<br/>\n"
|
1144 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1145 |
"attributes available in your store, like color and size. For the color "
|
1146 |
"filter, you can either choose square or circular color swatches or use "
|
1147 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1148 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1149 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1150 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1151 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1152 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1153 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1154 |
+
"filter products and view only those with a discount<br/>\n"
|
1155 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1156 |
"filter products based on their needs and exclude out-of-stock products from "
|
1157 |
"the list"
|
1277 |
"easier to share)"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: templates/admin/preset-edit.php:31
|
1281 |
msgctxt "[Admin] Back link in new preset page"
|
1282 |
msgid "< back to preset list"
|
1283 |
msgstr "< zurück zur Preset-Liste"
|
1284 |
|
1285 |
+
#: templates/admin/preset-edit.php:38
|
1286 |
msgctxt "[ADMIN] Title for new preset page"
|
1287 |
msgid "Edit filter preset"
|
1288 |
msgstr "Filter-Preset bearbeiten"
|
1289 |
|
1290 |
+
#: templates/admin/preset-edit.php:40
|
1291 |
msgctxt "[ADMIN] Title for new preset page"
|
1292 |
msgid "Add new filter preset"
|
1293 |
msgstr "Neues Filter-Preset hinzufügen"
|
1294 |
|
1295 |
+
#: templates/admin/preset-edit.php:47
|
1296 |
msgctxt "[ADMIN] Preset save message"
|
1297 |
msgid "Preset saved correctly"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: templates/admin/preset-edit.php:93
|
1301 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1302 |
msgid "Save preset"
|
1303 |
msgstr "Preset speichern"
|
1304 |
|
1305 |
+
#: templates/admin/preset-empty-content.php:29
|
1306 |
msgctxt "Alt text for empty preset image"
|
1307 |
msgid "Empty preset"
|
1308 |
msgstr "Leeres Preset"
|
1309 |
|
1310 |
#. translators: 1. Missing item name.
|
1311 |
+
#: templates/admin/preset-empty-content.php:35
|
1312 |
msgctxt "[Admin] Preset table empty message"
|
1313 |
msgid "You don't have any %s yet."
|
1314 |
msgstr "Du hast bis jetzt keine %s."
|
1315 |
|
1316 |
+
#: templates/admin/preset-filter-term.php:30
|
1317 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1318 |
msgid "Label"
|
1319 |
msgstr "Label"
|
1320 |
|
1321 |
+
#: templates/admin/preset-filter-term.php:35
|
1322 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1323 |
msgid "Tooltip"
|
1324 |
msgstr "Tooltip"
|
1325 |
|
1326 |
+
#: templates/admin/preset-filter-term.php:41
|
1327 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1328 |
msgid "Color"
|
1329 |
msgstr "Farbe"
|
1330 |
|
1331 |
+
#: templates/admin/preset-filter.php:91
|
1332 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1333 |
msgid "Save Filter"
|
1334 |
msgstr "Filter speichern"
|
1335 |
|
1336 |
+
#: templates/admin/preset-filter.php:92
|
1337 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1338 |
msgid "Delete Filter"
|
1339 |
msgstr "Filter löschen"
|
1340 |
|
1341 |
+
#: templates/admin/preset-filters.php:33
|
1342 |
msgctxt "[Admin] New filter button label"
|
1343 |
msgid "Add a new filter"
|
1344 |
msgstr "Einen neuen Filter hinzufügen"
|
1345 |
|
1346 |
+
#: templates/admin/preset-filters.php:57
|
1347 |
msgctxt "[Admin] Add new filter in new preset page"
|
1348 |
msgid "+ Add filter"
|
1349 |
msgstr "+ Filter hinzufügen "
|
1355 |
msgid "See %d more filters"
|
1356 |
msgstr "Vor Filtern"
|
1357 |
|
1358 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1359 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1360 |
msgid "Use the new filter preset feature for your filters"
|
1361 |
msgstr "Nutze das neuen Filter-Preset-Feature für deine Filter "
|
1362 |
|
1363 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1364 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1365 |
msgid ""
|
1366 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1375 |
"Widget verwendest. "
|
1376 |
|
1377 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1378 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1379 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1380 |
msgid ""
|
1381 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1386 |
"Feature genutzt werden kann."
|
1387 |
|
1388 |
#. translators: 1. Url to docs.
|
1389 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1390 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1391 |
msgid ""
|
1392 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1395 |
"Wir empfehlen dir, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> "
|
1396 |
"um zu lernen, wie dieses neue Feature genutzt werden kann."
|
1397 |
|
1398 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1399 |
#, fuzzy
|
1400 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1401 |
msgid ""
|
1410 |
"übertragen.<br/>\n"
|
1411 |
"<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
|
1412 |
|
1413 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1414 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1415 |
msgid ""
|
1416 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1418 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1419 |
msgstr ""
|
1420 |
|
1421 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1422 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1423 |
msgid "Convert your widgets in a preset now"
|
1424 |
msgstr "Wandle deine Widgets jetzt ins Presets um"
|
1425 |
|
1426 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1427 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1428 |
msgid "No thanks"
|
1429 |
msgstr "Nein Danke"
|
1430 |
|
1431 |
+
#: templates/filters/global/reset-filters.php:24
|
1432 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1433 |
msgid "Reset filters"
|
1434 |
msgstr "Filter zurücksetzen"
|
1435 |
|
1436 |
+
#~ msgctxt "[Admin] Menu title"
|
1437 |
+
#~ msgid "Ajax Product Filter"
|
1438 |
+
#~ msgstr "AJAX Produkt-Filter "
|
1439 |
+
|
1440 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1441 |
#~ msgid "All"
|
1442 |
#~ msgstr "Alle"
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2021-03-02 11:03+0100\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
@@ -16,94 +16,94 @@ msgstr ""
|
|
16 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
"X-Generator: Poedit 2.4.2\n"
|
18 |
|
19 |
-
#: includes/data-stores/class
|
20 |
msgid "Draft Preset"
|
21 |
msgstr "Preset Entwurf"
|
22 |
|
23 |
-
#: includes/functions
|
24 |
-
#: includes/functions
|
25 |
msgid "Term"
|
26 |
msgstr "Begriff"
|
27 |
|
28 |
-
#: includes/functions
|
29 |
-
#: includes/widgets/class
|
30 |
msgid "Color"
|
31 |
msgstr "Farbe"
|
32 |
|
33 |
-
#: includes/functions
|
34 |
msgid "Labels"
|
35 |
msgstr "Label"
|
36 |
|
37 |
-
#: includes/widgets/class
|
38 |
msgid "Filter the list of products without reloading the page"
|
39 |
msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
|
40 |
|
41 |
-
#: includes/widgets/class
|
42 |
msgid "Filters:"
|
43 |
msgstr "Filter:"
|
44 |
|
45 |
-
#: includes/widgets/class
|
46 |
msgid "List"
|
47 |
msgstr "Liste"
|
48 |
|
49 |
-
#: includes/widgets/class
|
50 |
msgid "Label"
|
51 |
msgstr "Label"
|
52 |
|
53 |
-
#: includes/widgets/class
|
54 |
msgid "Dropdown"
|
55 |
msgstr "Dropdown"
|
56 |
|
57 |
-
#: includes/widgets/class
|
58 |
-
#: includes/widgets/class
|
59 |
msgid "Title"
|
60 |
msgstr "Titel"
|
61 |
|
62 |
-
#: includes/widgets/class
|
63 |
msgid "Type:"
|
64 |
msgstr "Typ:"
|
65 |
|
66 |
-
#: includes/widgets/class
|
67 |
msgid "Query Type:"
|
68 |
msgstr "Query-Typ"
|
69 |
|
70 |
-
#: includes/widgets/class
|
71 |
msgid "OR"
|
72 |
msgstr "ODER"
|
73 |
|
74 |
-
#: includes/widgets/class
|
75 |
msgid "Attribute:"
|
76 |
msgstr "Attribute:"
|
77 |
|
78 |
-
#: includes/widgets/class
|
79 |
msgid "Display (default All):"
|
80 |
msgstr "Anzeige (Standard Alles):"
|
81 |
|
82 |
-
#: includes/widgets/class
|
83 |
msgid "All (no hierarchical)"
|
84 |
msgstr "Alle (nicht hierarchisch)"
|
85 |
|
86 |
-
#: includes/widgets/class
|
87 |
msgid "All (hierarchical)"
|
88 |
msgstr "Alles (hierarchisch)"
|
89 |
|
90 |
-
#: includes/widgets/class
|
91 |
msgid "Only Parent"
|
92 |
msgstr "Nur Übergeordnete"
|
93 |
|
94 |
-
#: includes/widgets/class
|
95 |
msgid "CSS custom class"
|
96 |
msgstr "Individuelle CSS-Klasse"
|
97 |
|
98 |
-
#: includes/widgets/class
|
99 |
msgid "YITH AJAX Reset Filter"
|
100 |
msgstr "YITH AJAX-Filter zurücksetzen"
|
101 |
|
102 |
-
#: includes/widgets/class
|
103 |
msgid "Reset All Filters"
|
104 |
msgstr "Alle Filter zurücksetzen"
|
105 |
|
106 |
-
#: includes/widgets/class
|
107 |
msgid "Button Label"
|
108 |
msgstr "Button-Beschriftung"
|
109 |
|
@@ -139,76 +139,71 @@ msgstr ""
|
|
139 |
"\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für Ihren E-"
|
140 |
"Commerce-Shop erhalten Sie bei <strong>YITH</strong></a>"
|
141 |
|
142 |
-
#: includes/class
|
143 |
msgctxt "[Admin] Copy confirmation message"
|
144 |
msgid "Content copied to your clipboard"
|
145 |
msgstr "Inhalt in die Zwischenablage kopiert"
|
146 |
|
147 |
-
#: includes/class
|
148 |
msgctxt "[Admin] Confirm filter delete message"
|
149 |
msgid "Are you sure you want to delete this item?"
|
150 |
msgstr "Sind Sie sicher, dass Sie dieses Element löschen möchten?"
|
151 |
|
152 |
#. translators: 1. Number of items that will be added.
|
153 |
-
#: includes/class
|
154 |
msgctxt "[Admin] Confirm add all terms message"
|
155 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
156 |
msgstr ""
|
157 |
"Sind Sie sicher, dass Sie fortfahren möchten? Dieser Vorgang wird %s "
|
158 |
"Elemente hinzufügen"
|
159 |
|
160 |
-
#: includes/class
|
161 |
msgctxt "[Admin] Error message"
|
162 |
msgid "\"Filter title\" is a required field"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class
|
166 |
msgctxt "[Admin] Message shown when filter has empty title"
|
167 |
msgid "< no title >"
|
168 |
msgstr "< Kein Titel >"
|
169 |
|
170 |
-
#: includes/class
|
171 |
msgctxt "[Admin] Media library title, when selecting images"
|
172 |
msgid "Select media you want to use"
|
173 |
msgstr "Die zu verwendenden Medien auswählen"
|
174 |
|
175 |
-
#: includes/class
|
176 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
177 |
msgid "Use this media"
|
178 |
msgstr "Dieses Medium verwenden"
|
179 |
|
180 |
-
#: includes/class
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "Filter presets"
|
183 |
msgstr "Filter-Presets"
|
184 |
|
185 |
-
#: includes/class
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "General settings"
|
188 |
msgstr "Allgemeine Einstellungen"
|
189 |
|
190 |
-
#: includes/class
|
191 |
#, fuzzy
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "SEO"
|
194 |
msgstr "SEO"
|
195 |
|
196 |
-
#: includes/class
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "Premium Version"
|
199 |
msgstr "Premium-Version"
|
200 |
|
201 |
-
#: includes/class
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Legacy"
|
204 |
msgstr "Legacy"
|
205 |
|
206 |
-
#: includes/class
|
207 |
-
msgctxt "[Admin] Menu title"
|
208 |
-
msgid "Ajax Product Filter"
|
209 |
-
msgstr "AJAX Produkt-Filter "
|
210 |
-
|
211 |
-
#: includes/class.yith-wcan-admin.php:199
|
212 |
msgctxt "[Admin] Plugin description"
|
213 |
msgid ""
|
214 |
"It allows your users to find the product they are looking for as quickly as "
|
@@ -217,44 +212,44 @@ msgstr ""
|
|
217 |
"Ermöglicht Ihren Benutzern, das gesuchte Produkt so schnell wie möglich zu "
|
218 |
"finden."
|
219 |
|
220 |
-
#: includes/class
|
221 |
msgctxt "[HELP TAB] Video title"
|
222 |
msgid ""
|
223 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
224 |
"the shop page:</b>"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: includes/class
|
228 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
229 |
msgid "item"
|
230 |
msgstr "Artikel"
|
231 |
|
232 |
-
#: includes/class
|
233 |
msgctxt "[Admin] Preset table empty message second line"
|
234 |
msgid "But don't worry, here you can create your first one!"
|
235 |
msgstr "Aber keine Sorge, hier können Sie eine erste erstellen!"
|
236 |
|
237 |
-
#: includes/class
|
238 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
239 |
msgid "Clear Product Filter transients"
|
240 |
msgstr "Produktfilter-Tansients löschen"
|
241 |
|
242 |
-
#: includes/class
|
243 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
244 |
msgid "Run filter widgets upgrade"
|
245 |
msgstr "Upgrade der Filter-Widgets ausführen"
|
246 |
|
247 |
-
#: includes/class
|
248 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
249 |
msgid "Clear"
|
250 |
msgstr "Löschen"
|
251 |
|
252 |
-
#: includes/class
|
253 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
254 |
msgid "Run"
|
255 |
msgstr "Start"
|
256 |
|
257 |
-
#: includes/class
|
258 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
259 |
msgid ""
|
260 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -266,7 +261,7 @@ msgstr ""
|
|
266 |
"Konfiguration Ihres Produkts geändert haben und die Filter nicht die "
|
267 |
"erwarteten Ergebnisse anzeigen. "
|
268 |
|
269 |
-
#: includes/class
|
270 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
271 |
msgid ""
|
272 |
"This will create a preset for any sidebar of your shop containing filter "
|
@@ -276,32 +271,32 @@ msgstr ""
|
|
276 |
"Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
|
277 |
"Spezifikationen der Widgets entspricht"
|
278 |
|
279 |
-
#: includes/class
|
280 |
msgctxt "[Admin] Filter edit form"
|
281 |
msgid "Taxonomy"
|
282 |
msgstr "Taxonomie"
|
283 |
|
284 |
-
#: includes/class
|
285 |
msgctxt "[Admin] Filter edit form"
|
286 |
msgid "Checkbox"
|
287 |
msgstr "Checkbox"
|
288 |
|
289 |
-
#: includes/class
|
290 |
msgctxt "[Admin] Filter edit form"
|
291 |
msgid "Select"
|
292 |
msgstr "Auswahl"
|
293 |
|
294 |
-
#: includes/class
|
295 |
msgctxt "[Admin] Filter edit form"
|
296 |
msgid "Text"
|
297 |
msgstr "Text"
|
298 |
|
299 |
-
#: includes/class
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Color Swatches"
|
302 |
msgstr "Farbmuster"
|
303 |
|
304 |
-
#: includes/class
|
305 |
msgctxt "[Admin] Filter edit form"
|
306 |
msgid "Label"
|
307 |
msgstr "Label"
|
@@ -316,32 +311,32 @@ msgctxt "[Admin] Filter edit form"
|
|
316 |
msgid "Enter a name to identify this filter"
|
317 |
msgstr "Geben Sie einen Namen ein, um diesen Filter zu identifizieren"
|
318 |
|
319 |
-
#: plugin-options/filter-options.php:
|
320 |
msgctxt "[Admin] Filter edit form"
|
321 |
msgid "Filter for"
|
322 |
msgstr "Filtern nach"
|
323 |
|
324 |
-
#: plugin-options/filter-options.php:
|
325 |
msgctxt "[Admin] Filter edit form"
|
326 |
msgid "Select the parameters you wish to filter for"
|
327 |
msgstr "Wählen Sie die Parameter, nach denen Sie filtern möchten"
|
328 |
|
329 |
-
#: plugin-options/filter-options.php:
|
330 |
msgctxt "[Admin] Filter edit form"
|
331 |
msgid "Choose taxonomy"
|
332 |
msgstr "Taxonomie wählen"
|
333 |
|
334 |
-
#: plugin-options/filter-options.php:
|
335 |
msgctxt "[Admin] Filter edit form"
|
336 |
msgid "Select which taxonomy to use for this filter"
|
337 |
msgstr "Wählen Sie, welche Taxonomie für diesen Filter verwendet werden soll"
|
338 |
|
339 |
-
#: plugin-options/filter-options.php:
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid "Auto-populate with all terms"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: plugin-options/filter-options.php:
|
345 |
msgctxt "[Admin] Filter edit form"
|
346 |
msgid ""
|
347 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -350,74 +345,74 @@ msgid ""
|
|
350 |
"well.</span>"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: plugin-options/filter-options.php:
|
354 |
msgctxt "[Admin] Filter edit form"
|
355 |
msgid "Choose terms"
|
356 |
msgstr "Begriffe wählen"
|
357 |
|
358 |
-
#: plugin-options/filter-options.php:
|
359 |
msgctxt "[Admin] Filter edit form"
|
360 |
msgid "Select which terms to use for filtering"
|
361 |
msgstr ""
|
362 |
"Wählen Sie aus, welche Begriffe für die Filterung verwendet werden sollen"
|
363 |
|
364 |
-
#: plugin-options/filter-options.php:
|
365 |
msgctxt "[Admin] Filter edit form"
|
366 |
msgid "Filter type"
|
367 |
msgstr "Filter-Typ"
|
368 |
|
369 |
-
#: plugin-options/filter-options.php:
|
370 |
msgctxt "[Admin] Filter edit form"
|
371 |
msgid "Select the filter type for this filter"
|
372 |
msgstr "Wählen Sie den Filtertyp für diesen Filter"
|
373 |
|
374 |
-
#: plugin-options/filter-options.php:
|
375 |
#, fuzzy
|
376 |
msgctxt "[Admin] Filter edit form"
|
377 |
msgid "Labels"
|
378 |
msgstr "Label"
|
379 |
|
380 |
-
#: plugin-options/filter-options.php:
|
381 |
#, fuzzy
|
382 |
msgctxt "[Admin] Filter edit form"
|
383 |
msgid "Show below"
|
384 |
msgstr "Ergebnisse anzeigen"
|
385 |
|
386 |
-
#: plugin-options/filter-options.php:
|
387 |
#, fuzzy
|
388 |
msgctxt "[Admin] Filter edit form"
|
389 |
msgid "Show on the right"
|
390 |
msgstr "Anzahl der Elemente anzeigen"
|
391 |
|
392 |
-
#: plugin-options/filter-options.php:
|
393 |
msgctxt "[Admin] Filter edit form"
|
394 |
msgid "Hide"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: plugin-options/filter-options.php:
|
398 |
#, fuzzy
|
399 |
msgctxt "[Admin] Filter edit form"
|
400 |
msgid "Choose if and where to show the label inside your filter"
|
401 |
msgstr "Wählen Sie den Stil des Filters innerhalb von Widgets "
|
402 |
|
403 |
-
#: plugin-options/filter-options.php:
|
404 |
msgctxt "[Admin] Filter edit form"
|
405 |
msgid "Columns number"
|
406 |
msgstr "Anzahl der Spalten"
|
407 |
|
408 |
-
#: plugin-options/filter-options.php:
|
409 |
msgctxt "[Admin] Filter edit form"
|
410 |
msgid "Set the number of items per row you want to show for this design"
|
411 |
msgstr ""
|
412 |
"Stellen Sie die Anzahl der Elemente pro Zeile ein, die Sie für dieses Design "
|
413 |
"anzeigen möchten"
|
414 |
|
415 |
-
#: plugin-options/filter-options.php:
|
416 |
msgctxt "[Admin] Filter edit form"
|
417 |
msgid "Customize terms"
|
418 |
msgstr "Begriffe anpassen"
|
419 |
|
420 |
-
#: plugin-options/filter-options.php:
|
421 |
msgctxt "[Admin] Filter edit form"
|
422 |
msgid ""
|
423 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -431,157 +426,157 @@ msgid ""
|
|
431 |
"this option and use the boxes below</span>"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: plugin-options/filter-options.php:
|
435 |
#, fuzzy
|
436 |
msgctxt "[Admin] Filter edit form"
|
437 |
msgid "Terms options"
|
438 |
msgstr "Sortierungsoptionen"
|
439 |
|
440 |
-
#: plugin-options/filter-options.php:
|
441 |
msgctxt "[Admin] Filter edit form"
|
442 |
msgid "Show hierarchy"
|
443 |
msgstr "Hierarchie anzeigen"
|
444 |
|
445 |
-
#: plugin-options/filter-options.php:
|
446 |
msgctxt "[Admin] Filter edit form"
|
447 |
msgid "No, show all terms in same level"
|
448 |
msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
|
449 |
|
450 |
-
#: plugin-options/filter-options.php:
|
451 |
msgctxt "[Admin] Filter edit form"
|
452 |
msgid "No, show only parent terms"
|
453 |
msgstr "Nein, nur übergeordnete Begriffe anzeigen"
|
454 |
|
455 |
-
#: plugin-options/filter-options.php:
|
456 |
msgctxt "[Admin] Filter edit form"
|
457 |
msgid "Yes"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: plugin-options/filter-options.php:
|
461 |
msgctxt "[Admin] Filter edit form"
|
462 |
msgid "Choose how to show terms hierarchy"
|
463 |
msgstr "Wählen Sie, wie die Begriffshierarchie angezeigt werden soll"
|
464 |
|
465 |
-
#: plugin-options/filter-options.php:
|
466 |
msgctxt "[Admin] Filter edit form"
|
467 |
msgid "Allow multiple selection"
|
468 |
msgstr "Mehrfachauswahl zulassen"
|
469 |
|
470 |
-
#: plugin-options/filter-options.php:
|
471 |
msgctxt "[Admin] Filter edit form"
|
472 |
msgid "Enable if the user can select multiple terms when filtering products"
|
473 |
msgstr ""
|
474 |
"Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
|
475 |
"auswählen kann"
|
476 |
|
477 |
-
#: plugin-options/filter-options.php:
|
478 |
msgctxt "[Admin] Filter edit form"
|
479 |
msgid "Multiselect relation"
|
480 |
msgstr "Multiselect-Beziehung"
|
481 |
|
482 |
-
#: plugin-options/filter-options.php:
|
483 |
msgctxt "[Admin] Filter edit form"
|
484 |
msgid "Choose how multiple terms selection should behave"
|
485 |
msgstr "Wählen Sie, wie sich die Auswahl mehrerer Begriffe verhalten soll"
|
486 |
|
487 |
-
#: includes/class
|
488 |
msgctxt "[Admin] Filter edit form, sorting options"
|
489 |
msgid "Default sorting"
|
490 |
msgstr "Standard-Sortierung"
|
491 |
|
492 |
-
#: includes/class
|
493 |
msgctxt "[Admin] Filter edit form, sorting options"
|
494 |
msgid "Sort by popularity"
|
495 |
msgstr "Nach Beliebtheit sortieren"
|
496 |
|
497 |
-
#: includes/class
|
498 |
msgctxt "[Admin] Filter edit form, sorting options"
|
499 |
msgid "Sort by average rating"
|
500 |
msgstr "Best bewertete zuerst"
|
501 |
|
502 |
-
#: includes/class
|
503 |
msgctxt "[Admin] Filter edit form, sorting options"
|
504 |
msgid "Sort by latest"
|
505 |
msgstr "Neueste zuerst"
|
506 |
|
507 |
-
#: includes/class
|
508 |
msgctxt "[Admin] Filter edit form, sorting options"
|
509 |
msgid "Sort by price: low to high"
|
510 |
msgstr "Sortieren nach Preis: Preis aufsteigend"
|
511 |
|
512 |
-
#: includes/class
|
513 |
msgctxt "[Admin] Filter edit form, sorting options"
|
514 |
msgid "Sort by price: high to low"
|
515 |
msgstr "Sortieren nach Preis: Preis absteigend"
|
516 |
|
517 |
-
#: includes/class
|
518 |
msgctxt "[Admin] Default filter title"
|
519 |
msgid "New filter"
|
520 |
msgstr "Neuer Filter"
|
521 |
|
522 |
-
#: includes/class
|
523 |
-
#: includes/filters/class
|
524 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
525 |
msgid "All"
|
526 |
msgstr "Alle"
|
527 |
|
528 |
-
#: includes/class
|
529 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
530 |
msgid "Search..."
|
531 |
msgstr "Suchen..."
|
532 |
|
533 |
-
#: includes/class
|
534 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
535 |
msgid "No item found"
|
536 |
msgstr "Kein Artikel gefunden"
|
537 |
|
538 |
#. translators: 1. Number of items to show.
|
539 |
-
#: includes/class
|
540 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
541 |
msgid "Show %d more"
|
542 |
msgstr "%d mehr anzeigen"
|
543 |
|
544 |
-
#: includes/class
|
545 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
546 |
msgid "Close"
|
547 |
msgstr "Schließen"
|
548 |
|
549 |
-
#: includes/class
|
550 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
551 |
msgid "Save"
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: includes/class
|
555 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
556 |
msgid "Show results"
|
557 |
msgstr "Ergebnisse anzeigen"
|
558 |
|
559 |
-
#: includes/class
|
560 |
msgctxt ""
|
561 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
562 |
"selection"
|
563 |
msgid "Clear"
|
564 |
msgstr "Löschen"
|
565 |
|
566 |
-
#: includes/class
|
567 |
msgctxt ""
|
568 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
569 |
"selection"
|
570 |
msgid "Clear All"
|
571 |
msgstr "Alle löschen"
|
572 |
|
573 |
-
#: includes/class
|
574 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
575 |
msgid "Default preset"
|
576 |
msgstr "Standard-Preset"
|
577 |
|
578 |
#. translators: 1. Taxonomy name.
|
579 |
-
#: includes/class
|
580 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
581 |
msgid "Filter by %s"
|
582 |
msgstr "Nach %s filtern"
|
583 |
|
584 |
-
#: includes/class
|
585 |
#, fuzzy
|
586 |
msgctxt "[Admin] Label in new preset page"
|
587 |
msgid "Default"
|
@@ -597,33 +592,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
597 |
msgid "Enter a name to identify this filter preset"
|
598 |
msgstr "Geben Sie einen Namen ein, um dieses Filter-Preset zu identifizieren"
|
599 |
|
600 |
-
#: templates/admin/preset-filters.php:
|
601 |
msgctxt "[Admin] Label in new preset page"
|
602 |
msgid "Filters of this preset"
|
603 |
msgstr "Filter in diesem Preset"
|
604 |
|
605 |
-
#: includes/class
|
606 |
-
#: includes/class
|
607 |
msgctxt "[Admin] name of presets custom post type"
|
608 |
msgid "Filter presets"
|
609 |
msgstr "Filter-Presets"
|
610 |
|
611 |
-
#: includes/class
|
612 |
msgctxt "[Admin] singular name of presets custom post type"
|
613 |
msgid "Filter preset"
|
614 |
msgstr "Filter-Preset"
|
615 |
|
616 |
-
#: includes/class
|
617 |
msgctxt "[Admin] add new filter preset label"
|
618 |
msgid "Add new preset"
|
619 |
msgstr "Neues Preset hinzufügen"
|
620 |
|
621 |
-
#: includes/class
|
622 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
623 |
msgid "Convert widgets in a preset"
|
624 |
msgstr "Widgets in eine Preset konvertieren"
|
625 |
|
626 |
-
#: includes/data-stores/class
|
627 |
msgctxt ""
|
628 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
629 |
"not exist"
|
@@ -631,43 +626,43 @@ msgid "Invalid preset."
|
|
631 |
msgstr "Ungültige Voreinstellung."
|
632 |
|
633 |
#. translators: 1. Title of original preset.
|
634 |
-
#: includes/data-stores/class
|
635 |
msgctxt "[ADMIN] Title of the cloned preset"
|
636 |
msgid "%s - Copy"
|
637 |
msgstr "%s - Kopieren"
|
638 |
|
639 |
-
#: includes/elementor/class
|
640 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
641 |
msgid "YITH AJAX Filters Preset"
|
642 |
msgstr "YITH AJAX-Filter Presets"
|
643 |
|
644 |
-
#: includes/elementor/class
|
645 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
646 |
msgid "YITH AJAX Filters Reset Button"
|
647 |
msgstr "YITH AJAX-Filter Reset-Button"
|
648 |
|
649 |
-
#: includes/elementor/class
|
650 |
-
#: includes/shortcodes/class
|
651 |
msgctxt "[ELEMENTOR] Default preset option"
|
652 |
msgid "Choose an option"
|
653 |
msgstr "Wählen Sie eine Option"
|
654 |
|
655 |
-
#: includes/elementor/class
|
656 |
msgctxt "[ELEMENTOR] Section title"
|
657 |
msgid "Filters"
|
658 |
msgstr "Filter"
|
659 |
|
660 |
-
#: includes/elementor/class
|
661 |
msgctxt "[ELEMENTOR] Section title"
|
662 |
msgid "General"
|
663 |
msgstr "Allgemein"
|
664 |
|
665 |
-
#: includes/elementor/class
|
666 |
msgctxt "[ELEMENTOR] Control label"
|
667 |
msgid "Preset"
|
668 |
msgstr "Preset"
|
669 |
|
670 |
-
#: includes/elementor/class
|
671 |
msgctxt "[ELEMENTOR] Widget description"
|
672 |
msgid ""
|
673 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
@@ -675,7 +670,7 @@ msgstr ""
|
|
675 |
"Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
|
676 |
"platziert wird"
|
677 |
|
678 |
-
#: includes/elementor/class
|
679 |
msgctxt "[ELEMENTOR] Widget description"
|
680 |
msgid ""
|
681 |
"It will allow users to reset the filer selection; it will only appear when "
|
@@ -684,7 +679,7 @@ msgstr ""
|
|
684 |
"Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
|
685 |
"erscheint nur, wenn ein Filter aktiv ist. "
|
686 |
|
687 |
-
#: includes/elementor/class
|
688 |
msgctxt "[ELEMENTOR] Widget description"
|
689 |
msgid ""
|
690 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
@@ -694,17 +689,17 @@ msgstr ""
|
|
694 |
"innerhalb Ihrer Seite zu platzieren, wenn die Option \"Position des Buttons "
|
695 |
"zurücksetzen\" für den Loop Ihres Produkts nicht funktioniert "
|
696 |
|
697 |
-
#: includes/functions
|
698 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
699 |
msgid "Color 1"
|
700 |
msgstr "Farbe 2"
|
701 |
|
702 |
-
#: includes/functions
|
703 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
704 |
msgid "Color 2"
|
705 |
msgstr "Farbe 2"
|
706 |
|
707 |
-
#: includes/functions
|
708 |
msgctxt "[FRONTEND] Star rating template"
|
709 |
msgid "star"
|
710 |
msgid_plural "stars"
|
@@ -712,27 +707,27 @@ msgstr[0] "Stern"
|
|
712 |
msgstr[1] "Sternen"
|
713 |
|
714 |
#. translators: 1. Rating.
|
715 |
-
#: includes/functions
|
716 |
msgctxt "[FRONTEND] Star rating label"
|
717 |
msgid "Rated %s out of 5"
|
718 |
msgstr "Bewertet mit %s von 5"
|
719 |
|
720 |
-
#: includes/shortcodes/class
|
721 |
msgctxt "[GUTENBERG]: block name"
|
722 |
msgid "YITH AJAX Filters Preset"
|
723 |
msgstr "YITH AJAX Filters Preset"
|
724 |
|
725 |
-
#: includes/shortcodes/class
|
726 |
msgctxt "[GUTENBERG]: block name"
|
727 |
msgid "YITH Reset Filters Button"
|
728 |
msgstr "YITH \"Filter zurücksetzen\"-Button"
|
729 |
|
730 |
-
#: includes/shortcodes/class
|
731 |
msgctxt "[GUTENBERG]: block description"
|
732 |
msgid "Show filters from a preset"
|
733 |
msgstr "Filter aus einem Preset anzeigen"
|
734 |
|
735 |
-
#: includes/shortcodes/class
|
736 |
msgctxt "[GUTENBERG]: block description"
|
737 |
msgid ""
|
738 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -746,80 +741,80 @@ msgstr ""
|
|
746 |
"zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" für den "
|
747 |
"Loop Ihres Produkts nicht funktioniert"
|
748 |
|
749 |
-
#: includes/shortcodes/class
|
750 |
msgctxt "[GUTENBERG]: attribute description"
|
751 |
msgid "Preset"
|
752 |
msgstr "Preset"
|
753 |
|
754 |
-
#: includes/tables/class
|
755 |
msgctxt "[Admin] Preset table column header"
|
756 |
msgid "Preset name"
|
757 |
msgstr "Preset-Name"
|
758 |
|
759 |
-
#: includes/tables/class
|
760 |
msgctxt "[Admin] Preset table column header"
|
761 |
msgid "Shortcode"
|
762 |
msgstr "Shortcode"
|
763 |
|
764 |
-
#: includes/tables/class
|
765 |
msgctxt "[Admin] Preset edit action label"
|
766 |
msgid "Edit this preset"
|
767 |
msgstr "Dieses Preset bearbeiten"
|
768 |
|
769 |
-
#: includes/tables/class
|
770 |
msgctxt "[Admin] Preset clone action label"
|
771 |
msgid "Clone this preset"
|
772 |
msgstr "Dieses Preset kopieren"
|
773 |
|
774 |
-
#: includes/tables/class
|
775 |
msgctxt "[Admin] Preset delete action label"
|
776 |
msgid "Delete this preset"
|
777 |
msgstr "Dieses Preset löschen"
|
778 |
|
779 |
-
#: includes/tables/class
|
780 |
msgctxt "[Admin] Preset delete confirm label"
|
781 |
msgid "Are you sure you want to delete this preset?"
|
782 |
msgstr "Sind Sie sicher, dass Sie dieses Preset löschen möchten?"
|
783 |
|
784 |
-
#: includes/tables/class
|
785 |
msgctxt "[Admin] on-off yes"
|
786 |
msgid "YES"
|
787 |
msgstr "JA"
|
788 |
|
789 |
-
#: includes/tables/class
|
790 |
msgctxt "[Admin] on-off no"
|
791 |
msgid "NO"
|
792 |
msgstr "NEIN"
|
793 |
|
794 |
-
#: includes/tables/class
|
795 |
msgctxt ""
|
796 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
797 |
msgid "filter preset"
|
798 |
msgstr "Filter-Preset"
|
799 |
|
800 |
-
#: templates/admin/preset-filters.php:
|
801 |
msgctxt ""
|
802 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
803 |
msgid "filter"
|
804 |
msgstr "Filter"
|
805 |
|
806 |
-
#: includes/tables/class
|
807 |
msgctxt "[Admin] New preset button label"
|
808 |
msgid "Create a new preset"
|
809 |
msgstr "Neues Preset erstellen"
|
810 |
|
811 |
-
#: includes/widgets/class
|
812 |
msgctxt "[ADMIN] Name of the preset widget"
|
813 |
msgid "YITH AJAX Filters Preset"
|
814 |
msgstr "YITH AJAX Filters Preset"
|
815 |
|
816 |
-
#: includes/widgets/class
|
817 |
msgctxt "[ADMIN] Preset widget options"
|
818 |
msgid "Preset"
|
819 |
msgstr "Preset"
|
820 |
|
821 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
822 |
-
#: includes/widgets/class
|
823 |
msgctxt "[ADMIN] Preset widget options"
|
824 |
msgid ""
|
825 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -828,25 +823,25 @@ msgstr ""
|
|
828 |
"Bitte gehen Sie auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product "
|
829 |
"Filter -> Presets</a> und erstellen Sie Ihr erstes Preset"
|
830 |
|
831 |
-
#: includes/widgets/class
|
832 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
833 |
msgid "YITH AJAX Product Filter"
|
834 |
msgstr "YITH AJAX Product Filter"
|
835 |
|
836 |
-
#: includes/widgets/class
|
837 |
#, fuzzy
|
838 |
msgctxt ""
|
839 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
840 |
msgid "AND"
|
841 |
msgstr "UND"
|
842 |
|
843 |
-
#: includes/widgets/class
|
844 |
msgctxt "[Plugin Name]"
|
845 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
846 |
msgstr ""
|
847 |
"Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
|
848 |
|
849 |
-
#: plugin-options/filter-options.php:
|
850 |
#, fuzzy
|
851 |
msgctxt ""
|
852 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -855,7 +850,7 @@ msgstr ""
|
|
855 |
"UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
|
856 |
"übereinstimmen"
|
857 |
|
858 |
-
#: plugin-options/filter-options.php:
|
859 |
#, fuzzy
|
860 |
msgctxt ""
|
861 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -1145,21 +1140,21 @@ msgstr ""
|
|
1145 |
msgctxt "[ADMIN] Premium tab"
|
1146 |
msgid ""
|
1147 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1148 |
-
"view<br/>\
|
1149 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1150 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1151 |
-
"range (based on their budget availability)<br/>\
|
1152 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1153 |
"attributes available in your store, like color and size. For the color "
|
1154 |
"filter, you can either choose square or circular color swatches or use "
|
1155 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1156 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1157 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1158 |
-
"concentrate only on high-rated ones)<br/>\
|
1159 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1160 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1161 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1162 |
-
"filter products and view only those with a discount<br/>\
|
1163 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1164 |
"filter products based on their needs and exclude out-of-stock products from "
|
1165 |
"the list"
|
@@ -1285,73 +1280,73 @@ msgid ""
|
|
1285 |
"easier to share)"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
-
#: templates/admin/preset-edit.php:
|
1289 |
msgctxt "[Admin] Back link in new preset page"
|
1290 |
msgid "< back to preset list"
|
1291 |
msgstr "< zurück zur Preset-Liste"
|
1292 |
|
1293 |
-
#: templates/admin/preset-edit.php:
|
1294 |
msgctxt "[ADMIN] Title for new preset page"
|
1295 |
msgid "Edit filter preset"
|
1296 |
msgstr "Filter-Preset bearbeiten"
|
1297 |
|
1298 |
-
#: templates/admin/preset-edit.php:
|
1299 |
msgctxt "[ADMIN] Title for new preset page"
|
1300 |
msgid "Add new filter preset"
|
1301 |
msgstr "Neues Filter-Preset hinzufügen"
|
1302 |
|
1303 |
-
#: templates/admin/preset-edit.php:
|
1304 |
msgctxt "[ADMIN] Preset save message"
|
1305 |
msgid "Preset saved correctly"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: templates/admin/preset-edit.php:
|
1309 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1310 |
msgid "Save preset"
|
1311 |
msgstr "Preset speichern"
|
1312 |
|
1313 |
-
#: templates/admin/preset-empty-content.php:
|
1314 |
msgctxt "Alt text for empty preset image"
|
1315 |
msgid "Empty preset"
|
1316 |
msgstr "Leeres Preset"
|
1317 |
|
1318 |
#. translators: 1. Missing item name.
|
1319 |
-
#: templates/admin/preset-empty-content.php:
|
1320 |
msgctxt "[Admin] Preset table empty message"
|
1321 |
msgid "You don't have any %s yet."
|
1322 |
msgstr "Sie haben bis jetzt keine %s."
|
1323 |
|
1324 |
-
#: templates/admin/preset-filter-term.php:
|
1325 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1326 |
msgid "Label"
|
1327 |
msgstr "Label"
|
1328 |
|
1329 |
-
#: templates/admin/preset-filter-term.php:
|
1330 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1331 |
msgid "Tooltip"
|
1332 |
msgstr "Tooltip"
|
1333 |
|
1334 |
-
#: templates/admin/preset-filter-term.php:
|
1335 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1336 |
msgid "Color"
|
1337 |
msgstr "Farbe"
|
1338 |
|
1339 |
-
#: templates/admin/preset-filter.php:
|
1340 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1341 |
msgid "Save Filter"
|
1342 |
msgstr "Filter speichern"
|
1343 |
|
1344 |
-
#: templates/admin/preset-filter.php:
|
1345 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1346 |
msgid "Delete Filter"
|
1347 |
msgstr "Filter löschen"
|
1348 |
|
1349 |
-
#: templates/admin/preset-filters.php:
|
1350 |
msgctxt "[Admin] New filter button label"
|
1351 |
msgid "Add a new filter"
|
1352 |
msgstr "Einen neuen Filter hinzufügen"
|
1353 |
|
1354 |
-
#: templates/admin/preset-filters.php:
|
1355 |
msgctxt "[Admin] Add new filter in new preset page"
|
1356 |
msgid "+ Add filter"
|
1357 |
msgstr "+ Filter hinzufügen "
|
@@ -1363,12 +1358,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1363 |
msgid "See %d more filters"
|
1364 |
msgstr "Vor Filtern"
|
1365 |
|
1366 |
-
#: templates/admin/upgrade-note-modal.php:
|
1367 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1368 |
msgid "Use the new filter preset feature for your filters"
|
1369 |
msgstr "Nutzen Sie das neuen Filter-Preset-Feature für Ihren Filter "
|
1370 |
|
1371 |
-
#: templates/admin/upgrade-note-modal.php:
|
1372 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1373 |
msgid ""
|
1374 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1383,7 +1378,7 @@ msgstr ""
|
|
1383 |
"Widget verwenden."
|
1384 |
|
1385 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1386 |
-
#: templates/admin/upgrade-note-modal.php:
|
1387 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1388 |
msgid ""
|
1389 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1394,7 +1389,7 @@ msgstr ""
|
|
1394 |
"genutzt werden kann."
|
1395 |
|
1396 |
#. translators: 1. Url to docs.
|
1397 |
-
#: templates/admin/upgrade-note-modal.php:
|
1398 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1399 |
msgid ""
|
1400 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
@@ -1403,7 +1398,7 @@ msgstr ""
|
|
1403 |
"Wir empfehlen, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> um zu "
|
1404 |
"lernen, wie dieses neue Feature genutzt werden kann."
|
1405 |
|
1406 |
-
#: templates/admin/upgrade-note-modal.php:
|
1407 |
#, fuzzy
|
1408 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1409 |
msgid ""
|
@@ -1418,7 +1413,7 @@ msgstr ""
|
|
1418 |
"Tabelle übertragen.<br/>\n"
|
1419 |
"<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
|
1420 |
|
1421 |
-
#: templates/admin/upgrade-note-modal.php:
|
1422 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1423 |
msgid ""
|
1424 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1426,21 +1421,25 @@ msgid ""
|
|
1426 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1427 |
msgstr ""
|
1428 |
|
1429 |
-
#: templates/admin/upgrade-note-modal.php:
|
1430 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1431 |
msgid "Convert your widgets in a preset now"
|
1432 |
msgstr "Wandeln Sie Ihre Widgets jetzt in Presets um"
|
1433 |
|
1434 |
-
#: templates/admin/upgrade-note-modal.php:
|
1435 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1436 |
msgid "No thanks"
|
1437 |
msgstr "Nein Danke"
|
1438 |
|
1439 |
-
#: templates/filters/global/reset-filters.php:
|
1440 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1441 |
msgid "Reset filters"
|
1442 |
msgstr "Filter zurücksetzen"
|
1443 |
|
|
|
|
|
|
|
|
|
1444 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1445 |
#~ msgid "All"
|
1446 |
#~ msgstr "Alle"
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2021-03-02 11:03+0100\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
16 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
"X-Generator: Poedit 2.4.2\n"
|
18 |
|
19 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
20 |
msgid "Draft Preset"
|
21 |
msgstr "Preset Entwurf"
|
22 |
|
23 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
24 |
+
#: includes/functions-yith-wcan.php:132
|
25 |
msgid "Term"
|
26 |
msgstr "Begriff"
|
27 |
|
28 |
+
#: includes/functions-yith-wcan.php:98
|
29 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
30 |
msgid "Color"
|
31 |
msgstr "Farbe"
|
32 |
|
33 |
+
#: includes/functions-yith-wcan.php:132
|
34 |
msgid "Labels"
|
35 |
msgstr "Label"
|
36 |
|
37 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
38 |
msgid "Filter the list of products without reloading the page"
|
39 |
msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
|
40 |
|
41 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
42 |
msgid "Filters:"
|
43 |
msgstr "Filter:"
|
44 |
|
45 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
46 |
msgid "List"
|
47 |
msgstr "Liste"
|
48 |
|
49 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
50 |
msgid "Label"
|
51 |
msgstr "Label"
|
52 |
|
53 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
54 |
msgid "Dropdown"
|
55 |
msgstr "Dropdown"
|
56 |
|
57 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
58 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
59 |
msgid "Title"
|
60 |
msgstr "Titel"
|
61 |
|
62 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
63 |
msgid "Type:"
|
64 |
msgstr "Typ:"
|
65 |
|
66 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
67 |
msgid "Query Type:"
|
68 |
msgstr "Query-Typ"
|
69 |
|
70 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
71 |
msgid "OR"
|
72 |
msgstr "ODER"
|
73 |
|
74 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
75 |
msgid "Attribute:"
|
76 |
msgstr "Attribute:"
|
77 |
|
78 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
79 |
msgid "Display (default All):"
|
80 |
msgstr "Anzeige (Standard Alles):"
|
81 |
|
82 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
83 |
msgid "All (no hierarchical)"
|
84 |
msgstr "Alle (nicht hierarchisch)"
|
85 |
|
86 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
87 |
msgid "All (hierarchical)"
|
88 |
msgstr "Alles (hierarchisch)"
|
89 |
|
90 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
91 |
msgid "Only Parent"
|
92 |
msgstr "Nur Übergeordnete"
|
93 |
|
94 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
95 |
msgid "CSS custom class"
|
96 |
msgstr "Individuelle CSS-Klasse"
|
97 |
|
98 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
99 |
msgid "YITH AJAX Reset Filter"
|
100 |
msgstr "YITH AJAX-Filter zurücksetzen"
|
101 |
|
102 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
103 |
msgid "Reset All Filters"
|
104 |
msgstr "Alle Filter zurücksetzen"
|
105 |
|
106 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
107 |
msgid "Button Label"
|
108 |
msgstr "Button-Beschriftung"
|
109 |
|
139 |
"\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für Ihren E-"
|
140 |
"Commerce-Shop erhalten Sie bei <strong>YITH</strong></a>"
|
141 |
|
142 |
+
#: includes/class-yith-wcan-admin.php:107
|
143 |
msgctxt "[Admin] Copy confirmation message"
|
144 |
msgid "Content copied to your clipboard"
|
145 |
msgstr "Inhalt in die Zwischenablage kopiert"
|
146 |
|
147 |
+
#: includes/class-yith-wcan-admin.php:108
|
148 |
msgctxt "[Admin] Confirm filter delete message"
|
149 |
msgid "Are you sure you want to delete this item?"
|
150 |
msgstr "Sind Sie sicher, dass Sie dieses Element löschen möchten?"
|
151 |
|
152 |
#. translators: 1. Number of items that will be added.
|
153 |
+
#: includes/class-yith-wcan-admin.php:110
|
154 |
msgctxt "[Admin] Confirm add all terms message"
|
155 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
156 |
msgstr ""
|
157 |
"Sind Sie sicher, dass Sie fortfahren möchten? Dieser Vorgang wird %s "
|
158 |
"Elemente hinzufügen"
|
159 |
|
160 |
+
#: includes/class-yith-wcan-admin.php:111
|
161 |
msgctxt "[Admin] Error message"
|
162 |
msgid "\"Filter title\" is a required field"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
166 |
msgctxt "[Admin] Message shown when filter has empty title"
|
167 |
msgid "< no title >"
|
168 |
msgstr "< Kein Titel >"
|
169 |
|
170 |
+
#: includes/class-yith-wcan-admin.php:115
|
171 |
msgctxt "[Admin] Media library title, when selecting images"
|
172 |
msgid "Select media you want to use"
|
173 |
msgstr "Die zu verwendenden Medien auswählen"
|
174 |
|
175 |
+
#: includes/class-yith-wcan-admin.php:116
|
176 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
177 |
msgid "Use this media"
|
178 |
msgstr "Dieses Medium verwenden"
|
179 |
|
180 |
+
#: includes/class-yith-wcan-admin.php:184
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "Filter presets"
|
183 |
msgstr "Filter-Presets"
|
184 |
|
185 |
+
#: includes/class-yith-wcan-admin.php:185
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "General settings"
|
188 |
msgstr "Allgemeine Einstellungen"
|
189 |
|
190 |
+
#: includes/class-yith-wcan-admin.php:186
|
191 |
#, fuzzy
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "SEO"
|
194 |
msgstr "SEO"
|
195 |
|
196 |
+
#: includes/class-yith-wcan-admin.php:187
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "Premium Version"
|
199 |
msgstr "Premium-Version"
|
200 |
|
201 |
+
#: includes/class-yith-wcan-admin.php:191
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Legacy"
|
204 |
msgstr "Legacy"
|
205 |
|
206 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
207 |
msgctxt "[Admin] Plugin description"
|
208 |
msgid ""
|
209 |
"It allows your users to find the product they are looking for as quickly as "
|
212 |
"Ermöglicht Ihren Benutzern, das gesuchte Produkt so schnell wie möglich zu "
|
213 |
"finden."
|
214 |
|
215 |
+
#: includes/class-yith-wcan-admin.php:211
|
216 |
msgctxt "[HELP TAB] Video title"
|
217 |
msgid ""
|
218 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
219 |
"the shop page:</b>"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: includes/class-yith-wcan-admin.php:329
|
223 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
224 |
msgid "item"
|
225 |
msgstr "Artikel"
|
226 |
|
227 |
+
#: includes/class-yith-wcan-admin.php:330
|
228 |
msgctxt "[Admin] Preset table empty message second line"
|
229 |
msgid "But don't worry, here you can create your first one!"
|
230 |
msgstr "Aber keine Sorge, hier können Sie eine erste erstellen!"
|
231 |
|
232 |
+
#: includes/class-yith-wcan-admin.php:480
|
233 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
234 |
msgid "Clear Product Filter transients"
|
235 |
msgstr "Produktfilter-Tansients löschen"
|
236 |
|
237 |
+
#: includes/class-yith-wcan-admin.php:486
|
238 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
239 |
msgid "Run filter widgets upgrade"
|
240 |
msgstr "Upgrade der Filter-Widgets ausführen"
|
241 |
|
242 |
+
#: includes/class-yith-wcan-admin.php:481
|
243 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
244 |
msgid "Clear"
|
245 |
msgstr "Löschen"
|
246 |
|
247 |
+
#: includes/class-yith-wcan-admin.php:487
|
248 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
249 |
msgid "Run"
|
250 |
msgstr "Start"
|
251 |
|
252 |
+
#: includes/class-yith-wcan-admin.php:482
|
253 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
254 |
msgid ""
|
255 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
261 |
"Konfiguration Ihres Produkts geändert haben und die Filter nicht die "
|
262 |
"erwarteten Ergebnisse anzeigen. "
|
263 |
|
264 |
+
#: includes/class-yith-wcan-admin.php:488
|
265 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
266 |
msgid ""
|
267 |
"This will create a preset for any sidebar of your shop containing filter "
|
271 |
"Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
|
272 |
"Spezifikationen der Widgets entspricht"
|
273 |
|
274 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
275 |
msgctxt "[Admin] Filter edit form"
|
276 |
msgid "Taxonomy"
|
277 |
msgstr "Taxonomie"
|
278 |
|
279 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
280 |
msgctxt "[Admin] Filter edit form"
|
281 |
msgid "Checkbox"
|
282 |
msgstr "Checkbox"
|
283 |
|
284 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
285 |
msgctxt "[Admin] Filter edit form"
|
286 |
msgid "Select"
|
287 |
msgstr "Auswahl"
|
288 |
|
289 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
290 |
msgctxt "[Admin] Filter edit form"
|
291 |
msgid "Text"
|
292 |
msgstr "Text"
|
293 |
|
294 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
295 |
msgctxt "[Admin] Filter edit form"
|
296 |
msgid "Color Swatches"
|
297 |
msgstr "Farbmuster"
|
298 |
|
299 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Label"
|
302 |
msgstr "Label"
|
311 |
msgid "Enter a name to identify this filter"
|
312 |
msgstr "Geben Sie einen Namen ein, um diesen Filter zu identifizieren"
|
313 |
|
314 |
+
#: plugin-options/filter-options.php:40
|
315 |
msgctxt "[Admin] Filter edit form"
|
316 |
msgid "Filter for"
|
317 |
msgstr "Filtern nach"
|
318 |
|
319 |
+
#: plugin-options/filter-options.php:44
|
320 |
msgctxt "[Admin] Filter edit form"
|
321 |
msgid "Select the parameters you wish to filter for"
|
322 |
msgstr "Wählen Sie die Parameter, nach denen Sie filtern möchten"
|
323 |
|
324 |
+
#: plugin-options/filter-options.php:49
|
325 |
msgctxt "[Admin] Filter edit form"
|
326 |
msgid "Choose taxonomy"
|
327 |
msgstr "Taxonomie wählen"
|
328 |
|
329 |
+
#: plugin-options/filter-options.php:53
|
330 |
msgctxt "[Admin] Filter edit form"
|
331 |
msgid "Select which taxonomy to use for this filter"
|
332 |
msgstr "Wählen Sie, welche Taxonomie für diesen Filter verwendet werden soll"
|
333 |
|
334 |
+
#: plugin-options/filter-options.php:58
|
335 |
msgctxt "[Admin] Filter edit form"
|
336 |
msgid "Auto-populate with all terms"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: plugin-options/filter-options.php:60
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid ""
|
342 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
345 |
"well.</span>"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: plugin-options/filter-options.php:69
|
349 |
msgctxt "[Admin] Filter edit form"
|
350 |
msgid "Choose terms"
|
351 |
msgstr "Begriffe wählen"
|
352 |
|
353 |
+
#: plugin-options/filter-options.php:74
|
354 |
msgctxt "[Admin] Filter edit form"
|
355 |
msgid "Select which terms to use for filtering"
|
356 |
msgstr ""
|
357 |
"Wählen Sie aus, welche Begriffe für die Filterung verwendet werden sollen"
|
358 |
|
359 |
+
#: plugin-options/filter-options.php:78
|
360 |
msgctxt "[Admin] Filter edit form"
|
361 |
msgid "Filter type"
|
362 |
msgstr "Filter-Typ"
|
363 |
|
364 |
+
#: plugin-options/filter-options.php:82
|
365 |
msgctxt "[Admin] Filter edit form"
|
366 |
msgid "Select the filter type for this filter"
|
367 |
msgstr "Wählen Sie den Filtertyp für diesen Filter"
|
368 |
|
369 |
+
#: plugin-options/filter-options.php:86
|
370 |
#, fuzzy
|
371 |
msgctxt "[Admin] Filter edit form"
|
372 |
msgid "Labels"
|
373 |
msgstr "Label"
|
374 |
|
375 |
+
#: plugin-options/filter-options.php:89
|
376 |
#, fuzzy
|
377 |
msgctxt "[Admin] Filter edit form"
|
378 |
msgid "Show below"
|
379 |
msgstr "Ergebnisse anzeigen"
|
380 |
|
381 |
+
#: plugin-options/filter-options.php:90
|
382 |
#, fuzzy
|
383 |
msgctxt "[Admin] Filter edit form"
|
384 |
msgid "Show on the right"
|
385 |
msgstr "Anzahl der Elemente anzeigen"
|
386 |
|
387 |
+
#: plugin-options/filter-options.php:91
|
388 |
msgctxt "[Admin] Filter edit form"
|
389 |
msgid "Hide"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: plugin-options/filter-options.php:93
|
393 |
#, fuzzy
|
394 |
msgctxt "[Admin] Filter edit form"
|
395 |
msgid "Choose if and where to show the label inside your filter"
|
396 |
msgstr "Wählen Sie den Stil des Filters innerhalb von Widgets "
|
397 |
|
398 |
+
#: plugin-options/filter-options.php:97
|
399 |
msgctxt "[Admin] Filter edit form"
|
400 |
msgid "Columns number"
|
401 |
msgstr "Anzahl der Spalten"
|
402 |
|
403 |
+
#: plugin-options/filter-options.php:102
|
404 |
msgctxt "[Admin] Filter edit form"
|
405 |
msgid "Set the number of items per row you want to show for this design"
|
406 |
msgstr ""
|
407 |
"Stellen Sie die Anzahl der Elemente pro Zeile ein, die Sie für dieses Design "
|
408 |
"anzeigen möchten"
|
409 |
|
410 |
+
#: plugin-options/filter-options.php:106
|
411 |
msgctxt "[Admin] Filter edit form"
|
412 |
msgid "Customize terms"
|
413 |
msgstr "Begriffe anpassen"
|
414 |
|
415 |
+
#: plugin-options/filter-options.php:109
|
416 |
msgctxt "[Admin] Filter edit form"
|
417 |
msgid ""
|
418 |
"Configure your terms individually; system will otherwise use default labels/"
|
426 |
"this option and use the boxes below</span>"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: plugin-options/filter-options.php:119
|
430 |
#, fuzzy
|
431 |
msgctxt "[Admin] Filter edit form"
|
432 |
msgid "Terms options"
|
433 |
msgstr "Sortierungsoptionen"
|
434 |
|
435 |
+
#: plugin-options/filter-options.php:125
|
436 |
msgctxt "[Admin] Filter edit form"
|
437 |
msgid "Show hierarchy"
|
438 |
msgstr "Hierarchie anzeigen"
|
439 |
|
440 |
+
#: plugin-options/filter-options.php:128
|
441 |
msgctxt "[Admin] Filter edit form"
|
442 |
msgid "No, show all terms in same level"
|
443 |
msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
|
444 |
|
445 |
+
#: plugin-options/filter-options.php:129
|
446 |
msgctxt "[Admin] Filter edit form"
|
447 |
msgid "No, show only parent terms"
|
448 |
msgstr "Nein, nur übergeordnete Begriffe anzeigen"
|
449 |
|
450 |
+
#: plugin-options/filter-options.php:130
|
451 |
msgctxt "[Admin] Filter edit form"
|
452 |
msgid "Yes"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: plugin-options/filter-options.php:132
|
456 |
msgctxt "[Admin] Filter edit form"
|
457 |
msgid "Choose how to show terms hierarchy"
|
458 |
msgstr "Wählen Sie, wie die Begriffshierarchie angezeigt werden soll"
|
459 |
|
460 |
+
#: plugin-options/filter-options.php:136
|
461 |
msgctxt "[Admin] Filter edit form"
|
462 |
msgid "Allow multiple selection"
|
463 |
msgstr "Mehrfachauswahl zulassen"
|
464 |
|
465 |
+
#: plugin-options/filter-options.php:138
|
466 |
msgctxt "[Admin] Filter edit form"
|
467 |
msgid "Enable if the user can select multiple terms when filtering products"
|
468 |
msgstr ""
|
469 |
"Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
|
470 |
"auswählen kann"
|
471 |
|
472 |
+
#: plugin-options/filter-options.php:142
|
473 |
msgctxt "[Admin] Filter edit form"
|
474 |
msgid "Multiselect relation"
|
475 |
msgstr "Multiselect-Beziehung"
|
476 |
|
477 |
+
#: plugin-options/filter-options.php:148
|
478 |
msgctxt "[Admin] Filter edit form"
|
479 |
msgid "Choose how multiple terms selection should behave"
|
480 |
msgstr "Wählen Sie, wie sich die Auswahl mehrerer Begriffe verhalten soll"
|
481 |
|
482 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
483 |
msgctxt "[Admin] Filter edit form, sorting options"
|
484 |
msgid "Default sorting"
|
485 |
msgstr "Standard-Sortierung"
|
486 |
|
487 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
488 |
msgctxt "[Admin] Filter edit form, sorting options"
|
489 |
msgid "Sort by popularity"
|
490 |
msgstr "Nach Beliebtheit sortieren"
|
491 |
|
492 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
493 |
msgctxt "[Admin] Filter edit form, sorting options"
|
494 |
msgid "Sort by average rating"
|
495 |
msgstr "Best bewertete zuerst"
|
496 |
|
497 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
498 |
msgctxt "[Admin] Filter edit form, sorting options"
|
499 |
msgid "Sort by latest"
|
500 |
msgstr "Neueste zuerst"
|
501 |
|
502 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
503 |
msgctxt "[Admin] Filter edit form, sorting options"
|
504 |
msgid "Sort by price: low to high"
|
505 |
msgstr "Sortieren nach Preis: Preis aufsteigend"
|
506 |
|
507 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
508 |
msgctxt "[Admin] Filter edit form, sorting options"
|
509 |
msgid "Sort by price: high to low"
|
510 |
msgstr "Sortieren nach Preis: Preis absteigend"
|
511 |
|
512 |
+
#: includes/class-yith-wcan-filter.php:116
|
513 |
msgctxt "[Admin] Default filter title"
|
514 |
msgid "New filter"
|
515 |
msgstr "Neuer Filter"
|
516 |
|
517 |
+
#: includes/class-yith-wcan-frontend.php:591
|
518 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
519 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
520 |
msgid "All"
|
521 |
msgstr "Alle"
|
522 |
|
523 |
+
#: includes/class-yith-wcan-frontend.php:592
|
524 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
525 |
msgid "Search..."
|
526 |
msgstr "Suchen..."
|
527 |
|
528 |
+
#: includes/class-yith-wcan-frontend.php:593
|
529 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
530 |
msgid "No item found"
|
531 |
msgstr "Kein Artikel gefunden"
|
532 |
|
533 |
#. translators: 1. Number of items to show.
|
534 |
+
#: includes/class-yith-wcan-frontend.php:595
|
535 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
536 |
msgid "Show %d more"
|
537 |
msgstr "%d mehr anzeigen"
|
538 |
|
539 |
+
#: includes/class-yith-wcan-frontend.php:596
|
540 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
541 |
msgid "Close"
|
542 |
msgstr "Schließen"
|
543 |
|
544 |
+
#: includes/class-yith-wcan-frontend.php:597
|
545 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
546 |
msgid "Save"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: includes/class-yith-wcan-frontend.php:598
|
550 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
551 |
msgid "Show results"
|
552 |
msgstr "Ergebnisse anzeigen"
|
553 |
|
554 |
+
#: includes/class-yith-wcan-frontend.php:599
|
555 |
msgctxt ""
|
556 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
557 |
"selection"
|
558 |
msgid "Clear"
|
559 |
msgstr "Löschen"
|
560 |
|
561 |
+
#: includes/class-yith-wcan-frontend.php:600
|
562 |
msgctxt ""
|
563 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
564 |
"selection"
|
565 |
msgid "Clear All"
|
566 |
msgstr "Alle löschen"
|
567 |
|
568 |
+
#: includes/class-yith-wcan-install.php:95
|
569 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
570 |
msgid "Default preset"
|
571 |
msgstr "Standard-Preset"
|
572 |
|
573 |
#. translators: 1. Taxonomy name.
|
574 |
+
#: includes/class-yith-wcan-install.php:285
|
575 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
576 |
msgid "Filter by %s"
|
577 |
msgstr "Nach %s filtern"
|
578 |
|
579 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
580 |
#, fuzzy
|
581 |
msgctxt "[Admin] Label in new preset page"
|
582 |
msgid "Default"
|
592 |
msgid "Enter a name to identify this filter preset"
|
593 |
msgstr "Geben Sie einen Namen ein, um dieses Filter-Preset zu identifizieren"
|
594 |
|
595 |
+
#: templates/admin/preset-filters.php:22
|
596 |
msgctxt "[Admin] Label in new preset page"
|
597 |
msgid "Filters of this preset"
|
598 |
msgstr "Filter in diesem Preset"
|
599 |
|
600 |
+
#: includes/class-yith-wcan-presets.php:95
|
601 |
+
#: includes/class-yith-wcan-presets.php:100
|
602 |
msgctxt "[Admin] name of presets custom post type"
|
603 |
msgid "Filter presets"
|
604 |
msgstr "Filter-Presets"
|
605 |
|
606 |
+
#: includes/class-yith-wcan-presets.php:96
|
607 |
msgctxt "[Admin] singular name of presets custom post type"
|
608 |
msgid "Filter preset"
|
609 |
msgstr "Filter-Preset"
|
610 |
|
611 |
+
#: includes/class-yith-wcan-presets.php:97
|
612 |
msgctxt "[Admin] add new filter preset label"
|
613 |
msgid "Add new preset"
|
614 |
msgstr "Neues Preset hinzufügen"
|
615 |
|
616 |
+
#: includes/class-yith-wcan-presets.php:139
|
617 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
618 |
msgid "Convert widgets in a preset"
|
619 |
msgstr "Widgets in eine Preset konvertieren"
|
620 |
|
621 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
622 |
msgctxt ""
|
623 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
624 |
"not exist"
|
626 |
msgstr "Ungültige Voreinstellung."
|
627 |
|
628 |
#. translators: 1. Title of original preset.
|
629 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
630 |
msgctxt "[ADMIN] Title of the cloned preset"
|
631 |
msgid "%s - Copy"
|
632 |
msgstr "%s - Kopieren"
|
633 |
|
634 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
635 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
636 |
msgid "YITH AJAX Filters Preset"
|
637 |
msgstr "YITH AJAX-Filter Presets"
|
638 |
|
639 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
640 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
641 |
msgid "YITH AJAX Filters Reset Button"
|
642 |
msgstr "YITH AJAX-Filter Reset-Button"
|
643 |
|
644 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
645 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
646 |
msgctxt "[ELEMENTOR] Default preset option"
|
647 |
msgid "Choose an option"
|
648 |
msgstr "Wählen Sie eine Option"
|
649 |
|
650 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
651 |
msgctxt "[ELEMENTOR] Section title"
|
652 |
msgid "Filters"
|
653 |
msgstr "Filter"
|
654 |
|
655 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
656 |
msgctxt "[ELEMENTOR] Section title"
|
657 |
msgid "General"
|
658 |
msgstr "Allgemein"
|
659 |
|
660 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
661 |
msgctxt "[ELEMENTOR] Control label"
|
662 |
msgid "Preset"
|
663 |
msgstr "Preset"
|
664 |
|
665 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
666 |
msgctxt "[ELEMENTOR] Widget description"
|
667 |
msgid ""
|
668 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
670 |
"Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
|
671 |
"platziert wird"
|
672 |
|
673 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
674 |
msgctxt "[ELEMENTOR] Widget description"
|
675 |
msgid ""
|
676 |
"It will allow users to reset the filer selection; it will only appear when "
|
679 |
"Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
|
680 |
"erscheint nur, wenn ein Filter aktiv ist. "
|
681 |
|
682 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
683 |
msgctxt "[ELEMENTOR] Widget description"
|
684 |
msgid ""
|
685 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
689 |
"innerhalb Ihrer Seite zu platzieren, wenn die Option \"Position des Buttons "
|
690 |
"zurücksetzen\" für den Loop Ihres Produkts nicht funktioniert "
|
691 |
|
692 |
+
#: includes/functions-yith-wcan.php:112
|
693 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
694 |
msgid "Color 1"
|
695 |
msgstr "Farbe 2"
|
696 |
|
697 |
+
#: includes/functions-yith-wcan.php:112
|
698 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
699 |
msgid "Color 2"
|
700 |
msgstr "Farbe 2"
|
701 |
|
702 |
+
#: includes/functions-yith-wcan.php:1026
|
703 |
msgctxt "[FRONTEND] Star rating template"
|
704 |
msgid "star"
|
705 |
msgid_plural "stars"
|
707 |
msgstr[1] "Sternen"
|
708 |
|
709 |
#. translators: 1. Rating.
|
710 |
+
#: includes/functions-yith-wcan.php:1041
|
711 |
msgctxt "[FRONTEND] Star rating label"
|
712 |
msgid "Rated %s out of 5"
|
713 |
msgstr "Bewertet mit %s von 5"
|
714 |
|
715 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
716 |
msgctxt "[GUTENBERG]: block name"
|
717 |
msgid "YITH AJAX Filters Preset"
|
718 |
msgstr "YITH AJAX Filters Preset"
|
719 |
|
720 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
721 |
msgctxt "[GUTENBERG]: block name"
|
722 |
msgid "YITH Reset Filters Button"
|
723 |
msgstr "YITH \"Filter zurücksetzen\"-Button"
|
724 |
|
725 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
726 |
msgctxt "[GUTENBERG]: block description"
|
727 |
msgid "Show filters from a preset"
|
728 |
msgstr "Filter aus einem Preset anzeigen"
|
729 |
|
730 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
731 |
msgctxt "[GUTENBERG]: block description"
|
732 |
msgid ""
|
733 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
741 |
"zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" für den "
|
742 |
"Loop Ihres Produkts nicht funktioniert"
|
743 |
|
744 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
745 |
msgctxt "[GUTENBERG]: attribute description"
|
746 |
msgid "Preset"
|
747 |
msgstr "Preset"
|
748 |
|
749 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
750 |
msgctxt "[Admin] Preset table column header"
|
751 |
msgid "Preset name"
|
752 |
msgstr "Preset-Name"
|
753 |
|
754 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
755 |
msgctxt "[Admin] Preset table column header"
|
756 |
msgid "Shortcode"
|
757 |
msgstr "Shortcode"
|
758 |
|
759 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
760 |
msgctxt "[Admin] Preset edit action label"
|
761 |
msgid "Edit this preset"
|
762 |
msgstr "Dieses Preset bearbeiten"
|
763 |
|
764 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
765 |
msgctxt "[Admin] Preset clone action label"
|
766 |
msgid "Clone this preset"
|
767 |
msgstr "Dieses Preset kopieren"
|
768 |
|
769 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
770 |
msgctxt "[Admin] Preset delete action label"
|
771 |
msgid "Delete this preset"
|
772 |
msgstr "Dieses Preset löschen"
|
773 |
|
774 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
775 |
msgctxt "[Admin] Preset delete confirm label"
|
776 |
msgid "Are you sure you want to delete this preset?"
|
777 |
msgstr "Sind Sie sicher, dass Sie dieses Preset löschen möchten?"
|
778 |
|
779 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
780 |
msgctxt "[Admin] on-off yes"
|
781 |
msgid "YES"
|
782 |
msgstr "JA"
|
783 |
|
784 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
785 |
msgctxt "[Admin] on-off no"
|
786 |
msgid "NO"
|
787 |
msgstr "NEIN"
|
788 |
|
789 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
790 |
msgctxt ""
|
791 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
792 |
msgid "filter preset"
|
793 |
msgstr "Filter-Preset"
|
794 |
|
795 |
+
#: templates/admin/preset-filters.php:31
|
796 |
msgctxt ""
|
797 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
798 |
msgid "filter"
|
799 |
msgstr "Filter"
|
800 |
|
801 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
802 |
msgctxt "[Admin] New preset button label"
|
803 |
msgid "Create a new preset"
|
804 |
msgstr "Neues Preset erstellen"
|
805 |
|
806 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
807 |
msgctxt "[ADMIN] Name of the preset widget"
|
808 |
msgid "YITH AJAX Filters Preset"
|
809 |
msgstr "YITH AJAX Filters Preset"
|
810 |
|
811 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
812 |
msgctxt "[ADMIN] Preset widget options"
|
813 |
msgid "Preset"
|
814 |
msgstr "Preset"
|
815 |
|
816 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
817 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
818 |
msgctxt "[ADMIN] Preset widget options"
|
819 |
msgid ""
|
820 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
823 |
"Bitte gehen Sie auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product "
|
824 |
"Filter -> Presets</a> und erstellen Sie Ihr erstes Preset"
|
825 |
|
826 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
827 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
828 |
msgid "YITH AJAX Product Filter"
|
829 |
msgstr "YITH AJAX Product Filter"
|
830 |
|
831 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
832 |
#, fuzzy
|
833 |
msgctxt ""
|
834 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
835 |
msgid "AND"
|
836 |
msgstr "UND"
|
837 |
|
838 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
839 |
msgctxt "[Plugin Name]"
|
840 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
841 |
msgstr ""
|
842 |
"Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
|
843 |
|
844 |
+
#: plugin-options/filter-options.php:145
|
845 |
#, fuzzy
|
846 |
msgctxt ""
|
847 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
850 |
"UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
|
851 |
"übereinstimmen"
|
852 |
|
853 |
+
#: plugin-options/filter-options.php:146
|
854 |
#, fuzzy
|
855 |
msgctxt ""
|
856 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
1140 |
msgctxt "[ADMIN] Premium tab"
|
1141 |
msgid ""
|
1142 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1143 |
+
"view<br/>\n"
|
1144 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1145 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1146 |
+
"range (based on their budget availability)<br/>\n"
|
1147 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1148 |
"attributes available in your store, like color and size. For the color "
|
1149 |
"filter, you can either choose square or circular color swatches or use "
|
1150 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1151 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1152 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1153 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1154 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1155 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1156 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1157 |
+
"filter products and view only those with a discount<br/>\n"
|
1158 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1159 |
"filter products based on their needs and exclude out-of-stock products from "
|
1160 |
"the list"
|
1280 |
"easier to share)"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
+
#: templates/admin/preset-edit.php:31
|
1284 |
msgctxt "[Admin] Back link in new preset page"
|
1285 |
msgid "< back to preset list"
|
1286 |
msgstr "< zurück zur Preset-Liste"
|
1287 |
|
1288 |
+
#: templates/admin/preset-edit.php:38
|
1289 |
msgctxt "[ADMIN] Title for new preset page"
|
1290 |
msgid "Edit filter preset"
|
1291 |
msgstr "Filter-Preset bearbeiten"
|
1292 |
|
1293 |
+
#: templates/admin/preset-edit.php:40
|
1294 |
msgctxt "[ADMIN] Title for new preset page"
|
1295 |
msgid "Add new filter preset"
|
1296 |
msgstr "Neues Filter-Preset hinzufügen"
|
1297 |
|
1298 |
+
#: templates/admin/preset-edit.php:47
|
1299 |
msgctxt "[ADMIN] Preset save message"
|
1300 |
msgid "Preset saved correctly"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: templates/admin/preset-edit.php:93
|
1304 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1305 |
msgid "Save preset"
|
1306 |
msgstr "Preset speichern"
|
1307 |
|
1308 |
+
#: templates/admin/preset-empty-content.php:29
|
1309 |
msgctxt "Alt text for empty preset image"
|
1310 |
msgid "Empty preset"
|
1311 |
msgstr "Leeres Preset"
|
1312 |
|
1313 |
#. translators: 1. Missing item name.
|
1314 |
+
#: templates/admin/preset-empty-content.php:35
|
1315 |
msgctxt "[Admin] Preset table empty message"
|
1316 |
msgid "You don't have any %s yet."
|
1317 |
msgstr "Sie haben bis jetzt keine %s."
|
1318 |
|
1319 |
+
#: templates/admin/preset-filter-term.php:30
|
1320 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1321 |
msgid "Label"
|
1322 |
msgstr "Label"
|
1323 |
|
1324 |
+
#: templates/admin/preset-filter-term.php:35
|
1325 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1326 |
msgid "Tooltip"
|
1327 |
msgstr "Tooltip"
|
1328 |
|
1329 |
+
#: templates/admin/preset-filter-term.php:41
|
1330 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1331 |
msgid "Color"
|
1332 |
msgstr "Farbe"
|
1333 |
|
1334 |
+
#: templates/admin/preset-filter.php:91
|
1335 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1336 |
msgid "Save Filter"
|
1337 |
msgstr "Filter speichern"
|
1338 |
|
1339 |
+
#: templates/admin/preset-filter.php:92
|
1340 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1341 |
msgid "Delete Filter"
|
1342 |
msgstr "Filter löschen"
|
1343 |
|
1344 |
+
#: templates/admin/preset-filters.php:33
|
1345 |
msgctxt "[Admin] New filter button label"
|
1346 |
msgid "Add a new filter"
|
1347 |
msgstr "Einen neuen Filter hinzufügen"
|
1348 |
|
1349 |
+
#: templates/admin/preset-filters.php:57
|
1350 |
msgctxt "[Admin] Add new filter in new preset page"
|
1351 |
msgid "+ Add filter"
|
1352 |
msgstr "+ Filter hinzufügen "
|
1358 |
msgid "See %d more filters"
|
1359 |
msgstr "Vor Filtern"
|
1360 |
|
1361 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1362 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1363 |
msgid "Use the new filter preset feature for your filters"
|
1364 |
msgstr "Nutzen Sie das neuen Filter-Preset-Feature für Ihren Filter "
|
1365 |
|
1366 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1367 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1368 |
msgid ""
|
1369 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1378 |
"Widget verwenden."
|
1379 |
|
1380 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1381 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1382 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1383 |
msgid ""
|
1384 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1389 |
"genutzt werden kann."
|
1390 |
|
1391 |
#. translators: 1. Url to docs.
|
1392 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1393 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1394 |
msgid ""
|
1395 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1398 |
"Wir empfehlen, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> um zu "
|
1399 |
"lernen, wie dieses neue Feature genutzt werden kann."
|
1400 |
|
1401 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1402 |
#, fuzzy
|
1403 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1404 |
msgid ""
|
1413 |
"Tabelle übertragen.<br/>\n"
|
1414 |
"<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
|
1415 |
|
1416 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1417 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1418 |
msgid ""
|
1419 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1421 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1425 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1426 |
msgid "Convert your widgets in a preset now"
|
1427 |
msgstr "Wandeln Sie Ihre Widgets jetzt in Presets um"
|
1428 |
|
1429 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1430 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1431 |
msgid "No thanks"
|
1432 |
msgstr "Nein Danke"
|
1433 |
|
1434 |
+
#: templates/filters/global/reset-filters.php:24
|
1435 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1436 |
msgid "Reset filters"
|
1437 |
msgstr "Filter zurücksetzen"
|
1438 |
|
1439 |
+
#~ msgctxt "[Admin] Menu title"
|
1440 |
+
#~ msgid "Ajax Product Filter"
|
1441 |
+
#~ msgstr "AJAX Produkt-Filter "
|
1442 |
+
|
1443 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1444 |
#~ msgid "All"
|
1445 |
#~ msgstr "Alle"
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2021-02-12 13:32:43+0000\n"
|
10 |
"Language: el_GR\n"
|
11 |
"MIME-Version: 1.0\n"
|
@@ -14,94 +14,94 @@ msgstr ""
|
|
14 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
-
#: includes/data-stores/class
|
18 |
msgid "Draft Preset"
|
19 |
msgstr "Προρύθμιση Πρόχειρου"
|
20 |
|
21 |
-
#: includes/functions
|
22 |
-
#: includes/functions
|
23 |
msgid "Term"
|
24 |
msgstr "Όρος"
|
25 |
|
26 |
-
#: includes/functions
|
27 |
-
#: includes/widgets/class
|
28 |
msgid "Color"
|
29 |
msgstr "Χρώμα"
|
30 |
|
31 |
-
#: includes/functions
|
32 |
msgid "Labels"
|
33 |
msgstr "Επιγραφές"
|
34 |
|
35 |
-
#: includes/widgets/class
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Ταξινομήστε τη λίστα προϊόντων χωρίς να γίνει επαναφόρτωση της σελίδας"
|
38 |
|
39 |
-
#: includes/widgets/class
|
40 |
msgid "Filters:"
|
41 |
msgstr "Φίλτρα:"
|
42 |
|
43 |
-
#: includes/widgets/class
|
44 |
msgid "List"
|
45 |
msgstr "Λίστα"
|
46 |
|
47 |
-
#: includes/widgets/class
|
48 |
msgid "Label"
|
49 |
msgstr "Επιγραφή"
|
50 |
|
51 |
-
#: includes/widgets/class
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Αναδιπλούμενη λίστα"
|
54 |
|
55 |
-
#: includes/widgets/class
|
56 |
-
#: includes/widgets/class
|
57 |
msgid "Title"
|
58 |
msgstr "Τίτλος"
|
59 |
|
60 |
-
#: includes/widgets/class
|
61 |
msgid "Type:"
|
62 |
msgstr "Τύπος:"
|
63 |
|
64 |
-
#: includes/widgets/class
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Τύπος Ερωτήματος:"
|
67 |
|
68 |
-
#: includes/widgets/class
|
69 |
msgid "OR"
|
70 |
msgstr "Ή"
|
71 |
|
72 |
-
#: includes/widgets/class
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Ιδιότητα:"
|
75 |
|
76 |
-
#: includes/widgets/class
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Εμφάνιση (προεπιλεγμένα Όλα):"
|
79 |
|
80 |
-
#: includes/widgets/class
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Όλοι (μη ιεραρχικά)"
|
83 |
|
84 |
-
#: includes/widgets/class
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Όλοι (ιεραρχικά)"
|
87 |
|
88 |
-
#: includes/widgets/class
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Μόνο Γονικός"
|
91 |
|
92 |
-
#: includes/widgets/class
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "Κλάση προσαρμοσμένου CSS"
|
95 |
|
96 |
-
#: includes/widgets/class
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr "YITH AJAX Επαναφορά Φίλτρου"
|
99 |
|
100 |
-
#: includes/widgets/class
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Επαναφορά Όλων των Φίλτρων"
|
103 |
|
104 |
-
#: includes/widgets/class
|
105 |
msgid "Button Label"
|
106 |
msgstr "Επιγραφή Κουμπιού"
|
107 |
|
@@ -138,76 +138,71 @@ msgstr ""
|
|
138 |
"περισσότερα πρόσθετα για το ηλεκτρονικό σας κατάστημα στο <strong>YITH</"
|
139 |
"strong></a>"
|
140 |
|
141 |
-
#: includes/class
|
142 |
msgctxt "[Admin] Copy confirmation message"
|
143 |
msgid "Content copied to your clipboard"
|
144 |
msgstr "Έγινε αντιγραφή περιεχομένου σε πρόχειρο"
|
145 |
|
146 |
-
#: includes/class
|
147 |
msgctxt "[Admin] Confirm filter delete message"
|
148 |
msgid "Are you sure you want to delete this item?"
|
149 |
msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αντικείμενο;"
|
150 |
|
151 |
#. translators: 1. Number of items that will be added.
|
152 |
-
#: includes/class
|
153 |
msgctxt "[Admin] Confirm add all terms message"
|
154 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
155 |
msgstr ""
|
156 |
"Είστε σίγουροι ότι θέλετε να προχωρήσετε; Αυτή η διαδικασία θα προσθέσει %s "
|
157 |
"αντικείμενα"
|
158 |
|
159 |
-
#: includes/class
|
160 |
msgctxt "[Admin] Error message"
|
161 |
msgid "\"Filter title\" is a required field"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: includes/class
|
165 |
msgctxt "[Admin] Message shown when filter has empty title"
|
166 |
msgid "< no title >"
|
167 |
msgstr "< χωρίς τίτλο >"
|
168 |
|
169 |
-
#: includes/class
|
170 |
msgctxt "[Admin] Media library title, when selecting images"
|
171 |
msgid "Select media you want to use"
|
172 |
msgstr "Επιλέξτε τα πολυμέσα που θέλετε να χρησιμοποιήσετε"
|
173 |
|
174 |
-
#: includes/class
|
175 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
176 |
msgid "Use this media"
|
177 |
msgstr "Χρησιμοποιήστε αυτά τα πολυμέσα"
|
178 |
|
179 |
-
#: includes/class
|
180 |
msgctxt "[Admin] tab name"
|
181 |
msgid "Filter presets"
|
182 |
msgstr "Προρυθμίσεις φίλτρου"
|
183 |
|
184 |
-
#: includes/class
|
185 |
msgctxt "[Admin] tab name"
|
186 |
msgid "General settings"
|
187 |
msgstr "Γενικές ρυθμίσεις"
|
188 |
|
189 |
-
#: includes/class
|
190 |
#, fuzzy
|
191 |
msgctxt "[Admin] tab name"
|
192 |
msgid "SEO"
|
193 |
msgstr "SEO"
|
194 |
|
195 |
-
#: includes/class
|
196 |
msgctxt "[Admin] tab name"
|
197 |
msgid "Premium Version"
|
198 |
msgstr "Premium Έκδοση"
|
199 |
|
200 |
-
#: includes/class
|
201 |
msgctxt "[Admin] tab name"
|
202 |
msgid "Legacy"
|
203 |
msgstr "Σύστημα κληρονομιάς"
|
204 |
|
205 |
-
#: includes/class
|
206 |
-
msgctxt "[Admin] Menu title"
|
207 |
-
msgid "Ajax Product Filter"
|
208 |
-
msgstr "Ajax Product Filter"
|
209 |
-
|
210 |
-
#: includes/class.yith-wcan-admin.php:199
|
211 |
msgctxt "[Admin] Plugin description"
|
212 |
msgid ""
|
213 |
"It allows your users to find the product they are looking for as quickly as "
|
@@ -216,44 +211,44 @@ msgstr ""
|
|
216 |
"Επιτρέπει στους χρήστες σας να βρουν το προϊόν που επιθυμούν το συντομότερο "
|
217 |
"δυνατό."
|
218 |
|
219 |
-
#: includes/class
|
220 |
msgctxt "[HELP TAB] Video title"
|
221 |
msgid ""
|
222 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
223 |
"the shop page:</b>"
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: includes/class
|
227 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
228 |
msgid "item"
|
229 |
msgstr "αντικείμενο"
|
230 |
|
231 |
-
#: includes/class
|
232 |
msgctxt "[Admin] Preset table empty message second line"
|
233 |
msgid "But don't worry, here you can create your first one!"
|
234 |
msgstr "Μην ανησυχείτε, εδώ μπορείτε να δημιουργήσετε το πρώτο!"
|
235 |
|
236 |
-
#: includes/class
|
237 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
238 |
msgid "Clear Product Filter transients"
|
239 |
msgstr "Καθαρισμός μεταβάσεων φίλτρου προϊόντος"
|
240 |
|
241 |
-
#: includes/class
|
242 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
243 |
msgid "Run filter widgets upgrade"
|
244 |
msgstr "Εκτέλεση αναβάθμισης μικροεφαρμογών φίλτρου"
|
245 |
|
246 |
-
#: includes/class
|
247 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
248 |
msgid "Clear"
|
249 |
msgstr "Καθαρισμός"
|
250 |
|
251 |
-
#: includes/class
|
252 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
253 |
msgid "Run"
|
254 |
msgstr "Εκτέλεση"
|
255 |
|
256 |
-
#: includes/class
|
257 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
258 |
msgid ""
|
259 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -265,7 +260,7 @@ msgstr ""
|
|
265 |
"κατα την αλλαγή της ρύθμισης του προϊόντος σας, τα φίλτρα δεν εμφανίζουν τα "
|
266 |
"αποτελέσματα που περιμένετε. "
|
267 |
|
268 |
-
#: includes/class
|
269 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
270 |
msgid ""
|
271 |
"This will create a preset for any sidebar of your shop containing filter "
|
@@ -275,32 +270,32 @@ msgstr ""
|
|
275 |
"καταστήματός σας, που περιέχει μικροεφαρμογές φίλτρου. Η προρύθμιση θα "
|
276 |
"ρυθμιστεί για να αντιστοιχεί με τις προδιαγραφές μικροεφαρμογών"
|
277 |
|
278 |
-
#: includes/class
|
279 |
msgctxt "[Admin] Filter edit form"
|
280 |
msgid "Taxonomy"
|
281 |
msgstr "Ταξινομία"
|
282 |
|
283 |
-
#: includes/class
|
284 |
msgctxt "[Admin] Filter edit form"
|
285 |
msgid "Checkbox"
|
286 |
msgstr "Πλαίσιο ελέγχου"
|
287 |
|
288 |
-
#: includes/class
|
289 |
msgctxt "[Admin] Filter edit form"
|
290 |
msgid "Select"
|
291 |
msgstr "Επιλογή"
|
292 |
|
293 |
-
#: includes/class
|
294 |
msgctxt "[Admin] Filter edit form"
|
295 |
msgid "Text"
|
296 |
msgstr "Κείμενο"
|
297 |
|
298 |
-
#: includes/class
|
299 |
msgctxt "[Admin] Filter edit form"
|
300 |
msgid "Color Swatches"
|
301 |
msgstr "Δείγματα Χρωμάτων"
|
302 |
|
303 |
-
#: includes/class
|
304 |
msgctxt "[Admin] Filter edit form"
|
305 |
msgid "Label"
|
306 |
msgstr "Επιγραφή"
|
@@ -315,33 +310,33 @@ msgctxt "[Admin] Filter edit form"
|
|
315 |
msgid "Enter a name to identify this filter"
|
316 |
msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτό το φίλτρο"
|
317 |
|
318 |
-
#: plugin-options/filter-options.php:
|
319 |
msgctxt "[Admin] Filter edit form"
|
320 |
msgid "Filter for"
|
321 |
msgstr "Ταξινόμηση για"
|
322 |
|
323 |
-
#: plugin-options/filter-options.php:
|
324 |
msgctxt "[Admin] Filter edit form"
|
325 |
msgid "Select the parameters you wish to filter for"
|
326 |
msgstr "Επιλέξτε τις παραμέτρους που θέλετε να ταξινομήσετε"
|
327 |
|
328 |
-
#: plugin-options/filter-options.php:
|
329 |
msgctxt "[Admin] Filter edit form"
|
330 |
msgid "Choose taxonomy"
|
331 |
msgstr "Επιλογή ταξινομίας"
|
332 |
|
333 |
-
#: plugin-options/filter-options.php:
|
334 |
msgctxt "[Admin] Filter edit form"
|
335 |
msgid "Select which taxonomy to use for this filter"
|
336 |
msgstr ""
|
337 |
"Επιλέξτε την ταξινομία που θέλετε να χρησιμοποιήσετε για αυτό το φίλτρο"
|
338 |
|
339 |
-
#: plugin-options/filter-options.php:
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid "Auto-populate with all terms"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: plugin-options/filter-options.php:
|
345 |
msgctxt "[Admin] Filter edit form"
|
346 |
msgid ""
|
347 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -350,73 +345,73 @@ msgid ""
|
|
350 |
"well.</span>"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: plugin-options/filter-options.php:
|
354 |
msgctxt "[Admin] Filter edit form"
|
355 |
msgid "Choose terms"
|
356 |
msgstr "Επιλογή όρων"
|
357 |
|
358 |
-
#: plugin-options/filter-options.php:
|
359 |
msgctxt "[Admin] Filter edit form"
|
360 |
msgid "Select which terms to use for filtering"
|
361 |
msgstr "Επιλέξτε ποιους όρους να χρησιμοποιήσετε για την ταξινόμηση"
|
362 |
|
363 |
-
#: plugin-options/filter-options.php:
|
364 |
msgctxt "[Admin] Filter edit form"
|
365 |
msgid "Filter type"
|
366 |
msgstr "Τύπος φίλτρου"
|
367 |
|
368 |
-
#: plugin-options/filter-options.php:
|
369 |
msgctxt "[Admin] Filter edit form"
|
370 |
msgid "Select the filter type for this filter"
|
371 |
msgstr "Επιλέξτε τον τύπο για αυτό το φίλτρο"
|
372 |
|
373 |
-
#: plugin-options/filter-options.php:
|
374 |
#, fuzzy
|
375 |
msgctxt "[Admin] Filter edit form"
|
376 |
msgid "Labels"
|
377 |
msgstr "Επιγραφές"
|
378 |
|
379 |
-
#: plugin-options/filter-options.php:
|
380 |
#, fuzzy
|
381 |
msgctxt "[Admin] Filter edit form"
|
382 |
msgid "Show below"
|
383 |
msgstr "Εμφάνιση αποτελεσμάτων"
|
384 |
|
385 |
-
#: plugin-options/filter-options.php:
|
386 |
#, fuzzy
|
387 |
msgctxt "[Admin] Filter edit form"
|
388 |
msgid "Show on the right"
|
389 |
msgstr "Εμφάνιση αρίθμησης αντικειμένων"
|
390 |
|
391 |
-
#: plugin-options/filter-options.php:
|
392 |
msgctxt "[Admin] Filter edit form"
|
393 |
msgid "Hide"
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: plugin-options/filter-options.php:
|
397 |
#, fuzzy
|
398 |
msgctxt "[Admin] Filter edit form"
|
399 |
msgid "Choose if and where to show the label inside your filter"
|
400 |
msgstr "Επιλέξτε το στυλ φίλτρου μέσα στις μικροεφαρμογές"
|
401 |
|
402 |
-
#: plugin-options/filter-options.php:
|
403 |
msgctxt "[Admin] Filter edit form"
|
404 |
msgid "Columns number"
|
405 |
msgstr "Αριθμός στηλών"
|
406 |
|
407 |
-
#: plugin-options/filter-options.php:
|
408 |
msgctxt "[Admin] Filter edit form"
|
409 |
msgid "Set the number of items per row you want to show for this design"
|
410 |
msgstr ""
|
411 |
"Ορίστε τον αριθμό αντικειμένων που θέλετε να εμφανίζετε ανά σειρά για αυτό "
|
412 |
"το σχέδιο"
|
413 |
|
414 |
-
#: plugin-options/filter-options.php:
|
415 |
msgctxt "[Admin] Filter edit form"
|
416 |
msgid "Customize terms"
|
417 |
msgstr "Προσαρμογή όρων"
|
418 |
|
419 |
-
#: plugin-options/filter-options.php:
|
420 |
msgctxt "[Admin] Filter edit form"
|
421 |
msgid ""
|
422 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -430,157 +425,157 @@ msgid ""
|
|
430 |
"this option and use the boxes below</span>"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: plugin-options/filter-options.php:
|
434 |
#, fuzzy
|
435 |
msgctxt "[Admin] Filter edit form"
|
436 |
msgid "Terms options"
|
437 |
msgstr "Σειρά επιλογών"
|
438 |
|
439 |
-
#: plugin-options/filter-options.php:
|
440 |
msgctxt "[Admin] Filter edit form"
|
441 |
msgid "Show hierarchy"
|
442 |
msgstr "Εμφάνιση ιεραρχίας"
|
443 |
|
444 |
-
#: plugin-options/filter-options.php:
|
445 |
msgctxt "[Admin] Filter edit form"
|
446 |
msgid "No, show all terms in same level"
|
447 |
msgstr "Όχι, να εμφανίζονται όλοι οι όροι στο ίδιο επίπεδο"
|
448 |
|
449 |
-
#: plugin-options/filter-options.php:
|
450 |
msgctxt "[Admin] Filter edit form"
|
451 |
msgid "No, show only parent terms"
|
452 |
msgstr "Όχι, να εμφανίζονται μόνο γονικοί όροι"
|
453 |
|
454 |
-
#: plugin-options/filter-options.php:
|
455 |
msgctxt "[Admin] Filter edit form"
|
456 |
msgid "Yes"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: plugin-options/filter-options.php:
|
460 |
msgctxt "[Admin] Filter edit form"
|
461 |
msgid "Choose how to show terms hierarchy"
|
462 |
msgstr "Επιλέξτε πώς να εμφανίζεται η ιεραρχία όρων"
|
463 |
|
464 |
-
#: plugin-options/filter-options.php:
|
465 |
msgctxt "[Admin] Filter edit form"
|
466 |
msgid "Allow multiple selection"
|
467 |
msgstr "Επιτρέψτε πολλαπλή επιλογή"
|
468 |
|
469 |
-
#: plugin-options/filter-options.php:
|
470 |
msgctxt "[Admin] Filter edit form"
|
471 |
msgid "Enable if the user can select multiple terms when filtering products"
|
472 |
msgstr ""
|
473 |
"Ενεργοποιήστε αν ο χρήστης μπορεί να επιλέξει πολλαπλούς όρους κατα την "
|
474 |
"ταξινόμηση προϊόντων"
|
475 |
|
476 |
-
#: plugin-options/filter-options.php:
|
477 |
msgctxt "[Admin] Filter edit form"
|
478 |
msgid "Multiselect relation"
|
479 |
msgstr "Σχέση πολλαπλής επιλογής"
|
480 |
|
481 |
-
#: plugin-options/filter-options.php:
|
482 |
msgctxt "[Admin] Filter edit form"
|
483 |
msgid "Choose how multiple terms selection should behave"
|
484 |
msgstr "Επιλέξτε την συμπεριφορά επιλογής πολλαπλών όρων"
|
485 |
|
486 |
-
#: includes/class
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Default sorting"
|
489 |
msgstr "Προεπιλεγμένη ταξινόμηση"
|
490 |
|
491 |
-
#: includes/class
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by popularity"
|
494 |
msgstr "Ταξινόμηση κατά δημοτικότητα"
|
495 |
|
496 |
-
#: includes/class
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by average rating"
|
499 |
msgstr "Ταξινόμηση κατα μέση αξιολόγηση"
|
500 |
|
501 |
-
#: includes/class
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by latest"
|
504 |
msgstr "Ταξινόμηση κατά τελευταίο"
|
505 |
|
506 |
-
#: includes/class
|
507 |
msgctxt "[Admin] Filter edit form, sorting options"
|
508 |
msgid "Sort by price: low to high"
|
509 |
msgstr "Ταξινόμηση ανά τιμή: χαμηλή προς υψηλή"
|
510 |
|
511 |
-
#: includes/class
|
512 |
msgctxt "[Admin] Filter edit form, sorting options"
|
513 |
msgid "Sort by price: high to low"
|
514 |
msgstr "Ταξινόμηση ανά τιμή: υψηλή προς χαμηλή"
|
515 |
|
516 |
-
#: includes/class
|
517 |
msgctxt "[Admin] Default filter title"
|
518 |
msgid "New filter"
|
519 |
msgstr "Νέο φίλτρο"
|
520 |
|
521 |
-
#: includes/class
|
522 |
-
#: includes/filters/class
|
523 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
524 |
msgid "All"
|
525 |
msgstr "Όλα"
|
526 |
|
527 |
-
#: includes/class
|
528 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
529 |
msgid "Search..."
|
530 |
msgstr "Αναζήτηση…"
|
531 |
|
532 |
-
#: includes/class
|
533 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
534 |
msgid "No item found"
|
535 |
msgstr "Δεν βρέθηκε αντικείμενο"
|
536 |
|
537 |
#. translators: 1. Number of items to show.
|
538 |
-
#: includes/class
|
539 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
540 |
msgid "Show %d more"
|
541 |
msgstr "Εμφάνιση %d περισσότερων"
|
542 |
|
543 |
-
#: includes/class
|
544 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
545 |
msgid "Close"
|
546 |
msgstr "Κλείσιμο"
|
547 |
|
548 |
-
#: includes/class
|
549 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
550 |
msgid "Save"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: includes/class
|
554 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
555 |
msgid "Show results"
|
556 |
msgstr "Εμφάνιση αποτελεσμάτων"
|
557 |
|
558 |
-
#: includes/class
|
559 |
msgctxt ""
|
560 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
561 |
"selection"
|
562 |
msgid "Clear"
|
563 |
msgstr "Καθαρισμός"
|
564 |
|
565 |
-
#: includes/class
|
566 |
msgctxt ""
|
567 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
568 |
"selection"
|
569 |
msgid "Clear All"
|
570 |
msgstr "Καθαρισμός Όλων"
|
571 |
|
572 |
-
#: includes/class
|
573 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
574 |
msgid "Default preset"
|
575 |
msgstr "Προεπιλεγμένη προρύθμιση"
|
576 |
|
577 |
#. translators: 1. Taxonomy name.
|
578 |
-
#: includes/class
|
579 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
580 |
msgid "Filter by %s"
|
581 |
msgstr "Ταξινόμηση κατά %s"
|
582 |
|
583 |
-
#: includes/class
|
584 |
#, fuzzy
|
585 |
msgctxt "[Admin] Label in new preset page"
|
586 |
msgid "Default"
|
@@ -596,33 +591,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
596 |
msgid "Enter a name to identify this filter preset"
|
597 |
msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτή την προρύθμιση φίλτρου"
|
598 |
|
599 |
-
#: templates/admin/preset-filters.php:
|
600 |
msgctxt "[Admin] Label in new preset page"
|
601 |
msgid "Filters of this preset"
|
602 |
msgstr "Φίλτρα αυτής της προρύθμισης"
|
603 |
|
604 |
-
#: includes/class
|
605 |
-
#: includes/class
|
606 |
msgctxt "[Admin] name of presets custom post type"
|
607 |
msgid "Filter presets"
|
608 |
msgstr "Φίλτρο προρυθμίσεων"
|
609 |
|
610 |
-
#: includes/class
|
611 |
msgctxt "[Admin] singular name of presets custom post type"
|
612 |
msgid "Filter preset"
|
613 |
msgstr "Φίλτρο προρύθμισης"
|
614 |
|
615 |
-
#: includes/class
|
616 |
msgctxt "[Admin] add new filter preset label"
|
617 |
msgid "Add new preset"
|
618 |
msgstr "Προσθήκη νέας προρύθμισης"
|
619 |
|
620 |
-
#: includes/class
|
621 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
622 |
msgid "Convert widgets in a preset"
|
623 |
msgstr "Μετατροπή μικροεφαρμογών σε προρύθμιση"
|
624 |
|
625 |
-
#: includes/data-stores/class
|
626 |
msgctxt ""
|
627 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
628 |
"not exist"
|
@@ -630,43 +625,43 @@ msgid "Invalid preset."
|
|
630 |
msgstr "Προρύθμιση άκυρη."
|
631 |
|
632 |
#. translators: 1. Title of original preset.
|
633 |
-
#: includes/data-stores/class
|
634 |
msgctxt "[ADMIN] Title of the cloned preset"
|
635 |
msgid "%s - Copy"
|
636 |
msgstr "%s - Αντιγραφή"
|
637 |
|
638 |
-
#: includes/elementor/class
|
639 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
640 |
msgid "YITH AJAX Filters Preset"
|
641 |
msgstr "Προρύθμιση Φίλτρων YITH AJAX"
|
642 |
|
643 |
-
#: includes/elementor/class
|
644 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
645 |
msgid "YITH AJAX Filters Reset Button"
|
646 |
msgstr "Κουμπί Επαναφοράς Φίλτρων YITH AJAX"
|
647 |
|
648 |
-
#: includes/elementor/class
|
649 |
-
#: includes/shortcodes/class
|
650 |
msgctxt "[ELEMENTOR] Default preset option"
|
651 |
msgid "Choose an option"
|
652 |
msgstr "Διαλέξτε μια επιλογή"
|
653 |
|
654 |
-
#: includes/elementor/class
|
655 |
msgctxt "[ELEMENTOR] Section title"
|
656 |
msgid "Filters"
|
657 |
msgstr "Φίλτρα"
|
658 |
|
659 |
-
#: includes/elementor/class
|
660 |
msgctxt "[ELEMENTOR] Section title"
|
661 |
msgid "General"
|
662 |
msgstr "Γενικά"
|
663 |
|
664 |
-
#: includes/elementor/class
|
665 |
msgctxt "[ELEMENTOR] Control label"
|
666 |
msgid "Preset"
|
667 |
msgstr "Προρύθμιση"
|
668 |
|
669 |
-
#: includes/elementor/class
|
670 |
msgctxt "[ELEMENTOR] Widget description"
|
671 |
msgid ""
|
672 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
@@ -674,7 +669,7 @@ msgstr ""
|
|
674 |
"Αυτή η μικροεφαρμογή θα εμφανίσει το κουμπί \"Επαναφορά φίλτρων\", όπου "
|
675 |
"τοποθετηθεί"
|
676 |
|
677 |
-
#: includes/elementor/class
|
678 |
msgctxt "[ELEMENTOR] Widget description"
|
679 |
msgid ""
|
680 |
"It will allow users to reset the filer selection; it will only appear when "
|
@@ -683,7 +678,7 @@ msgstr ""
|
|
683 |
"Θα επιτρέψει στους χρήστες να επαναρυθμίσουν την επιλογή φίλτρου. Θα "
|
684 |
"εμφανιστεί μόνο όταν υπάρχει ενεργό φίλτρο."
|
685 |
|
686 |
-
#: includes/elementor/class
|
687 |
msgctxt "[ELEMENTOR] Widget description"
|
688 |
msgid ""
|
689 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
@@ -693,17 +688,17 @@ msgstr ""
|
|
693 |
"“Επαναφορά φίλτρων” μέσα στη σελίδα σας, όταν η επιλογή “Επαναφορά θέσης "
|
694 |
"κουμπιού” δεν λειτουργεί για τον βρόχο προϊόντος"
|
695 |
|
696 |
-
#: includes/functions
|
697 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
698 |
msgid "Color 1"
|
699 |
msgstr "Χρώμα 1"
|
700 |
|
701 |
-
#: includes/functions
|
702 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
703 |
msgid "Color 2"
|
704 |
msgstr "Χρώμα 2"
|
705 |
|
706 |
-
#: includes/functions
|
707 |
msgctxt "[FRONTEND] Star rating template"
|
708 |
msgid "star"
|
709 |
msgid_plural "stars"
|
@@ -711,27 +706,27 @@ msgstr[0] "αστέρι"
|
|
711 |
msgstr[1] "αστέρια"
|
712 |
|
713 |
#. translators: 1. Rating.
|
714 |
-
#: includes/functions
|
715 |
msgctxt "[FRONTEND] Star rating label"
|
716 |
msgid "Rated %s out of 5"
|
717 |
msgstr "Βαθμολογήθηκε με %s από 5"
|
718 |
|
719 |
-
#: includes/shortcodes/class
|
720 |
msgctxt "[GUTENBERG]: block name"
|
721 |
msgid "YITH AJAX Filters Preset"
|
722 |
msgstr "Προρύθμιση Φίλτρων YITH AJAX"
|
723 |
|
724 |
-
#: includes/shortcodes/class
|
725 |
msgctxt "[GUTENBERG]: block name"
|
726 |
msgid "YITH Reset Filters Button"
|
727 |
msgstr "Κουμπί Επαναφοράς Φίλτρων YITH"
|
728 |
|
729 |
-
#: includes/shortcodes/class
|
730 |
msgctxt "[GUTENBERG]: block description"
|
731 |
msgid "Show filters from a preset"
|
732 |
msgstr "Εμφάνιση φίλτρων από προρύθμιση"
|
733 |
|
734 |
-
#: includes/shortcodes/class
|
735 |
msgctxt "[GUTENBERG]: block description"
|
736 |
msgid ""
|
737 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -745,80 +740,80 @@ msgstr ""
|
|
745 |
"φίλτρων” μέσα στη σελίδα, όταν η επιλογή “Επαναφορά θέσης κουμπιού” δεν "
|
746 |
"λειτουργεί για τον βρόχο προϊόντος"
|
747 |
|
748 |
-
#: includes/shortcodes/class
|
749 |
msgctxt "[GUTENBERG]: attribute description"
|
750 |
msgid "Preset"
|
751 |
msgstr "Προρύθμιση"
|
752 |
|
753 |
-
#: includes/tables/class
|
754 |
msgctxt "[Admin] Preset table column header"
|
755 |
msgid "Preset name"
|
756 |
msgstr "Όνομα προρύθμισης"
|
757 |
|
758 |
-
#: includes/tables/class
|
759 |
msgctxt "[Admin] Preset table column header"
|
760 |
msgid "Shortcode"
|
761 |
msgstr "Μικροκώδικας"
|
762 |
|
763 |
-
#: includes/tables/class
|
764 |
msgctxt "[Admin] Preset edit action label"
|
765 |
msgid "Edit this preset"
|
766 |
msgstr "Επεξεργασία προρύθμισης"
|
767 |
|
768 |
-
#: includes/tables/class
|
769 |
msgctxt "[Admin] Preset clone action label"
|
770 |
msgid "Clone this preset"
|
771 |
msgstr "Κλωνοποίηση προρύθμισης"
|
772 |
|
773 |
-
#: includes/tables/class
|
774 |
msgctxt "[Admin] Preset delete action label"
|
775 |
msgid "Delete this preset"
|
776 |
msgstr "Διαγραφή προρύθμισης"
|
777 |
|
778 |
-
#: includes/tables/class
|
779 |
msgctxt "[Admin] Preset delete confirm label"
|
780 |
msgid "Are you sure you want to delete this preset?"
|
781 |
msgstr "Είστε σίγουρος ότι θέλετε να διαγράψετε αυτή τη προρύθμιση;"
|
782 |
|
783 |
-
#: includes/tables/class
|
784 |
msgctxt "[Admin] on-off yes"
|
785 |
msgid "YES"
|
786 |
msgstr "ΝΑΙ"
|
787 |
|
788 |
-
#: includes/tables/class
|
789 |
msgctxt "[Admin] on-off no"
|
790 |
msgid "NO"
|
791 |
msgstr "ΟΧΙ"
|
792 |
|
793 |
-
#: includes/tables/class
|
794 |
msgctxt ""
|
795 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
796 |
msgid "filter preset"
|
797 |
msgstr "προρύθμιση φίλτρου"
|
798 |
|
799 |
-
#: templates/admin/preset-filters.php:
|
800 |
msgctxt ""
|
801 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
802 |
msgid "filter"
|
803 |
msgstr "φίλτρο"
|
804 |
|
805 |
-
#: includes/tables/class
|
806 |
msgctxt "[Admin] New preset button label"
|
807 |
msgid "Create a new preset"
|
808 |
msgstr "Δημιουργία νέας προρύθμισης"
|
809 |
|
810 |
-
#: includes/widgets/class
|
811 |
msgctxt "[ADMIN] Name of the preset widget"
|
812 |
msgid "YITH AJAX Filters Preset"
|
813 |
msgstr "Προρύθμιση Φίλτρων YITH AJAX"
|
814 |
|
815 |
-
#: includes/widgets/class
|
816 |
msgctxt "[ADMIN] Preset widget options"
|
817 |
msgid "Preset"
|
818 |
msgstr "Προρύθμιση"
|
819 |
|
820 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
821 |
-
#: includes/widgets/class
|
822 |
msgctxt "[ADMIN] Preset widget options"
|
823 |
msgid ""
|
824 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -828,26 +823,26 @@ msgstr ""
|
|
828 |
"Product Filter -> Προρυθμίσεις</a> και χρησιμοποιήστε την πρώτη σας "
|
829 |
"προρύθμιση"
|
830 |
|
831 |
-
#: includes/widgets/class
|
832 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
833 |
msgid "YITH AJAX Product Filter"
|
834 |
msgstr "YITH AJAX Product Filter"
|
835 |
|
836 |
-
#: includes/widgets/class
|
837 |
#, fuzzy
|
838 |
msgctxt ""
|
839 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
840 |
msgid "AND"
|
841 |
msgstr "ΚΑΙ"
|
842 |
|
843 |
-
#: includes/widgets/class
|
844 |
msgctxt "[Plugin Name]"
|
845 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
846 |
msgstr ""
|
847 |
"Επαναφορά όλων των φίλτρων που έχουν οριστεί από το YITH WooCommerce AJAX "
|
848 |
"Product Filter"
|
849 |
|
850 |
-
#: plugin-options/filter-options.php:
|
851 |
#, fuzzy
|
852 |
msgctxt ""
|
853 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -856,7 +851,7 @@ msgstr ""
|
|
856 |
"ΚΑΙ - Τα αποτελέσματα πρέπει να αντιστοιχούν σε όλους τους επιλεγμένους "
|
857 |
"όρους ταυτόχρονα"
|
858 |
|
859 |
-
#: plugin-options/filter-options.php:
|
860 |
#, fuzzy
|
861 |
msgctxt ""
|
862 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -1142,21 +1137,21 @@ msgstr ""
|
|
1142 |
msgctxt "[ADMIN] Premium tab"
|
1143 |
msgid ""
|
1144 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1145 |
-
"view<br/>\
|
1146 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1147 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1148 |
-
"range (based on their budget availability)<br/>\
|
1149 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1150 |
"attributes available in your store, like color and size. For the color "
|
1151 |
"filter, you can either choose square or circular color swatches or use "
|
1152 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1153 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1154 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1155 |
-
"concentrate only on high-rated ones)<br/>\
|
1156 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1157 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1158 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1159 |
-
"filter products and view only those with a discount<br/>\
|
1160 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1161 |
"filter products based on their needs and exclude out-of-stock products from "
|
1162 |
"the list"
|
@@ -1282,73 +1277,73 @@ msgid ""
|
|
1282 |
"easier to share)"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: templates/admin/preset-edit.php:
|
1286 |
msgctxt "[Admin] Back link in new preset page"
|
1287 |
msgid "< back to preset list"
|
1288 |
msgstr "< πίσω στη λίστα προρύθμισης"
|
1289 |
|
1290 |
-
#: templates/admin/preset-edit.php:
|
1291 |
msgctxt "[ADMIN] Title for new preset page"
|
1292 |
msgid "Edit filter preset"
|
1293 |
msgstr "Επεξεργασία προρύθμισης φίλτρου"
|
1294 |
|
1295 |
-
#: templates/admin/preset-edit.php:
|
1296 |
msgctxt "[ADMIN] Title for new preset page"
|
1297 |
msgid "Add new filter preset"
|
1298 |
msgstr "Προσθήκη νέας προρύθμισης φίλτρου"
|
1299 |
|
1300 |
-
#: templates/admin/preset-edit.php:
|
1301 |
msgctxt "[ADMIN] Preset save message"
|
1302 |
msgid "Preset saved correctly"
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: templates/admin/preset-edit.php:
|
1306 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1307 |
msgid "Save preset"
|
1308 |
msgstr "Αποθήκευση προρύθμισης"
|
1309 |
|
1310 |
-
#: templates/admin/preset-empty-content.php:
|
1311 |
msgctxt "Alt text for empty preset image"
|
1312 |
msgid "Empty preset"
|
1313 |
msgstr "Κενή προρύθμιση"
|
1314 |
|
1315 |
#. translators: 1. Missing item name.
|
1316 |
-
#: templates/admin/preset-empty-content.php:
|
1317 |
msgctxt "[Admin] Preset table empty message"
|
1318 |
msgid "You don't have any %s yet."
|
1319 |
msgstr "Δεν έχετε κανένα %s ακόμη."
|
1320 |
|
1321 |
-
#: templates/admin/preset-filter-term.php:
|
1322 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1323 |
msgid "Label"
|
1324 |
msgstr "Επιγραφή"
|
1325 |
|
1326 |
-
#: templates/admin/preset-filter-term.php:
|
1327 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1328 |
msgid "Tooltip"
|
1329 |
msgstr "Υπόμνηση"
|
1330 |
|
1331 |
-
#: templates/admin/preset-filter-term.php:
|
1332 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1333 |
msgid "Color"
|
1334 |
msgstr "Χρώμα"
|
1335 |
|
1336 |
-
#: templates/admin/preset-filter.php:
|
1337 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1338 |
msgid "Save Filter"
|
1339 |
msgstr "Αποθήκευση Φίλτρου"
|
1340 |
|
1341 |
-
#: templates/admin/preset-filter.php:
|
1342 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1343 |
msgid "Delete Filter"
|
1344 |
msgstr "Διαγραφή Φίλτρου"
|
1345 |
|
1346 |
-
#: templates/admin/preset-filters.php:
|
1347 |
msgctxt "[Admin] New filter button label"
|
1348 |
msgid "Add a new filter"
|
1349 |
msgstr "Προσθήκη νέου φίλτρου"
|
1350 |
|
1351 |
-
#: templates/admin/preset-filters.php:
|
1352 |
msgctxt "[Admin] Add new filter in new preset page"
|
1353 |
msgid "+ Add filter"
|
1354 |
msgstr "+ Προσθήκη φίλτρου"
|
@@ -1360,13 +1355,13 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1360 |
msgid "See %d more filters"
|
1361 |
msgstr "Πριν από φίλτρα"
|
1362 |
|
1363 |
-
#: templates/admin/upgrade-note-modal.php:
|
1364 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1365 |
msgid "Use the new filter preset feature for your filters"
|
1366 |
msgstr ""
|
1367 |
"Χρησιμοποιήστε το νέο χαρακτηριστικό προρύθμισης φίλτρου για τα φίλτρα σας"
|
1368 |
|
1369 |
-
#: templates/admin/upgrade-note-modal.php:
|
1370 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1371 |
msgid ""
|
1372 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1381,7 +1376,7 @@ msgstr ""
|
|
1381 |
"την μικροεφαρμογή Elementor."
|
1382 |
|
1383 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1384 |
-
#: templates/admin/upgrade-note-modal.php:
|
1385 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1386 |
msgid ""
|
1387 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1392,7 +1387,7 @@ msgstr ""
|
|
1392 |
"χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
|
1393 |
|
1394 |
#. translators: 1. Url to docs.
|
1395 |
-
#: templates/admin/upgrade-note-modal.php:
|
1396 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1397 |
msgid ""
|
1398 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
@@ -1401,7 +1396,7 @@ msgstr ""
|
|
1401 |
"Σας προτείνουμε να <a href=\"%1$s\">διαβάσετε το εγχειρίδιο χρήσης</a> για "
|
1402 |
"να μάθετε πώς να χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
|
1403 |
|
1404 |
-
#: templates/admin/upgrade-note-modal.php:
|
1405 |
#, fuzzy
|
1406 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1407 |
msgid ""
|
@@ -1416,7 +1411,7 @@ msgstr ""
|
|
1416 |
"μετακινηθούν μέσα στον πίνακα προρυθμίσεων φίλτρου.<br/><b>Μην ανησυχείτε, "
|
1417 |
"δεν θα χαθούν δεδομένα κατα τη διαδικασία.</b>"
|
1418 |
|
1419 |
-
#: templates/admin/upgrade-note-modal.php:
|
1420 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1421 |
msgid ""
|
1422 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1424,21 +1419,25 @@ msgid ""
|
|
1424 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1425 |
msgstr ""
|
1426 |
|
1427 |
-
#: templates/admin/upgrade-note-modal.php:
|
1428 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1429 |
msgid "Convert your widgets in a preset now"
|
1430 |
msgstr "Μετατρέψτε τις μικροεφαρμογές σας σε προρύθμιση τώρα"
|
1431 |
|
1432 |
-
#: templates/admin/upgrade-note-modal.php:
|
1433 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1434 |
msgid "No thanks"
|
1435 |
msgstr "Όχι, ευχαριστώ"
|
1436 |
|
1437 |
-
#: templates/filters/global/reset-filters.php:
|
1438 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1439 |
msgid "Reset filters"
|
1440 |
msgstr "Επαναφορά φίλτρων"
|
1441 |
|
|
|
|
|
|
|
|
|
1442 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1443 |
#~ msgid "All"
|
1444 |
#~ msgstr "Όλα"
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2021-02-12 13:32:43+0000\n"
|
10 |
"Language: el_GR\n"
|
11 |
"MIME-Version: 1.0\n"
|
14 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
18 |
msgid "Draft Preset"
|
19 |
msgstr "Προρύθμιση Πρόχειρου"
|
20 |
|
21 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
22 |
+
#: includes/functions-yith-wcan.php:132
|
23 |
msgid "Term"
|
24 |
msgstr "Όρος"
|
25 |
|
26 |
+
#: includes/functions-yith-wcan.php:98
|
27 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
28 |
msgid "Color"
|
29 |
msgstr "Χρώμα"
|
30 |
|
31 |
+
#: includes/functions-yith-wcan.php:132
|
32 |
msgid "Labels"
|
33 |
msgstr "Επιγραφές"
|
34 |
|
35 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Ταξινομήστε τη λίστα προϊόντων χωρίς να γίνει επαναφόρτωση της σελίδας"
|
38 |
|
39 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
40 |
msgid "Filters:"
|
41 |
msgstr "Φίλτρα:"
|
42 |
|
43 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
44 |
msgid "List"
|
45 |
msgstr "Λίστα"
|
46 |
|
47 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
48 |
msgid "Label"
|
49 |
msgstr "Επιγραφή"
|
50 |
|
51 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Αναδιπλούμενη λίστα"
|
54 |
|
55 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
56 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
57 |
msgid "Title"
|
58 |
msgstr "Τίτλος"
|
59 |
|
60 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
61 |
msgid "Type:"
|
62 |
msgstr "Τύπος:"
|
63 |
|
64 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Τύπος Ερωτήματος:"
|
67 |
|
68 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
69 |
msgid "OR"
|
70 |
msgstr "Ή"
|
71 |
|
72 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Ιδιότητα:"
|
75 |
|
76 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Εμφάνιση (προεπιλεγμένα Όλα):"
|
79 |
|
80 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Όλοι (μη ιεραρχικά)"
|
83 |
|
84 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Όλοι (ιεραρχικά)"
|
87 |
|
88 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Μόνο Γονικός"
|
91 |
|
92 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "Κλάση προσαρμοσμένου CSS"
|
95 |
|
96 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr "YITH AJAX Επαναφορά Φίλτρου"
|
99 |
|
100 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Επαναφορά Όλων των Φίλτρων"
|
103 |
|
104 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
105 |
msgid "Button Label"
|
106 |
msgstr "Επιγραφή Κουμπιού"
|
107 |
|
138 |
"περισσότερα πρόσθετα για το ηλεκτρονικό σας κατάστημα στο <strong>YITH</"
|
139 |
"strong></a>"
|
140 |
|
141 |
+
#: includes/class-yith-wcan-admin.php:107
|
142 |
msgctxt "[Admin] Copy confirmation message"
|
143 |
msgid "Content copied to your clipboard"
|
144 |
msgstr "Έγινε αντιγραφή περιεχομένου σε πρόχειρο"
|
145 |
|
146 |
+
#: includes/class-yith-wcan-admin.php:108
|
147 |
msgctxt "[Admin] Confirm filter delete message"
|
148 |
msgid "Are you sure you want to delete this item?"
|
149 |
msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αντικείμενο;"
|
150 |
|
151 |
#. translators: 1. Number of items that will be added.
|
152 |
+
#: includes/class-yith-wcan-admin.php:110
|
153 |
msgctxt "[Admin] Confirm add all terms message"
|
154 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
155 |
msgstr ""
|
156 |
"Είστε σίγουροι ότι θέλετε να προχωρήσετε; Αυτή η διαδικασία θα προσθέσει %s "
|
157 |
"αντικείμενα"
|
158 |
|
159 |
+
#: includes/class-yith-wcan-admin.php:111
|
160 |
msgctxt "[Admin] Error message"
|
161 |
msgid "\"Filter title\" is a required field"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
165 |
msgctxt "[Admin] Message shown when filter has empty title"
|
166 |
msgid "< no title >"
|
167 |
msgstr "< χωρίς τίτλο >"
|
168 |
|
169 |
+
#: includes/class-yith-wcan-admin.php:115
|
170 |
msgctxt "[Admin] Media library title, when selecting images"
|
171 |
msgid "Select media you want to use"
|
172 |
msgstr "Επιλέξτε τα πολυμέσα που θέλετε να χρησιμοποιήσετε"
|
173 |
|
174 |
+
#: includes/class-yith-wcan-admin.php:116
|
175 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
176 |
msgid "Use this media"
|
177 |
msgstr "Χρησιμοποιήστε αυτά τα πολυμέσα"
|
178 |
|
179 |
+
#: includes/class-yith-wcan-admin.php:184
|
180 |
msgctxt "[Admin] tab name"
|
181 |
msgid "Filter presets"
|
182 |
msgstr "Προρυθμίσεις φίλτρου"
|
183 |
|
184 |
+
#: includes/class-yith-wcan-admin.php:185
|
185 |
msgctxt "[Admin] tab name"
|
186 |
msgid "General settings"
|
187 |
msgstr "Γενικές ρυθμίσεις"
|
188 |
|
189 |
+
#: includes/class-yith-wcan-admin.php:186
|
190 |
#, fuzzy
|
191 |
msgctxt "[Admin] tab name"
|
192 |
msgid "SEO"
|
193 |
msgstr "SEO"
|
194 |
|
195 |
+
#: includes/class-yith-wcan-admin.php:187
|
196 |
msgctxt "[Admin] tab name"
|
197 |
msgid "Premium Version"
|
198 |
msgstr "Premium Έκδοση"
|
199 |
|
200 |
+
#: includes/class-yith-wcan-admin.php:191
|
201 |
msgctxt "[Admin] tab name"
|
202 |
msgid "Legacy"
|
203 |
msgstr "Σύστημα κληρονομιάς"
|
204 |
|
205 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
206 |
msgctxt "[Admin] Plugin description"
|
207 |
msgid ""
|
208 |
"It allows your users to find the product they are looking for as quickly as "
|
211 |
"Επιτρέπει στους χρήστες σας να βρουν το προϊόν που επιθυμούν το συντομότερο "
|
212 |
"δυνατό."
|
213 |
|
214 |
+
#: includes/class-yith-wcan-admin.php:211
|
215 |
msgctxt "[HELP TAB] Video title"
|
216 |
msgid ""
|
217 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
218 |
"the shop page:</b>"
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: includes/class-yith-wcan-admin.php:329
|
222 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
223 |
msgid "item"
|
224 |
msgstr "αντικείμενο"
|
225 |
|
226 |
+
#: includes/class-yith-wcan-admin.php:330
|
227 |
msgctxt "[Admin] Preset table empty message second line"
|
228 |
msgid "But don't worry, here you can create your first one!"
|
229 |
msgstr "Μην ανησυχείτε, εδώ μπορείτε να δημιουργήσετε το πρώτο!"
|
230 |
|
231 |
+
#: includes/class-yith-wcan-admin.php:480
|
232 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
233 |
msgid "Clear Product Filter transients"
|
234 |
msgstr "Καθαρισμός μεταβάσεων φίλτρου προϊόντος"
|
235 |
|
236 |
+
#: includes/class-yith-wcan-admin.php:486
|
237 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
238 |
msgid "Run filter widgets upgrade"
|
239 |
msgstr "Εκτέλεση αναβάθμισης μικροεφαρμογών φίλτρου"
|
240 |
|
241 |
+
#: includes/class-yith-wcan-admin.php:481
|
242 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
243 |
msgid "Clear"
|
244 |
msgstr "Καθαρισμός"
|
245 |
|
246 |
+
#: includes/class-yith-wcan-admin.php:487
|
247 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
248 |
msgid "Run"
|
249 |
msgstr "Εκτέλεση"
|
250 |
|
251 |
+
#: includes/class-yith-wcan-admin.php:482
|
252 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
253 |
msgid ""
|
254 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
260 |
"κατα την αλλαγή της ρύθμισης του προϊόντος σας, τα φίλτρα δεν εμφανίζουν τα "
|
261 |
"αποτελέσματα που περιμένετε. "
|
262 |
|
263 |
+
#: includes/class-yith-wcan-admin.php:488
|
264 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
265 |
msgid ""
|
266 |
"This will create a preset for any sidebar of your shop containing filter "
|
270 |
"καταστήματός σας, που περιέχει μικροεφαρμογές φίλτρου. Η προρύθμιση θα "
|
271 |
"ρυθμιστεί για να αντιστοιχεί με τις προδιαγραφές μικροεφαρμογών"
|
272 |
|
273 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
274 |
msgctxt "[Admin] Filter edit form"
|
275 |
msgid "Taxonomy"
|
276 |
msgstr "Ταξινομία"
|
277 |
|
278 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
279 |
msgctxt "[Admin] Filter edit form"
|
280 |
msgid "Checkbox"
|
281 |
msgstr "Πλαίσιο ελέγχου"
|
282 |
|
283 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
284 |
msgctxt "[Admin] Filter edit form"
|
285 |
msgid "Select"
|
286 |
msgstr "Επιλογή"
|
287 |
|
288 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
289 |
msgctxt "[Admin] Filter edit form"
|
290 |
msgid "Text"
|
291 |
msgstr "Κείμενο"
|
292 |
|
293 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
294 |
msgctxt "[Admin] Filter edit form"
|
295 |
msgid "Color Swatches"
|
296 |
msgstr "Δείγματα Χρωμάτων"
|
297 |
|
298 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
299 |
msgctxt "[Admin] Filter edit form"
|
300 |
msgid "Label"
|
301 |
msgstr "Επιγραφή"
|
310 |
msgid "Enter a name to identify this filter"
|
311 |
msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτό το φίλτρο"
|
312 |
|
313 |
+
#: plugin-options/filter-options.php:40
|
314 |
msgctxt "[Admin] Filter edit form"
|
315 |
msgid "Filter for"
|
316 |
msgstr "Ταξινόμηση για"
|
317 |
|
318 |
+
#: plugin-options/filter-options.php:44
|
319 |
msgctxt "[Admin] Filter edit form"
|
320 |
msgid "Select the parameters you wish to filter for"
|
321 |
msgstr "Επιλέξτε τις παραμέτρους που θέλετε να ταξινομήσετε"
|
322 |
|
323 |
+
#: plugin-options/filter-options.php:49
|
324 |
msgctxt "[Admin] Filter edit form"
|
325 |
msgid "Choose taxonomy"
|
326 |
msgstr "Επιλογή ταξινομίας"
|
327 |
|
328 |
+
#: plugin-options/filter-options.php:53
|
329 |
msgctxt "[Admin] Filter edit form"
|
330 |
msgid "Select which taxonomy to use for this filter"
|
331 |
msgstr ""
|
332 |
"Επιλέξτε την ταξινομία που θέλετε να χρησιμοποιήσετε για αυτό το φίλτρο"
|
333 |
|
334 |
+
#: plugin-options/filter-options.php:58
|
335 |
msgctxt "[Admin] Filter edit form"
|
336 |
msgid "Auto-populate with all terms"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: plugin-options/filter-options.php:60
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid ""
|
342 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
345 |
"well.</span>"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: plugin-options/filter-options.php:69
|
349 |
msgctxt "[Admin] Filter edit form"
|
350 |
msgid "Choose terms"
|
351 |
msgstr "Επιλογή όρων"
|
352 |
|
353 |
+
#: plugin-options/filter-options.php:74
|
354 |
msgctxt "[Admin] Filter edit form"
|
355 |
msgid "Select which terms to use for filtering"
|
356 |
msgstr "Επιλέξτε ποιους όρους να χρησιμοποιήσετε για την ταξινόμηση"
|
357 |
|
358 |
+
#: plugin-options/filter-options.php:78
|
359 |
msgctxt "[Admin] Filter edit form"
|
360 |
msgid "Filter type"
|
361 |
msgstr "Τύπος φίλτρου"
|
362 |
|
363 |
+
#: plugin-options/filter-options.php:82
|
364 |
msgctxt "[Admin] Filter edit form"
|
365 |
msgid "Select the filter type for this filter"
|
366 |
msgstr "Επιλέξτε τον τύπο για αυτό το φίλτρο"
|
367 |
|
368 |
+
#: plugin-options/filter-options.php:86
|
369 |
#, fuzzy
|
370 |
msgctxt "[Admin] Filter edit form"
|
371 |
msgid "Labels"
|
372 |
msgstr "Επιγραφές"
|
373 |
|
374 |
+
#: plugin-options/filter-options.php:89
|
375 |
#, fuzzy
|
376 |
msgctxt "[Admin] Filter edit form"
|
377 |
msgid "Show below"
|
378 |
msgstr "Εμφάνιση αποτελεσμάτων"
|
379 |
|
380 |
+
#: plugin-options/filter-options.php:90
|
381 |
#, fuzzy
|
382 |
msgctxt "[Admin] Filter edit form"
|
383 |
msgid "Show on the right"
|
384 |
msgstr "Εμφάνιση αρίθμησης αντικειμένων"
|
385 |
|
386 |
+
#: plugin-options/filter-options.php:91
|
387 |
msgctxt "[Admin] Filter edit form"
|
388 |
msgid "Hide"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: plugin-options/filter-options.php:93
|
392 |
#, fuzzy
|
393 |
msgctxt "[Admin] Filter edit form"
|
394 |
msgid "Choose if and where to show the label inside your filter"
|
395 |
msgstr "Επιλέξτε το στυλ φίλτρου μέσα στις μικροεφαρμογές"
|
396 |
|
397 |
+
#: plugin-options/filter-options.php:97
|
398 |
msgctxt "[Admin] Filter edit form"
|
399 |
msgid "Columns number"
|
400 |
msgstr "Αριθμός στηλών"
|
401 |
|
402 |
+
#: plugin-options/filter-options.php:102
|
403 |
msgctxt "[Admin] Filter edit form"
|
404 |
msgid "Set the number of items per row you want to show for this design"
|
405 |
msgstr ""
|
406 |
"Ορίστε τον αριθμό αντικειμένων που θέλετε να εμφανίζετε ανά σειρά για αυτό "
|
407 |
"το σχέδιο"
|
408 |
|
409 |
+
#: plugin-options/filter-options.php:106
|
410 |
msgctxt "[Admin] Filter edit form"
|
411 |
msgid "Customize terms"
|
412 |
msgstr "Προσαρμογή όρων"
|
413 |
|
414 |
+
#: plugin-options/filter-options.php:109
|
415 |
msgctxt "[Admin] Filter edit form"
|
416 |
msgid ""
|
417 |
"Configure your terms individually; system will otherwise use default labels/"
|
425 |
"this option and use the boxes below</span>"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: plugin-options/filter-options.php:119
|
429 |
#, fuzzy
|
430 |
msgctxt "[Admin] Filter edit form"
|
431 |
msgid "Terms options"
|
432 |
msgstr "Σειρά επιλογών"
|
433 |
|
434 |
+
#: plugin-options/filter-options.php:125
|
435 |
msgctxt "[Admin] Filter edit form"
|
436 |
msgid "Show hierarchy"
|
437 |
msgstr "Εμφάνιση ιεραρχίας"
|
438 |
|
439 |
+
#: plugin-options/filter-options.php:128
|
440 |
msgctxt "[Admin] Filter edit form"
|
441 |
msgid "No, show all terms in same level"
|
442 |
msgstr "Όχι, να εμφανίζονται όλοι οι όροι στο ίδιο επίπεδο"
|
443 |
|
444 |
+
#: plugin-options/filter-options.php:129
|
445 |
msgctxt "[Admin] Filter edit form"
|
446 |
msgid "No, show only parent terms"
|
447 |
msgstr "Όχι, να εμφανίζονται μόνο γονικοί όροι"
|
448 |
|
449 |
+
#: plugin-options/filter-options.php:130
|
450 |
msgctxt "[Admin] Filter edit form"
|
451 |
msgid "Yes"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: plugin-options/filter-options.php:132
|
455 |
msgctxt "[Admin] Filter edit form"
|
456 |
msgid "Choose how to show terms hierarchy"
|
457 |
msgstr "Επιλέξτε πώς να εμφανίζεται η ιεραρχία όρων"
|
458 |
|
459 |
+
#: plugin-options/filter-options.php:136
|
460 |
msgctxt "[Admin] Filter edit form"
|
461 |
msgid "Allow multiple selection"
|
462 |
msgstr "Επιτρέψτε πολλαπλή επιλογή"
|
463 |
|
464 |
+
#: plugin-options/filter-options.php:138
|
465 |
msgctxt "[Admin] Filter edit form"
|
466 |
msgid "Enable if the user can select multiple terms when filtering products"
|
467 |
msgstr ""
|
468 |
"Ενεργοποιήστε αν ο χρήστης μπορεί να επιλέξει πολλαπλούς όρους κατα την "
|
469 |
"ταξινόμηση προϊόντων"
|
470 |
|
471 |
+
#: plugin-options/filter-options.php:142
|
472 |
msgctxt "[Admin] Filter edit form"
|
473 |
msgid "Multiselect relation"
|
474 |
msgstr "Σχέση πολλαπλής επιλογής"
|
475 |
|
476 |
+
#: plugin-options/filter-options.php:148
|
477 |
msgctxt "[Admin] Filter edit form"
|
478 |
msgid "Choose how multiple terms selection should behave"
|
479 |
msgstr "Επιλέξτε την συμπεριφορά επιλογής πολλαπλών όρων"
|
480 |
|
481 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
482 |
msgctxt "[Admin] Filter edit form, sorting options"
|
483 |
msgid "Default sorting"
|
484 |
msgstr "Προεπιλεγμένη ταξινόμηση"
|
485 |
|
486 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Sort by popularity"
|
489 |
msgstr "Ταξινόμηση κατά δημοτικότητα"
|
490 |
|
491 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by average rating"
|
494 |
msgstr "Ταξινόμηση κατα μέση αξιολόγηση"
|
495 |
|
496 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by latest"
|
499 |
msgstr "Ταξινόμηση κατά τελευταίο"
|
500 |
|
501 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by price: low to high"
|
504 |
msgstr "Ταξινόμηση ανά τιμή: χαμηλή προς υψηλή"
|
505 |
|
506 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
507 |
msgctxt "[Admin] Filter edit form, sorting options"
|
508 |
msgid "Sort by price: high to low"
|
509 |
msgstr "Ταξινόμηση ανά τιμή: υψηλή προς χαμηλή"
|
510 |
|
511 |
+
#: includes/class-yith-wcan-filter.php:116
|
512 |
msgctxt "[Admin] Default filter title"
|
513 |
msgid "New filter"
|
514 |
msgstr "Νέο φίλτρο"
|
515 |
|
516 |
+
#: includes/class-yith-wcan-frontend.php:591
|
517 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
518 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
519 |
msgid "All"
|
520 |
msgstr "Όλα"
|
521 |
|
522 |
+
#: includes/class-yith-wcan-frontend.php:592
|
523 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
524 |
msgid "Search..."
|
525 |
msgstr "Αναζήτηση…"
|
526 |
|
527 |
+
#: includes/class-yith-wcan-frontend.php:593
|
528 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
529 |
msgid "No item found"
|
530 |
msgstr "Δεν βρέθηκε αντικείμενο"
|
531 |
|
532 |
#. translators: 1. Number of items to show.
|
533 |
+
#: includes/class-yith-wcan-frontend.php:595
|
534 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
535 |
msgid "Show %d more"
|
536 |
msgstr "Εμφάνιση %d περισσότερων"
|
537 |
|
538 |
+
#: includes/class-yith-wcan-frontend.php:596
|
539 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
540 |
msgid "Close"
|
541 |
msgstr "Κλείσιμο"
|
542 |
|
543 |
+
#: includes/class-yith-wcan-frontend.php:597
|
544 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
545 |
msgid "Save"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/class-yith-wcan-frontend.php:598
|
549 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
550 |
msgid "Show results"
|
551 |
msgstr "Εμφάνιση αποτελεσμάτων"
|
552 |
|
553 |
+
#: includes/class-yith-wcan-frontend.php:599
|
554 |
msgctxt ""
|
555 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
556 |
"selection"
|
557 |
msgid "Clear"
|
558 |
msgstr "Καθαρισμός"
|
559 |
|
560 |
+
#: includes/class-yith-wcan-frontend.php:600
|
561 |
msgctxt ""
|
562 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
563 |
"selection"
|
564 |
msgid "Clear All"
|
565 |
msgstr "Καθαρισμός Όλων"
|
566 |
|
567 |
+
#: includes/class-yith-wcan-install.php:95
|
568 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
569 |
msgid "Default preset"
|
570 |
msgstr "Προεπιλεγμένη προρύθμιση"
|
571 |
|
572 |
#. translators: 1. Taxonomy name.
|
573 |
+
#: includes/class-yith-wcan-install.php:285
|
574 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
575 |
msgid "Filter by %s"
|
576 |
msgstr "Ταξινόμηση κατά %s"
|
577 |
|
578 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
579 |
#, fuzzy
|
580 |
msgctxt "[Admin] Label in new preset page"
|
581 |
msgid "Default"
|
591 |
msgid "Enter a name to identify this filter preset"
|
592 |
msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτή την προρύθμιση φίλτρου"
|
593 |
|
594 |
+
#: templates/admin/preset-filters.php:22
|
595 |
msgctxt "[Admin] Label in new preset page"
|
596 |
msgid "Filters of this preset"
|
597 |
msgstr "Φίλτρα αυτής της προρύθμισης"
|
598 |
|
599 |
+
#: includes/class-yith-wcan-presets.php:95
|
600 |
+
#: includes/class-yith-wcan-presets.php:100
|
601 |
msgctxt "[Admin] name of presets custom post type"
|
602 |
msgid "Filter presets"
|
603 |
msgstr "Φίλτρο προρυθμίσεων"
|
604 |
|
605 |
+
#: includes/class-yith-wcan-presets.php:96
|
606 |
msgctxt "[Admin] singular name of presets custom post type"
|
607 |
msgid "Filter preset"
|
608 |
msgstr "Φίλτρο προρύθμισης"
|
609 |
|
610 |
+
#: includes/class-yith-wcan-presets.php:97
|
611 |
msgctxt "[Admin] add new filter preset label"
|
612 |
msgid "Add new preset"
|
613 |
msgstr "Προσθήκη νέας προρύθμισης"
|
614 |
|
615 |
+
#: includes/class-yith-wcan-presets.php:139
|
616 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
617 |
msgid "Convert widgets in a preset"
|
618 |
msgstr "Μετατροπή μικροεφαρμογών σε προρύθμιση"
|
619 |
|
620 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
621 |
msgctxt ""
|
622 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
623 |
"not exist"
|
625 |
msgstr "Προρύθμιση άκυρη."
|
626 |
|
627 |
#. translators: 1. Title of original preset.
|
628 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
629 |
msgctxt "[ADMIN] Title of the cloned preset"
|
630 |
msgid "%s - Copy"
|
631 |
msgstr "%s - Αντιγραφή"
|
632 |
|
633 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
634 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
635 |
msgid "YITH AJAX Filters Preset"
|
636 |
msgstr "Προρύθμιση Φίλτρων YITH AJAX"
|
637 |
|
638 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
639 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
640 |
msgid "YITH AJAX Filters Reset Button"
|
641 |
msgstr "Κουμπί Επαναφοράς Φίλτρων YITH AJAX"
|
642 |
|
643 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
644 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
645 |
msgctxt "[ELEMENTOR] Default preset option"
|
646 |
msgid "Choose an option"
|
647 |
msgstr "Διαλέξτε μια επιλογή"
|
648 |
|
649 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
650 |
msgctxt "[ELEMENTOR] Section title"
|
651 |
msgid "Filters"
|
652 |
msgstr "Φίλτρα"
|
653 |
|
654 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
655 |
msgctxt "[ELEMENTOR] Section title"
|
656 |
msgid "General"
|
657 |
msgstr "Γενικά"
|
658 |
|
659 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
660 |
msgctxt "[ELEMENTOR] Control label"
|
661 |
msgid "Preset"
|
662 |
msgstr "Προρύθμιση"
|
663 |
|
664 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
665 |
msgctxt "[ELEMENTOR] Widget description"
|
666 |
msgid ""
|
667 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
669 |
"Αυτή η μικροεφαρμογή θα εμφανίσει το κουμπί \"Επαναφορά φίλτρων\", όπου "
|
670 |
"τοποθετηθεί"
|
671 |
|
672 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
673 |
msgctxt "[ELEMENTOR] Widget description"
|
674 |
msgid ""
|
675 |
"It will allow users to reset the filer selection; it will only appear when "
|
678 |
"Θα επιτρέψει στους χρήστες να επαναρυθμίσουν την επιλογή φίλτρου. Θα "
|
679 |
"εμφανιστεί μόνο όταν υπάρχει ενεργό φίλτρο."
|
680 |
|
681 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
682 |
msgctxt "[ELEMENTOR] Widget description"
|
683 |
msgid ""
|
684 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
688 |
"“Επαναφορά φίλτρων” μέσα στη σελίδα σας, όταν η επιλογή “Επαναφορά θέσης "
|
689 |
"κουμπιού” δεν λειτουργεί για τον βρόχο προϊόντος"
|
690 |
|
691 |
+
#: includes/functions-yith-wcan.php:112
|
692 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
693 |
msgid "Color 1"
|
694 |
msgstr "Χρώμα 1"
|
695 |
|
696 |
+
#: includes/functions-yith-wcan.php:112
|
697 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
698 |
msgid "Color 2"
|
699 |
msgstr "Χρώμα 2"
|
700 |
|
701 |
+
#: includes/functions-yith-wcan.php:1026
|
702 |
msgctxt "[FRONTEND] Star rating template"
|
703 |
msgid "star"
|
704 |
msgid_plural "stars"
|
706 |
msgstr[1] "αστέρια"
|
707 |
|
708 |
#. translators: 1. Rating.
|
709 |
+
#: includes/functions-yith-wcan.php:1041
|
710 |
msgctxt "[FRONTEND] Star rating label"
|
711 |
msgid "Rated %s out of 5"
|
712 |
msgstr "Βαθμολογήθηκε με %s από 5"
|
713 |
|
714 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
715 |
msgctxt "[GUTENBERG]: block name"
|
716 |
msgid "YITH AJAX Filters Preset"
|
717 |
msgstr "Προρύθμιση Φίλτρων YITH AJAX"
|
718 |
|
719 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
720 |
msgctxt "[GUTENBERG]: block name"
|
721 |
msgid "YITH Reset Filters Button"
|
722 |
msgstr "Κουμπί Επαναφοράς Φίλτρων YITH"
|
723 |
|
724 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
725 |
msgctxt "[GUTENBERG]: block description"
|
726 |
msgid "Show filters from a preset"
|
727 |
msgstr "Εμφάνιση φίλτρων από προρύθμιση"
|
728 |
|
729 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
730 |
msgctxt "[GUTENBERG]: block description"
|
731 |
msgid ""
|
732 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
740 |
"φίλτρων” μέσα στη σελίδα, όταν η επιλογή “Επαναφορά θέσης κουμπιού” δεν "
|
741 |
"λειτουργεί για τον βρόχο προϊόντος"
|
742 |
|
743 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
744 |
msgctxt "[GUTENBERG]: attribute description"
|
745 |
msgid "Preset"
|
746 |
msgstr "Προρύθμιση"
|
747 |
|
748 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
749 |
msgctxt "[Admin] Preset table column header"
|
750 |
msgid "Preset name"
|
751 |
msgstr "Όνομα προρύθμισης"
|
752 |
|
753 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
754 |
msgctxt "[Admin] Preset table column header"
|
755 |
msgid "Shortcode"
|
756 |
msgstr "Μικροκώδικας"
|
757 |
|
758 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
759 |
msgctxt "[Admin] Preset edit action label"
|
760 |
msgid "Edit this preset"
|
761 |
msgstr "Επεξεργασία προρύθμισης"
|
762 |
|
763 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
764 |
msgctxt "[Admin] Preset clone action label"
|
765 |
msgid "Clone this preset"
|
766 |
msgstr "Κλωνοποίηση προρύθμισης"
|
767 |
|
768 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
769 |
msgctxt "[Admin] Preset delete action label"
|
770 |
msgid "Delete this preset"
|
771 |
msgstr "Διαγραφή προρύθμισης"
|
772 |
|
773 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
774 |
msgctxt "[Admin] Preset delete confirm label"
|
775 |
msgid "Are you sure you want to delete this preset?"
|
776 |
msgstr "Είστε σίγουρος ότι θέλετε να διαγράψετε αυτή τη προρύθμιση;"
|
777 |
|
778 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
779 |
msgctxt "[Admin] on-off yes"
|
780 |
msgid "YES"
|
781 |
msgstr "ΝΑΙ"
|
782 |
|
783 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
784 |
msgctxt "[Admin] on-off no"
|
785 |
msgid "NO"
|
786 |
msgstr "ΟΧΙ"
|
787 |
|
788 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
789 |
msgctxt ""
|
790 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
791 |
msgid "filter preset"
|
792 |
msgstr "προρύθμιση φίλτρου"
|
793 |
|
794 |
+
#: templates/admin/preset-filters.php:31
|
795 |
msgctxt ""
|
796 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
797 |
msgid "filter"
|
798 |
msgstr "φίλτρο"
|
799 |
|
800 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
801 |
msgctxt "[Admin] New preset button label"
|
802 |
msgid "Create a new preset"
|
803 |
msgstr "Δημιουργία νέας προρύθμισης"
|
804 |
|
805 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
806 |
msgctxt "[ADMIN] Name of the preset widget"
|
807 |
msgid "YITH AJAX Filters Preset"
|
808 |
msgstr "Προρύθμιση Φίλτρων YITH AJAX"
|
809 |
|
810 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
811 |
msgctxt "[ADMIN] Preset widget options"
|
812 |
msgid "Preset"
|
813 |
msgstr "Προρύθμιση"
|
814 |
|
815 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
816 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
817 |
msgctxt "[ADMIN] Preset widget options"
|
818 |
msgid ""
|
819 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
823 |
"Product Filter -> Προρυθμίσεις</a> και χρησιμοποιήστε την πρώτη σας "
|
824 |
"προρύθμιση"
|
825 |
|
826 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
827 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
828 |
msgid "YITH AJAX Product Filter"
|
829 |
msgstr "YITH AJAX Product Filter"
|
830 |
|
831 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
832 |
#, fuzzy
|
833 |
msgctxt ""
|
834 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
835 |
msgid "AND"
|
836 |
msgstr "ΚΑΙ"
|
837 |
|
838 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
839 |
msgctxt "[Plugin Name]"
|
840 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
841 |
msgstr ""
|
842 |
"Επαναφορά όλων των φίλτρων που έχουν οριστεί από το YITH WooCommerce AJAX "
|
843 |
"Product Filter"
|
844 |
|
845 |
+
#: plugin-options/filter-options.php:145
|
846 |
#, fuzzy
|
847 |
msgctxt ""
|
848 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
851 |
"ΚΑΙ - Τα αποτελέσματα πρέπει να αντιστοιχούν σε όλους τους επιλεγμένους "
|
852 |
"όρους ταυτόχρονα"
|
853 |
|
854 |
+
#: plugin-options/filter-options.php:146
|
855 |
#, fuzzy
|
856 |
msgctxt ""
|
857 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
1137 |
msgctxt "[ADMIN] Premium tab"
|
1138 |
msgid ""
|
1139 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1140 |
+
"view<br/>\n"
|
1141 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1142 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1143 |
+
"range (based on their budget availability)<br/>\n"
|
1144 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1145 |
"attributes available in your store, like color and size. For the color "
|
1146 |
"filter, you can either choose square or circular color swatches or use "
|
1147 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1148 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1149 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1150 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1151 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1152 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1153 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1154 |
+
"filter products and view only those with a discount<br/>\n"
|
1155 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1156 |
"filter products based on their needs and exclude out-of-stock products from "
|
1157 |
"the list"
|
1277 |
"easier to share)"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: templates/admin/preset-edit.php:31
|
1281 |
msgctxt "[Admin] Back link in new preset page"
|
1282 |
msgid "< back to preset list"
|
1283 |
msgstr "< πίσω στη λίστα προρύθμισης"
|
1284 |
|
1285 |
+
#: templates/admin/preset-edit.php:38
|
1286 |
msgctxt "[ADMIN] Title for new preset page"
|
1287 |
msgid "Edit filter preset"
|
1288 |
msgstr "Επεξεργασία προρύθμισης φίλτρου"
|
1289 |
|
1290 |
+
#: templates/admin/preset-edit.php:40
|
1291 |
msgctxt "[ADMIN] Title for new preset page"
|
1292 |
msgid "Add new filter preset"
|
1293 |
msgstr "Προσθήκη νέας προρύθμισης φίλτρου"
|
1294 |
|
1295 |
+
#: templates/admin/preset-edit.php:47
|
1296 |
msgctxt "[ADMIN] Preset save message"
|
1297 |
msgid "Preset saved correctly"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: templates/admin/preset-edit.php:93
|
1301 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1302 |
msgid "Save preset"
|
1303 |
msgstr "Αποθήκευση προρύθμισης"
|
1304 |
|
1305 |
+
#: templates/admin/preset-empty-content.php:29
|
1306 |
msgctxt "Alt text for empty preset image"
|
1307 |
msgid "Empty preset"
|
1308 |
msgstr "Κενή προρύθμιση"
|
1309 |
|
1310 |
#. translators: 1. Missing item name.
|
1311 |
+
#: templates/admin/preset-empty-content.php:35
|
1312 |
msgctxt "[Admin] Preset table empty message"
|
1313 |
msgid "You don't have any %s yet."
|
1314 |
msgstr "Δεν έχετε κανένα %s ακόμη."
|
1315 |
|
1316 |
+
#: templates/admin/preset-filter-term.php:30
|
1317 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1318 |
msgid "Label"
|
1319 |
msgstr "Επιγραφή"
|
1320 |
|
1321 |
+
#: templates/admin/preset-filter-term.php:35
|
1322 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1323 |
msgid "Tooltip"
|
1324 |
msgstr "Υπόμνηση"
|
1325 |
|
1326 |
+
#: templates/admin/preset-filter-term.php:41
|
1327 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1328 |
msgid "Color"
|
1329 |
msgstr "Χρώμα"
|
1330 |
|
1331 |
+
#: templates/admin/preset-filter.php:91
|
1332 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1333 |
msgid "Save Filter"
|
1334 |
msgstr "Αποθήκευση Φίλτρου"
|
1335 |
|
1336 |
+
#: templates/admin/preset-filter.php:92
|
1337 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1338 |
msgid "Delete Filter"
|
1339 |
msgstr "Διαγραφή Φίλτρου"
|
1340 |
|
1341 |
+
#: templates/admin/preset-filters.php:33
|
1342 |
msgctxt "[Admin] New filter button label"
|
1343 |
msgid "Add a new filter"
|
1344 |
msgstr "Προσθήκη νέου φίλτρου"
|
1345 |
|
1346 |
+
#: templates/admin/preset-filters.php:57
|
1347 |
msgctxt "[Admin] Add new filter in new preset page"
|
1348 |
msgid "+ Add filter"
|
1349 |
msgstr "+ Προσθήκη φίλτρου"
|
1355 |
msgid "See %d more filters"
|
1356 |
msgstr "Πριν από φίλτρα"
|
1357 |
|
1358 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1359 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1360 |
msgid "Use the new filter preset feature for your filters"
|
1361 |
msgstr ""
|
1362 |
"Χρησιμοποιήστε το νέο χαρακτηριστικό προρύθμισης φίλτρου για τα φίλτρα σας"
|
1363 |
|
1364 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1365 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1366 |
msgid ""
|
1367 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1376 |
"την μικροεφαρμογή Elementor."
|
1377 |
|
1378 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1379 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1380 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1381 |
msgid ""
|
1382 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1387 |
"χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
|
1388 |
|
1389 |
#. translators: 1. Url to docs.
|
1390 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1391 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1392 |
msgid ""
|
1393 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1396 |
"Σας προτείνουμε να <a href=\"%1$s\">διαβάσετε το εγχειρίδιο χρήσης</a> για "
|
1397 |
"να μάθετε πώς να χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
|
1398 |
|
1399 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1400 |
#, fuzzy
|
1401 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1402 |
msgid ""
|
1411 |
"μετακινηθούν μέσα στον πίνακα προρυθμίσεων φίλτρου.<br/><b>Μην ανησυχείτε, "
|
1412 |
"δεν θα χαθούν δεδομένα κατα τη διαδικασία.</b>"
|
1413 |
|
1414 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1415 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1416 |
msgid ""
|
1417 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1419 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1420 |
msgstr ""
|
1421 |
|
1422 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1423 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1424 |
msgid "Convert your widgets in a preset now"
|
1425 |
msgstr "Μετατρέψτε τις μικροεφαρμογές σας σε προρύθμιση τώρα"
|
1426 |
|
1427 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1428 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1429 |
msgid "No thanks"
|
1430 |
msgstr "Όχι, ευχαριστώ"
|
1431 |
|
1432 |
+
#: templates/filters/global/reset-filters.php:24
|
1433 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1434 |
msgid "Reset filters"
|
1435 |
msgstr "Επαναφορά φίλτρων"
|
1436 |
|
1437 |
+
#~ msgctxt "[Admin] Menu title"
|
1438 |
+
#~ msgid "Ajax Product Filter"
|
1439 |
+
#~ msgstr "Ajax Product Filter"
|
1440 |
+
|
1441 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1442 |
#~ msgid "All"
|
1443 |
#~ msgstr "Όλα"
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2021-02-12 13:30:42+0000\n"
|
10 |
"Language: es\n"
|
11 |
"MIME-Version: 1.0\n"
|
@@ -14,94 +14,94 @@ msgstr ""
|
|
14 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
-
#: includes/data-stores/class
|
18 |
msgid "Draft Preset"
|
19 |
msgstr "Borrador preestablecido"
|
20 |
|
21 |
-
#: includes/functions
|
22 |
-
#: includes/functions
|
23 |
msgid "Term"
|
24 |
msgstr "Término"
|
25 |
|
26 |
-
#: includes/functions
|
27 |
-
#: includes/widgets/class
|
28 |
msgid "Color"
|
29 |
msgstr "Color"
|
30 |
|
31 |
-
#: includes/functions
|
32 |
msgid "Labels"
|
33 |
msgstr "Etiquetas"
|
34 |
|
35 |
-
#: includes/widgets/class
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Filtrar la lista de productos sin recargar la página"
|
38 |
|
39 |
-
#: includes/widgets/class
|
40 |
msgid "Filters:"
|
41 |
msgstr "Filtros"
|
42 |
|
43 |
-
#: includes/widgets/class
|
44 |
msgid "List"
|
45 |
msgstr "Lista"
|
46 |
|
47 |
-
#: includes/widgets/class
|
48 |
msgid "Label"
|
49 |
msgstr "Etiqueta"
|
50 |
|
51 |
-
#: includes/widgets/class
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Pestaña desplegable"
|
54 |
|
55 |
-
#: includes/widgets/class
|
56 |
-
#: includes/widgets/class
|
57 |
msgid "Title"
|
58 |
msgstr "Título"
|
59 |
|
60 |
-
#: includes/widgets/class
|
61 |
msgid "Type:"
|
62 |
msgstr "Tipo:"
|
63 |
|
64 |
-
#: includes/widgets/class
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Tipo de consulta:"
|
67 |
|
68 |
-
#: includes/widgets/class
|
69 |
msgid "OR"
|
70 |
msgstr "O"
|
71 |
|
72 |
-
#: includes/widgets/class
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Atributo:"
|
75 |
|
76 |
-
#: includes/widgets/class
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Mostrar (predeterminado todo):"
|
79 |
|
80 |
-
#: includes/widgets/class
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Todo (no jerárquico)"
|
83 |
|
84 |
-
#: includes/widgets/class
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Todo (jerárquico)"
|
87 |
|
88 |
-
#: includes/widgets/class
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Sólo superior"
|
91 |
|
92 |
-
#: includes/widgets/class
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "Clase CSS personalizada"
|
95 |
|
96 |
-
#: includes/widgets/class
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr "YITH AJAX Restablecer filtro"
|
99 |
|
100 |
-
#: includes/widgets/class
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Restablecer todos los filtros"
|
103 |
|
104 |
-
#: includes/widgets/class
|
105 |
msgid "Button Label"
|
106 |
msgstr "Etiqueta del botón"
|
107 |
|
@@ -138,75 +138,70 @@ msgstr ""
|
|
138 |
"yithemes.com/\" target=\"_blank\">Obtén más plugins para tu comercio "
|
139 |
"electrónico en <strong>YITH</strong></a>"
|
140 |
|
141 |
-
#: includes/class
|
142 |
msgctxt "[Admin] Copy confirmation message"
|
143 |
msgid "Content copied to your clipboard"
|
144 |
msgstr "Contenido copiado en tu portapapeles"
|
145 |
|
146 |
-
#: includes/class
|
147 |
msgctxt "[Admin] Confirm filter delete message"
|
148 |
msgid "Are you sure you want to delete this item?"
|
149 |
msgstr "¿Estás seguro de que quieres eliminar este artículo?"
|
150 |
|
151 |
#. translators: 1. Number of items that will be added.
|
152 |
-
#: includes/class
|
153 |
msgctxt "[Admin] Confirm add all terms message"
|
154 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
155 |
msgstr ""
|
156 |
"¿Estás seguro de que quieres continuar? Esta operación añadirá %s artículos"
|
157 |
|
158 |
-
#: includes/class
|
159 |
msgctxt "[Admin] Error message"
|
160 |
msgid "\"Filter title\" is a required field"
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: includes/class
|
164 |
msgctxt "[Admin] Message shown when filter has empty title"
|
165 |
msgid "< no title >"
|
166 |
msgstr "< sin título >"
|
167 |
|
168 |
-
#: includes/class
|
169 |
msgctxt "[Admin] Media library title, when selecting images"
|
170 |
msgid "Select media you want to use"
|
171 |
msgstr "Selecciona los medios que quieres usar"
|
172 |
|
173 |
-
#: includes/class
|
174 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
175 |
msgid "Use this media"
|
176 |
msgstr "Utiliza estos medios"
|
177 |
|
178 |
-
#: includes/class
|
179 |
msgctxt "[Admin] tab name"
|
180 |
msgid "Filter presets"
|
181 |
msgstr "Filtrar prestablecidos"
|
182 |
|
183 |
-
#: includes/class
|
184 |
msgctxt "[Admin] tab name"
|
185 |
msgid "General settings"
|
186 |
msgstr "Ajustes generales"
|
187 |
|
188 |
-
#: includes/class
|
189 |
#, fuzzy
|
190 |
msgctxt "[Admin] tab name"
|
191 |
msgid "SEO"
|
192 |
msgstr "SEO"
|
193 |
|
194 |
-
#: includes/class
|
195 |
msgctxt "[Admin] tab name"
|
196 |
msgid "Premium Version"
|
197 |
msgstr "Versión premium"
|
198 |
|
199 |
-
#: includes/class
|
200 |
msgctxt "[Admin] tab name"
|
201 |
msgid "Legacy"
|
202 |
msgstr "Heredado"
|
203 |
|
204 |
-
#: includes/class
|
205 |
-
msgctxt "[Admin] Menu title"
|
206 |
-
msgid "Ajax Product Filter"
|
207 |
-
msgstr "Ajax Product Filter"
|
208 |
-
|
209 |
-
#: includes/class.yith-wcan-admin.php:199
|
210 |
msgctxt "[Admin] Plugin description"
|
211 |
msgid ""
|
212 |
"It allows your users to find the product they are looking for as quickly as "
|
@@ -215,44 +210,44 @@ msgstr ""
|
|
215 |
"Permite a tus usuarios encontrar el producto que están buscando lo más "
|
216 |
"rápido posible."
|
217 |
|
218 |
-
#: includes/class
|
219 |
msgctxt "[HELP TAB] Video title"
|
220 |
msgid ""
|
221 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
222 |
"the shop page:</b>"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/class
|
226 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
227 |
msgid "item"
|
228 |
msgstr "artículo"
|
229 |
|
230 |
-
#: includes/class
|
231 |
msgctxt "[Admin] Preset table empty message second line"
|
232 |
msgid "But don't worry, here you can create your first one!"
|
233 |
msgstr "¡Pero no te preocupes, aquí puedes crear el primero!"
|
234 |
|
235 |
-
#: includes/class
|
236 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
237 |
msgid "Clear Product Filter transients"
|
238 |
msgstr "Limpiar datos transitorios de filtro de producto"
|
239 |
|
240 |
-
#: includes/class
|
241 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
242 |
msgid "Run filter widgets upgrade"
|
243 |
msgstr "Activar actualización de widgets de filtro"
|
244 |
|
245 |
-
#: includes/class
|
246 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
247 |
msgid "Clear"
|
248 |
msgstr "Limpìar"
|
249 |
|
250 |
-
#: includes/class
|
251 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
252 |
msgid "Run"
|
253 |
msgstr "Activar"
|
254 |
|
255 |
-
#: includes/class
|
256 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
257 |
msgid ""
|
258 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -264,7 +259,7 @@ msgstr ""
|
|
264 |
"configuración del producto y los filtros no muestran los resultados "
|
265 |
"esperados."
|
266 |
|
267 |
-
#: includes/class
|
268 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
269 |
msgid ""
|
270 |
"This will create a preset for any sidebar of your shop containing filter "
|
@@ -274,32 +269,32 @@ msgstr ""
|
|
274 |
"que contenta widgets de filtro; el pre establecimiento será configurado para "
|
275 |
"coincidir con las especificaciones de los widgets"
|
276 |
|
277 |
-
#: includes/class
|
278 |
msgctxt "[Admin] Filter edit form"
|
279 |
msgid "Taxonomy"
|
280 |
msgstr "Taxonomía"
|
281 |
|
282 |
-
#: includes/class
|
283 |
msgctxt "[Admin] Filter edit form"
|
284 |
msgid "Checkbox"
|
285 |
msgstr "Casilla de verificación"
|
286 |
|
287 |
-
#: includes/class
|
288 |
msgctxt "[Admin] Filter edit form"
|
289 |
msgid "Select"
|
290 |
msgstr "Seleccionar"
|
291 |
|
292 |
-
#: includes/class
|
293 |
msgctxt "[Admin] Filter edit form"
|
294 |
msgid "Text"
|
295 |
msgstr "Texto"
|
296 |
|
297 |
-
#: includes/class
|
298 |
msgctxt "[Admin] Filter edit form"
|
299 |
msgid "Color Swatches"
|
300 |
msgstr "Muestras de color"
|
301 |
|
302 |
-
#: includes/class
|
303 |
msgctxt "[Admin] Filter edit form"
|
304 |
msgid "Label"
|
305 |
msgstr "Etiqueta"
|
@@ -314,32 +309,32 @@ msgctxt "[Admin] Filter edit form"
|
|
314 |
msgid "Enter a name to identify this filter"
|
315 |
msgstr "Introduce un nombre para identificar este filtro"
|
316 |
|
317 |
-
#: plugin-options/filter-options.php:
|
318 |
msgctxt "[Admin] Filter edit form"
|
319 |
msgid "Filter for"
|
320 |
msgstr "Filtrar por"
|
321 |
|
322 |
-
#: plugin-options/filter-options.php:
|
323 |
msgctxt "[Admin] Filter edit form"
|
324 |
msgid "Select the parameters you wish to filter for"
|
325 |
msgstr "Selecciona los parámetros por los que te gustaría filtrar"
|
326 |
|
327 |
-
#: plugin-options/filter-options.php:
|
328 |
msgctxt "[Admin] Filter edit form"
|
329 |
msgid "Choose taxonomy"
|
330 |
msgstr "Escoger taxonomía"
|
331 |
|
332 |
-
#: plugin-options/filter-options.php:
|
333 |
msgctxt "[Admin] Filter edit form"
|
334 |
msgid "Select which taxonomy to use for this filter"
|
335 |
msgstr "Selecciona qué categoría usar para este filtro"
|
336 |
|
337 |
-
#: plugin-options/filter-options.php:
|
338 |
msgctxt "[Admin] Filter edit form"
|
339 |
msgid "Auto-populate with all terms"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: plugin-options/filter-options.php:
|
343 |
msgctxt "[Admin] Filter edit form"
|
344 |
msgid ""
|
345 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -348,73 +343,73 @@ msgid ""
|
|
348 |
"well.</span>"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: plugin-options/filter-options.php:
|
352 |
msgctxt "[Admin] Filter edit form"
|
353 |
msgid "Choose terms"
|
354 |
msgstr "Escoger términos"
|
355 |
|
356 |
-
#: plugin-options/filter-options.php:
|
357 |
msgctxt "[Admin] Filter edit form"
|
358 |
msgid "Select which terms to use for filtering"
|
359 |
msgstr "Selecciona qué términos usar para filtrar"
|
360 |
|
361 |
-
#: plugin-options/filter-options.php:
|
362 |
msgctxt "[Admin] Filter edit form"
|
363 |
msgid "Filter type"
|
364 |
msgstr "Tipo de filtro"
|
365 |
|
366 |
-
#: plugin-options/filter-options.php:
|
367 |
msgctxt "[Admin] Filter edit form"
|
368 |
msgid "Select the filter type for this filter"
|
369 |
msgstr "Selecciona el tipo para este filtro"
|
370 |
|
371 |
-
#: plugin-options/filter-options.php:
|
372 |
#, fuzzy
|
373 |
msgctxt "[Admin] Filter edit form"
|
374 |
msgid "Labels"
|
375 |
msgstr "Etiquetas"
|
376 |
|
377 |
-
#: plugin-options/filter-options.php:
|
378 |
#, fuzzy
|
379 |
msgctxt "[Admin] Filter edit form"
|
380 |
msgid "Show below"
|
381 |
msgstr "Mostrar resultados"
|
382 |
|
383 |
-
#: plugin-options/filter-options.php:
|
384 |
#, fuzzy
|
385 |
msgctxt "[Admin] Filter edit form"
|
386 |
msgid "Show on the right"
|
387 |
msgstr "Mostrar recuento de artículos"
|
388 |
|
389 |
-
#: plugin-options/filter-options.php:
|
390 |
msgctxt "[Admin] Filter edit form"
|
391 |
msgid "Hide"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: plugin-options/filter-options.php:
|
395 |
#, fuzzy
|
396 |
msgctxt "[Admin] Filter edit form"
|
397 |
msgid "Choose if and where to show the label inside your filter"
|
398 |
msgstr "Escoge el estilo del filtro dentro de los widgets"
|
399 |
|
400 |
-
#: plugin-options/filter-options.php:
|
401 |
msgctxt "[Admin] Filter edit form"
|
402 |
msgid "Columns number"
|
403 |
msgstr "Número de columnas"
|
404 |
|
405 |
-
#: plugin-options/filter-options.php:
|
406 |
msgctxt "[Admin] Filter edit form"
|
407 |
msgid "Set the number of items per row you want to show for this design"
|
408 |
msgstr ""
|
409 |
"Establece el número de artículos por fila que quieres mostrar para este "
|
410 |
"diseño"
|
411 |
|
412 |
-
#: plugin-options/filter-options.php:
|
413 |
msgctxt "[Admin] Filter edit form"
|
414 |
msgid "Customize terms"
|
415 |
msgstr "Términos personalizados"
|
416 |
|
417 |
-
#: plugin-options/filter-options.php:
|
418 |
msgctxt "[Admin] Filter edit form"
|
419 |
msgid ""
|
420 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -428,157 +423,157 @@ msgid ""
|
|
428 |
"this option and use the boxes below</span>"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: plugin-options/filter-options.php:
|
432 |
#, fuzzy
|
433 |
msgctxt "[Admin] Filter edit form"
|
434 |
msgid "Terms options"
|
435 |
msgstr "Opciones de orden"
|
436 |
|
437 |
-
#: plugin-options/filter-options.php:
|
438 |
msgctxt "[Admin] Filter edit form"
|
439 |
msgid "Show hierarchy"
|
440 |
msgstr "Mostrar jerarquía"
|
441 |
|
442 |
-
#: plugin-options/filter-options.php:
|
443 |
msgctxt "[Admin] Filter edit form"
|
444 |
msgid "No, show all terms in same level"
|
445 |
msgstr "No, mostrar todos los términos en el mismo nivel"
|
446 |
|
447 |
-
#: plugin-options/filter-options.php:
|
448 |
msgctxt "[Admin] Filter edit form"
|
449 |
msgid "No, show only parent terms"
|
450 |
msgstr "No, mostrar solo términos superiores"
|
451 |
|
452 |
-
#: plugin-options/filter-options.php:
|
453 |
msgctxt "[Admin] Filter edit form"
|
454 |
msgid "Yes"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: plugin-options/filter-options.php:
|
458 |
msgctxt "[Admin] Filter edit form"
|
459 |
msgid "Choose how to show terms hierarchy"
|
460 |
msgstr "Elige cómo mostrar los términos jerárquicamente"
|
461 |
|
462 |
-
#: plugin-options/filter-options.php:
|
463 |
msgctxt "[Admin] Filter edit form"
|
464 |
msgid "Allow multiple selection"
|
465 |
msgstr "Permitir selección múltiple"
|
466 |
|
467 |
-
#: plugin-options/filter-options.php:
|
468 |
msgctxt "[Admin] Filter edit form"
|
469 |
msgid "Enable if the user can select multiple terms when filtering products"
|
470 |
msgstr ""
|
471 |
"Activa si el usuario puede seleccionar múltiples términos al filtrar los "
|
472 |
"productos"
|
473 |
|
474 |
-
#: plugin-options/filter-options.php:
|
475 |
msgctxt "[Admin] Filter edit form"
|
476 |
msgid "Multiselect relation"
|
477 |
msgstr "Relación de multi-selección"
|
478 |
|
479 |
-
#: plugin-options/filter-options.php:
|
480 |
msgctxt "[Admin] Filter edit form"
|
481 |
msgid "Choose how multiple terms selection should behave"
|
482 |
msgstr "Escoge cómo debe comportarse la selección de términos múltiples"
|
483 |
|
484 |
-
#: includes/class
|
485 |
msgctxt "[Admin] Filter edit form, sorting options"
|
486 |
msgid "Default sorting"
|
487 |
msgstr "Orden predeterminado"
|
488 |
|
489 |
-
#: includes/class
|
490 |
msgctxt "[Admin] Filter edit form, sorting options"
|
491 |
msgid "Sort by popularity"
|
492 |
msgstr "Ordenar por popularidad"
|
493 |
|
494 |
-
#: includes/class
|
495 |
msgctxt "[Admin] Filter edit form, sorting options"
|
496 |
msgid "Sort by average rating"
|
497 |
msgstr "Ordenar por promedio de valoración"
|
498 |
|
499 |
-
#: includes/class
|
500 |
msgctxt "[Admin] Filter edit form, sorting options"
|
501 |
msgid "Sort by latest"
|
502 |
msgstr "Ordenar por último"
|
503 |
|
504 |
-
#: includes/class
|
505 |
msgctxt "[Admin] Filter edit form, sorting options"
|
506 |
msgid "Sort by price: low to high"
|
507 |
msgstr "Ordenar por precio: de bajo a alto"
|
508 |
|
509 |
-
#: includes/class
|
510 |
msgctxt "[Admin] Filter edit form, sorting options"
|
511 |
msgid "Sort by price: high to low"
|
512 |
msgstr "Ordenar por precio: de alto a bajo"
|
513 |
|
514 |
-
#: includes/class
|
515 |
msgctxt "[Admin] Default filter title"
|
516 |
msgid "New filter"
|
517 |
msgstr "Nuevo filtro"
|
518 |
|
519 |
-
#: includes/class
|
520 |
-
#: includes/filters/class
|
521 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
522 |
msgid "All"
|
523 |
msgstr "Todo"
|
524 |
|
525 |
-
#: includes/class
|
526 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
527 |
msgid "Search..."
|
528 |
msgstr "Buscar..."
|
529 |
|
530 |
-
#: includes/class
|
531 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
532 |
msgid "No item found"
|
533 |
msgstr "No se han encontrado artículos."
|
534 |
|
535 |
#. translators: 1. Number of items to show.
|
536 |
-
#: includes/class
|
537 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
538 |
msgid "Show %d more"
|
539 |
msgstr "Mostrar %d más"
|
540 |
|
541 |
-
#: includes/class
|
542 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
543 |
msgid "Close"
|
544 |
msgstr "Cerrar"
|
545 |
|
546 |
-
#: includes/class
|
547 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
548 |
msgid "Save"
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: includes/class
|
552 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
553 |
msgid "Show results"
|
554 |
msgstr "Mostrar resultados"
|
555 |
|
556 |
-
#: includes/class
|
557 |
msgctxt ""
|
558 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
559 |
"selection"
|
560 |
msgid "Clear"
|
561 |
msgstr "Limpiar"
|
562 |
|
563 |
-
#: includes/class
|
564 |
msgctxt ""
|
565 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
566 |
"selection"
|
567 |
msgid "Clear All"
|
568 |
msgstr "Limpiar todo"
|
569 |
|
570 |
-
#: includes/class
|
571 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
572 |
msgid "Default preset"
|
573 |
msgstr "Pre establecimiento predeterminado"
|
574 |
|
575 |
#. translators: 1. Taxonomy name.
|
576 |
-
#: includes/class
|
577 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
578 |
msgid "Filter by %s"
|
579 |
msgstr "Filtrar por %s"
|
580 |
|
581 |
-
#: includes/class
|
582 |
#, fuzzy
|
583 |
msgctxt "[Admin] Label in new preset page"
|
584 |
msgid "Default"
|
@@ -594,33 +589,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
594 |
msgid "Enter a name to identify this filter preset"
|
595 |
msgstr "Introduce un nombre para identificar este filtro pre establecido"
|
596 |
|
597 |
-
#: templates/admin/preset-filters.php:
|
598 |
msgctxt "[Admin] Label in new preset page"
|
599 |
msgid "Filters of this preset"
|
600 |
msgstr "Filtros para este pre establecimiento"
|
601 |
|
602 |
-
#: includes/class
|
603 |
-
#: includes/class
|
604 |
msgctxt "[Admin] name of presets custom post type"
|
605 |
msgid "Filter presets"
|
606 |
msgstr "Pre establecimientos de filtro"
|
607 |
|
608 |
-
#: includes/class
|
609 |
msgctxt "[Admin] singular name of presets custom post type"
|
610 |
msgid "Filter preset"
|
611 |
msgstr "Pre establecimiento de filtro"
|
612 |
|
613 |
-
#: includes/class
|
614 |
msgctxt "[Admin] add new filter preset label"
|
615 |
msgid "Add new preset"
|
616 |
msgstr "Añadir nuevo pre establecimiento"
|
617 |
|
618 |
-
#: includes/class
|
619 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
620 |
msgid "Convert widgets in a preset"
|
621 |
msgstr "Convertir widgets en un pre establecimiento"
|
622 |
|
623 |
-
#: includes/data-stores/class
|
624 |
msgctxt ""
|
625 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
626 |
"not exist"
|
@@ -628,50 +623,50 @@ msgid "Invalid preset."
|
|
628 |
msgstr "Pre establecimiento no válido."
|
629 |
|
630 |
#. translators: 1. Title of original preset.
|
631 |
-
#: includes/data-stores/class
|
632 |
msgctxt "[ADMIN] Title of the cloned preset"
|
633 |
msgid "%s - Copy"
|
634 |
msgstr "%s - Copiar"
|
635 |
|
636 |
-
#: includes/elementor/class
|
637 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
638 |
msgid "YITH AJAX Filters Preset"
|
639 |
msgstr "YITH AJAX Pre establecimiento de filtros"
|
640 |
|
641 |
-
#: includes/elementor/class
|
642 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
643 |
msgid "YITH AJAX Filters Reset Button"
|
644 |
msgstr "YITH AJAX Botón de restablecimiento de filtros"
|
645 |
|
646 |
-
#: includes/elementor/class
|
647 |
-
#: includes/shortcodes/class
|
648 |
msgctxt "[ELEMENTOR] Default preset option"
|
649 |
msgid "Choose an option"
|
650 |
msgstr "Escoge una opción"
|
651 |
|
652 |
-
#: includes/elementor/class
|
653 |
msgctxt "[ELEMENTOR] Section title"
|
654 |
msgid "Filters"
|
655 |
msgstr "Filtros"
|
656 |
|
657 |
-
#: includes/elementor/class
|
658 |
msgctxt "[ELEMENTOR] Section title"
|
659 |
msgid "General"
|
660 |
msgstr "General"
|
661 |
|
662 |
-
#: includes/elementor/class
|
663 |
msgctxt "[ELEMENTOR] Control label"
|
664 |
msgid "Preset"
|
665 |
msgstr "Pre establecimiento"
|
666 |
|
667 |
-
#: includes/elementor/class
|
668 |
msgctxt "[ELEMENTOR] Widget description"
|
669 |
msgid ""
|
670 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
671 |
msgstr ""
|
672 |
"Este widget mostrará el botón ''Restablecer filtros'' en donde se encuentre"
|
673 |
|
674 |
-
#: includes/elementor/class
|
675 |
msgctxt "[ELEMENTOR] Widget description"
|
676 |
msgid ""
|
677 |
"It will allow users to reset the filer selection; it will only appear when "
|
@@ -680,7 +675,7 @@ msgstr ""
|
|
680 |
"Permitirá a los usuarios restablecer la selección de filtro; solo aparecerá "
|
681 |
"cuando haya un filtro activo."
|
682 |
|
683 |
-
#: includes/elementor/class
|
684 |
msgctxt "[ELEMENTOR] Widget description"
|
685 |
msgid ""
|
686 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
@@ -690,17 +685,17 @@ msgstr ""
|
|
690 |
"dentro de tu página, cuando la opción ''Posición del botón Restablecer'' no "
|
691 |
"funcione para el bucle de tus productos"
|
692 |
|
693 |
-
#: includes/functions
|
694 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
695 |
msgid "Color 1"
|
696 |
msgstr "Color 1"
|
697 |
|
698 |
-
#: includes/functions
|
699 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
700 |
msgid "Color 2"
|
701 |
msgstr "Color 2"
|
702 |
|
703 |
-
#: includes/functions
|
704 |
msgctxt "[FRONTEND] Star rating template"
|
705 |
msgid "star"
|
706 |
msgid_plural "stars"
|
@@ -708,27 +703,27 @@ msgstr[0] "estrella"
|
|
708 |
msgstr[1] "estrellas"
|
709 |
|
710 |
#. translators: 1. Rating.
|
711 |
-
#: includes/functions
|
712 |
msgctxt "[FRONTEND] Star rating label"
|
713 |
msgid "Rated %s out of 5"
|
714 |
msgstr "Valorado en %s sobre 5"
|
715 |
|
716 |
-
#: includes/shortcodes/class
|
717 |
msgctxt "[GUTENBERG]: block name"
|
718 |
msgid "YITH AJAX Filters Preset"
|
719 |
msgstr "YITH AJAX Pre establecimiento de filtros"
|
720 |
|
721 |
-
#: includes/shortcodes/class
|
722 |
msgctxt "[GUTENBERG]: block name"
|
723 |
msgid "YITH Reset Filters Button"
|
724 |
msgstr "YITH Botón de restablecimiento de filtros"
|
725 |
|
726 |
-
#: includes/shortcodes/class
|
727 |
msgctxt "[GUTENBERG]: block description"
|
728 |
msgid "Show filters from a preset"
|
729 |
msgstr "Mostrar filtros de un pre establecimiento"
|
730 |
|
731 |
-
#: includes/shortcodes/class
|
732 |
msgctxt "[GUTENBERG]: block description"
|
733 |
msgid ""
|
734 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -742,80 +737,80 @@ msgstr ""
|
|
742 |
"opción ''Posición del botón Restablecer' no funcione en el bucle de tus "
|
743 |
"productos"
|
744 |
|
745 |
-
#: includes/shortcodes/class
|
746 |
msgctxt "[GUTENBERG]: attribute description"
|
747 |
msgid "Preset"
|
748 |
msgstr "Pre establecimiento"
|
749 |
|
750 |
-
#: includes/tables/class
|
751 |
msgctxt "[Admin] Preset table column header"
|
752 |
msgid "Preset name"
|
753 |
msgstr "Nombre del pre establecimiento"
|
754 |
|
755 |
-
#: includes/tables/class
|
756 |
msgctxt "[Admin] Preset table column header"
|
757 |
msgid "Shortcode"
|
758 |
msgstr "Shortcode"
|
759 |
|
760 |
-
#: includes/tables/class
|
761 |
msgctxt "[Admin] Preset edit action label"
|
762 |
msgid "Edit this preset"
|
763 |
msgstr "Editar este pre establecimiento"
|
764 |
|
765 |
-
#: includes/tables/class
|
766 |
msgctxt "[Admin] Preset clone action label"
|
767 |
msgid "Clone this preset"
|
768 |
msgstr "Clonar este pre establecimiento"
|
769 |
|
770 |
-
#: includes/tables/class
|
771 |
msgctxt "[Admin] Preset delete action label"
|
772 |
msgid "Delete this preset"
|
773 |
msgstr "Eliminar este pre establecimiento"
|
774 |
|
775 |
-
#: includes/tables/class
|
776 |
msgctxt "[Admin] Preset delete confirm label"
|
777 |
msgid "Are you sure you want to delete this preset?"
|
778 |
msgstr "¿Estás seguro de que quieres eliminar este pre establecimiento?"
|
779 |
|
780 |
-
#: includes/tables/class
|
781 |
msgctxt "[Admin] on-off yes"
|
782 |
msgid "YES"
|
783 |
msgstr "SÍ"
|
784 |
|
785 |
-
#: includes/tables/class
|
786 |
msgctxt "[Admin] on-off no"
|
787 |
msgid "NO"
|
788 |
msgstr "NO"
|
789 |
|
790 |
-
#: includes/tables/class
|
791 |
msgctxt ""
|
792 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
793 |
msgid "filter preset"
|
794 |
msgstr "Pre establecimiento de filtro"
|
795 |
|
796 |
-
#: templates/admin/preset-filters.php:
|
797 |
msgctxt ""
|
798 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
799 |
msgid "filter"
|
800 |
msgstr "filtro"
|
801 |
|
802 |
-
#: includes/tables/class
|
803 |
msgctxt "[Admin] New preset button label"
|
804 |
msgid "Create a new preset"
|
805 |
msgstr "Crea un nuevo pre establecimiento"
|
806 |
|
807 |
-
#: includes/widgets/class
|
808 |
msgctxt "[ADMIN] Name of the preset widget"
|
809 |
msgid "YITH AJAX Filters Preset"
|
810 |
msgstr "YITH AJAX Pre establecimiento de filtros"
|
811 |
|
812 |
-
#: includes/widgets/class
|
813 |
msgctxt "[ADMIN] Preset widget options"
|
814 |
msgid "Preset"
|
815 |
msgstr "Pre establecimiento"
|
816 |
|
817 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
818 |
-
#: includes/widgets/class
|
819 |
msgctxt "[ADMIN] Preset widget options"
|
820 |
msgid ""
|
821 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -824,26 +819,26 @@ msgstr ""
|
|
824 |
"Por favor, ve al <a href=\"%s\">Panel de WP-> YITH -> Ajax Product Filter -> "
|
825 |
"Pre establecimientos</a> y crea tu primer pre establecimiento"
|
826 |
|
827 |
-
#: includes/widgets/class
|
828 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
829 |
msgid "YITH AJAX Product Filter"
|
830 |
msgstr "YITH Ajax Filtro de producto"
|
831 |
|
832 |
-
#: includes/widgets/class
|
833 |
#, fuzzy
|
834 |
msgctxt ""
|
835 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
836 |
msgid "AND"
|
837 |
msgstr "Y"
|
838 |
|
839 |
-
#: includes/widgets/class
|
840 |
msgctxt "[Plugin Name]"
|
841 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
842 |
msgstr ""
|
843 |
"Restablecer todos los filtros establecidos por YITH WooCommerce Ajax Product "
|
844 |
"Filter"
|
845 |
|
846 |
-
#: plugin-options/filter-options.php:
|
847 |
#, fuzzy
|
848 |
msgctxt ""
|
849 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -852,7 +847,7 @@ msgstr ""
|
|
852 |
"Y . Los resultados deben coincidir con los términos seleccionados al mismo "
|
853 |
"tiempo"
|
854 |
|
855 |
-
#: plugin-options/filter-options.php:
|
856 |
#, fuzzy
|
857 |
msgctxt ""
|
858 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -1139,21 +1134,21 @@ msgstr ""
|
|
1139 |
msgctxt "[ADMIN] Premium tab"
|
1140 |
msgid ""
|
1141 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1142 |
-
"view<br/>\
|
1143 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1144 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1145 |
-
"range (based on their budget availability)<br/>\
|
1146 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1147 |
"attributes available in your store, like color and size. For the color "
|
1148 |
"filter, you can either choose square or circular color swatches or use "
|
1149 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1150 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1151 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1152 |
-
"concentrate only on high-rated ones)<br/>\
|
1153 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1154 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1155 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1156 |
-
"filter products and view only those with a discount<br/>\
|
1157 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1158 |
"filter products based on their needs and exclude out-of-stock products from "
|
1159 |
"the list"
|
@@ -1279,73 +1274,73 @@ msgid ""
|
|
1279 |
"easier to share)"
|
1280 |
msgstr ""
|
1281 |
|
1282 |
-
#: templates/admin/preset-edit.php:
|
1283 |
msgctxt "[Admin] Back link in new preset page"
|
1284 |
msgid "< back to preset list"
|
1285 |
msgstr "< volver a la lista de pre establecimiento"
|
1286 |
|
1287 |
-
#: templates/admin/preset-edit.php:
|
1288 |
msgctxt "[ADMIN] Title for new preset page"
|
1289 |
msgid "Edit filter preset"
|
1290 |
msgstr "Editar pre establecimiento de filtro"
|
1291 |
|
1292 |
-
#: templates/admin/preset-edit.php:
|
1293 |
msgctxt "[ADMIN] Title for new preset page"
|
1294 |
msgid "Add new filter preset"
|
1295 |
msgstr "Añadir nuevo filtro pre establecido"
|
1296 |
|
1297 |
-
#: templates/admin/preset-edit.php:
|
1298 |
msgctxt "[ADMIN] Preset save message"
|
1299 |
msgid "Preset saved correctly"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: templates/admin/preset-edit.php:
|
1303 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1304 |
msgid "Save preset"
|
1305 |
msgstr "Guardar pre establecimiento"
|
1306 |
|
1307 |
-
#: templates/admin/preset-empty-content.php:
|
1308 |
msgctxt "Alt text for empty preset image"
|
1309 |
msgid "Empty preset"
|
1310 |
msgstr "Pre establecimiento vacío"
|
1311 |
|
1312 |
#. translators: 1. Missing item name.
|
1313 |
-
#: templates/admin/preset-empty-content.php:
|
1314 |
msgctxt "[Admin] Preset table empty message"
|
1315 |
msgid "You don't have any %s yet."
|
1316 |
msgstr "No tienes ningún %s aún."
|
1317 |
|
1318 |
-
#: templates/admin/preset-filter-term.php:
|
1319 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1320 |
msgid "Label"
|
1321 |
msgstr "Etiqueta"
|
1322 |
|
1323 |
-
#: templates/admin/preset-filter-term.php:
|
1324 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1325 |
msgid "Tooltip"
|
1326 |
msgstr "Información emergente"
|
1327 |
|
1328 |
-
#: templates/admin/preset-filter-term.php:
|
1329 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1330 |
msgid "Color"
|
1331 |
msgstr "Color"
|
1332 |
|
1333 |
-
#: templates/admin/preset-filter.php:
|
1334 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1335 |
msgid "Save Filter"
|
1336 |
msgstr "Guardar filtro"
|
1337 |
|
1338 |
-
#: templates/admin/preset-filter.php:
|
1339 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1340 |
msgid "Delete Filter"
|
1341 |
msgstr "Eliminar filtro"
|
1342 |
|
1343 |
-
#: templates/admin/preset-filters.php:
|
1344 |
msgctxt "[Admin] New filter button label"
|
1345 |
msgid "Add a new filter"
|
1346 |
msgstr "Añadir nuevo filtro"
|
1347 |
|
1348 |
-
#: templates/admin/preset-filters.php:
|
1349 |
msgctxt "[Admin] Add new filter in new preset page"
|
1350 |
msgid "+ Add filter"
|
1351 |
msgstr "+ Añadir filtro"
|
@@ -1357,12 +1352,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1357 |
msgid "See %d more filters"
|
1358 |
msgstr "Antes de los filtros"
|
1359 |
|
1360 |
-
#: templates/admin/upgrade-note-modal.php:
|
1361 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1362 |
msgid "Use the new filter preset feature for your filters"
|
1363 |
msgstr "Usar la nueva característica de pre establecimiento para tus filtros"
|
1364 |
|
1365 |
-
#: templates/admin/upgrade-note-modal.php:
|
1366 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1367 |
msgid ""
|
1368 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1376,7 +1371,7 @@ msgstr ""
|
|
1376 |
"shortcode, el bloque de Gutenberg o el widget de Elementor."
|
1377 |
|
1378 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1379 |
-
#: templates/admin/upgrade-note-modal.php:
|
1380 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1381 |
msgid ""
|
1382 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1386,7 +1381,7 @@ msgstr ""
|
|
1386 |
"documentación</a> para saber cómo usar esta nueva característica."
|
1387 |
|
1388 |
#. translators: 1. Url to docs.
|
1389 |
-
#: templates/admin/upgrade-note-modal.php:
|
1390 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1391 |
msgid ""
|
1392 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
@@ -1395,7 +1390,7 @@ msgstr ""
|
|
1395 |
"Te sugerimos <a href=\"%1$s\">leer la documentación</a> para aprender como "
|
1396 |
"usar esta nueva característica."
|
1397 |
|
1398 |
-
#: templates/admin/upgrade-note-modal.php:
|
1399 |
#, fuzzy
|
1400 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1401 |
msgid ""
|
@@ -1410,7 +1405,7 @@ msgstr ""
|
|
1410 |
"establecimientos de filtro. <br/><b>No te preocupes, no se perderán datos "
|
1411 |
"durante el proceso.</b>"
|
1412 |
|
1413 |
-
#: templates/admin/upgrade-note-modal.php:
|
1414 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1415 |
msgid ""
|
1416 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1418,21 +1413,25 @@ msgid ""
|
|
1418 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1419 |
msgstr ""
|
1420 |
|
1421 |
-
#: templates/admin/upgrade-note-modal.php:
|
1422 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1423 |
msgid "Convert your widgets in a preset now"
|
1424 |
msgstr "Convierte tus widgets en pre establecimiento ahora"
|
1425 |
|
1426 |
-
#: templates/admin/upgrade-note-modal.php:
|
1427 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1428 |
msgid "No thanks"
|
1429 |
msgstr "No, gracias"
|
1430 |
|
1431 |
-
#: templates/filters/global/reset-filters.php:
|
1432 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1433 |
msgid "Reset filters"
|
1434 |
msgstr "Restablecer filtros"
|
1435 |
|
|
|
|
|
|
|
|
|
1436 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1437 |
#~ msgid "All"
|
1438 |
#~ msgstr "Todo"
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2021-02-12 13:30:42+0000\n"
|
10 |
"Language: es\n"
|
11 |
"MIME-Version: 1.0\n"
|
14 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
18 |
msgid "Draft Preset"
|
19 |
msgstr "Borrador preestablecido"
|
20 |
|
21 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
22 |
+
#: includes/functions-yith-wcan.php:132
|
23 |
msgid "Term"
|
24 |
msgstr "Término"
|
25 |
|
26 |
+
#: includes/functions-yith-wcan.php:98
|
27 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
28 |
msgid "Color"
|
29 |
msgstr "Color"
|
30 |
|
31 |
+
#: includes/functions-yith-wcan.php:132
|
32 |
msgid "Labels"
|
33 |
msgstr "Etiquetas"
|
34 |
|
35 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Filtrar la lista de productos sin recargar la página"
|
38 |
|
39 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
40 |
msgid "Filters:"
|
41 |
msgstr "Filtros"
|
42 |
|
43 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
44 |
msgid "List"
|
45 |
msgstr "Lista"
|
46 |
|
47 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
48 |
msgid "Label"
|
49 |
msgstr "Etiqueta"
|
50 |
|
51 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Pestaña desplegable"
|
54 |
|
55 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
56 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
57 |
msgid "Title"
|
58 |
msgstr "Título"
|
59 |
|
60 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
61 |
msgid "Type:"
|
62 |
msgstr "Tipo:"
|
63 |
|
64 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Tipo de consulta:"
|
67 |
|
68 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
69 |
msgid "OR"
|
70 |
msgstr "O"
|
71 |
|
72 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Atributo:"
|
75 |
|
76 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Mostrar (predeterminado todo):"
|
79 |
|
80 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Todo (no jerárquico)"
|
83 |
|
84 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Todo (jerárquico)"
|
87 |
|
88 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Sólo superior"
|
91 |
|
92 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "Clase CSS personalizada"
|
95 |
|
96 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr "YITH AJAX Restablecer filtro"
|
99 |
|
100 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Restablecer todos los filtros"
|
103 |
|
104 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
105 |
msgid "Button Label"
|
106 |
msgstr "Etiqueta del botón"
|
107 |
|
138 |
"yithemes.com/\" target=\"_blank\">Obtén más plugins para tu comercio "
|
139 |
"electrónico en <strong>YITH</strong></a>"
|
140 |
|
141 |
+
#: includes/class-yith-wcan-admin.php:107
|
142 |
msgctxt "[Admin] Copy confirmation message"
|
143 |
msgid "Content copied to your clipboard"
|
144 |
msgstr "Contenido copiado en tu portapapeles"
|
145 |
|
146 |
+
#: includes/class-yith-wcan-admin.php:108
|
147 |
msgctxt "[Admin] Confirm filter delete message"
|
148 |
msgid "Are you sure you want to delete this item?"
|
149 |
msgstr "¿Estás seguro de que quieres eliminar este artículo?"
|
150 |
|
151 |
#. translators: 1. Number of items that will be added.
|
152 |
+
#: includes/class-yith-wcan-admin.php:110
|
153 |
msgctxt "[Admin] Confirm add all terms message"
|
154 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
155 |
msgstr ""
|
156 |
"¿Estás seguro de que quieres continuar? Esta operación añadirá %s artículos"
|
157 |
|
158 |
+
#: includes/class-yith-wcan-admin.php:111
|
159 |
msgctxt "[Admin] Error message"
|
160 |
msgid "\"Filter title\" is a required field"
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
164 |
msgctxt "[Admin] Message shown when filter has empty title"
|
165 |
msgid "< no title >"
|
166 |
msgstr "< sin título >"
|
167 |
|
168 |
+
#: includes/class-yith-wcan-admin.php:115
|
169 |
msgctxt "[Admin] Media library title, when selecting images"
|
170 |
msgid "Select media you want to use"
|
171 |
msgstr "Selecciona los medios que quieres usar"
|
172 |
|
173 |
+
#: includes/class-yith-wcan-admin.php:116
|
174 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
175 |
msgid "Use this media"
|
176 |
msgstr "Utiliza estos medios"
|
177 |
|
178 |
+
#: includes/class-yith-wcan-admin.php:184
|
179 |
msgctxt "[Admin] tab name"
|
180 |
msgid "Filter presets"
|
181 |
msgstr "Filtrar prestablecidos"
|
182 |
|
183 |
+
#: includes/class-yith-wcan-admin.php:185
|
184 |
msgctxt "[Admin] tab name"
|
185 |
msgid "General settings"
|
186 |
msgstr "Ajustes generales"
|
187 |
|
188 |
+
#: includes/class-yith-wcan-admin.php:186
|
189 |
#, fuzzy
|
190 |
msgctxt "[Admin] tab name"
|
191 |
msgid "SEO"
|
192 |
msgstr "SEO"
|
193 |
|
194 |
+
#: includes/class-yith-wcan-admin.php:187
|
195 |
msgctxt "[Admin] tab name"
|
196 |
msgid "Premium Version"
|
197 |
msgstr "Versión premium"
|
198 |
|
199 |
+
#: includes/class-yith-wcan-admin.php:191
|
200 |
msgctxt "[Admin] tab name"
|
201 |
msgid "Legacy"
|
202 |
msgstr "Heredado"
|
203 |
|
204 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
205 |
msgctxt "[Admin] Plugin description"
|
206 |
msgid ""
|
207 |
"It allows your users to find the product they are looking for as quickly as "
|
210 |
"Permite a tus usuarios encontrar el producto que están buscando lo más "
|
211 |
"rápido posible."
|
212 |
|
213 |
+
#: includes/class-yith-wcan-admin.php:211
|
214 |
msgctxt "[HELP TAB] Video title"
|
215 |
msgid ""
|
216 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
217 |
"the shop page:</b>"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/class-yith-wcan-admin.php:329
|
221 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
222 |
msgid "item"
|
223 |
msgstr "artículo"
|
224 |
|
225 |
+
#: includes/class-yith-wcan-admin.php:330
|
226 |
msgctxt "[Admin] Preset table empty message second line"
|
227 |
msgid "But don't worry, here you can create your first one!"
|
228 |
msgstr "¡Pero no te preocupes, aquí puedes crear el primero!"
|
229 |
|
230 |
+
#: includes/class-yith-wcan-admin.php:480
|
231 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
232 |
msgid "Clear Product Filter transients"
|
233 |
msgstr "Limpiar datos transitorios de filtro de producto"
|
234 |
|
235 |
+
#: includes/class-yith-wcan-admin.php:486
|
236 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
237 |
msgid "Run filter widgets upgrade"
|
238 |
msgstr "Activar actualización de widgets de filtro"
|
239 |
|
240 |
+
#: includes/class-yith-wcan-admin.php:481
|
241 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
242 |
msgid "Clear"
|
243 |
msgstr "Limpìar"
|
244 |
|
245 |
+
#: includes/class-yith-wcan-admin.php:487
|
246 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
247 |
msgid "Run"
|
248 |
msgstr "Activar"
|
249 |
|
250 |
+
#: includes/class-yith-wcan-admin.php:482
|
251 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
252 |
msgid ""
|
253 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
259 |
"configuración del producto y los filtros no muestran los resultados "
|
260 |
"esperados."
|
261 |
|
262 |
+
#: includes/class-yith-wcan-admin.php:488
|
263 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
264 |
msgid ""
|
265 |
"This will create a preset for any sidebar of your shop containing filter "
|
269 |
"que contenta widgets de filtro; el pre establecimiento será configurado para "
|
270 |
"coincidir con las especificaciones de los widgets"
|
271 |
|
272 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
273 |
msgctxt "[Admin] Filter edit form"
|
274 |
msgid "Taxonomy"
|
275 |
msgstr "Taxonomía"
|
276 |
|
277 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
278 |
msgctxt "[Admin] Filter edit form"
|
279 |
msgid "Checkbox"
|
280 |
msgstr "Casilla de verificación"
|
281 |
|
282 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
283 |
msgctxt "[Admin] Filter edit form"
|
284 |
msgid "Select"
|
285 |
msgstr "Seleccionar"
|
286 |
|
287 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
288 |
msgctxt "[Admin] Filter edit form"
|
289 |
msgid "Text"
|
290 |
msgstr "Texto"
|
291 |
|
292 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
293 |
msgctxt "[Admin] Filter edit form"
|
294 |
msgid "Color Swatches"
|
295 |
msgstr "Muestras de color"
|
296 |
|
297 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
298 |
msgctxt "[Admin] Filter edit form"
|
299 |
msgid "Label"
|
300 |
msgstr "Etiqueta"
|
309 |
msgid "Enter a name to identify this filter"
|
310 |
msgstr "Introduce un nombre para identificar este filtro"
|
311 |
|
312 |
+
#: plugin-options/filter-options.php:40
|
313 |
msgctxt "[Admin] Filter edit form"
|
314 |
msgid "Filter for"
|
315 |
msgstr "Filtrar por"
|
316 |
|
317 |
+
#: plugin-options/filter-options.php:44
|
318 |
msgctxt "[Admin] Filter edit form"
|
319 |
msgid "Select the parameters you wish to filter for"
|
320 |
msgstr "Selecciona los parámetros por los que te gustaría filtrar"
|
321 |
|
322 |
+
#: plugin-options/filter-options.php:49
|
323 |
msgctxt "[Admin] Filter edit form"
|
324 |
msgid "Choose taxonomy"
|
325 |
msgstr "Escoger taxonomía"
|
326 |
|
327 |
+
#: plugin-options/filter-options.php:53
|
328 |
msgctxt "[Admin] Filter edit form"
|
329 |
msgid "Select which taxonomy to use for this filter"
|
330 |
msgstr "Selecciona qué categoría usar para este filtro"
|
331 |
|
332 |
+
#: plugin-options/filter-options.php:58
|
333 |
msgctxt "[Admin] Filter edit form"
|
334 |
msgid "Auto-populate with all terms"
|
335 |
msgstr ""
|
336 |
|
337 |
+
#: plugin-options/filter-options.php:60
|
338 |
msgctxt "[Admin] Filter edit form"
|
339 |
msgid ""
|
340 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
343 |
"well.</span>"
|
344 |
msgstr ""
|
345 |
|
346 |
+
#: plugin-options/filter-options.php:69
|
347 |
msgctxt "[Admin] Filter edit form"
|
348 |
msgid "Choose terms"
|
349 |
msgstr "Escoger términos"
|
350 |
|
351 |
+
#: plugin-options/filter-options.php:74
|
352 |
msgctxt "[Admin] Filter edit form"
|
353 |
msgid "Select which terms to use for filtering"
|
354 |
msgstr "Selecciona qué términos usar para filtrar"
|
355 |
|
356 |
+
#: plugin-options/filter-options.php:78
|
357 |
msgctxt "[Admin] Filter edit form"
|
358 |
msgid "Filter type"
|
359 |
msgstr "Tipo de filtro"
|
360 |
|
361 |
+
#: plugin-options/filter-options.php:82
|
362 |
msgctxt "[Admin] Filter edit form"
|
363 |
msgid "Select the filter type for this filter"
|
364 |
msgstr "Selecciona el tipo para este filtro"
|
365 |
|
366 |
+
#: plugin-options/filter-options.php:86
|
367 |
#, fuzzy
|
368 |
msgctxt "[Admin] Filter edit form"
|
369 |
msgid "Labels"
|
370 |
msgstr "Etiquetas"
|
371 |
|
372 |
+
#: plugin-options/filter-options.php:89
|
373 |
#, fuzzy
|
374 |
msgctxt "[Admin] Filter edit form"
|
375 |
msgid "Show below"
|
376 |
msgstr "Mostrar resultados"
|
377 |
|
378 |
+
#: plugin-options/filter-options.php:90
|
379 |
#, fuzzy
|
380 |
msgctxt "[Admin] Filter edit form"
|
381 |
msgid "Show on the right"
|
382 |
msgstr "Mostrar recuento de artículos"
|
383 |
|
384 |
+
#: plugin-options/filter-options.php:91
|
385 |
msgctxt "[Admin] Filter edit form"
|
386 |
msgid "Hide"
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: plugin-options/filter-options.php:93
|
390 |
#, fuzzy
|
391 |
msgctxt "[Admin] Filter edit form"
|
392 |
msgid "Choose if and where to show the label inside your filter"
|
393 |
msgstr "Escoge el estilo del filtro dentro de los widgets"
|
394 |
|
395 |
+
#: plugin-options/filter-options.php:97
|
396 |
msgctxt "[Admin] Filter edit form"
|
397 |
msgid "Columns number"
|
398 |
msgstr "Número de columnas"
|
399 |
|
400 |
+
#: plugin-options/filter-options.php:102
|
401 |
msgctxt "[Admin] Filter edit form"
|
402 |
msgid "Set the number of items per row you want to show for this design"
|
403 |
msgstr ""
|
404 |
"Establece el número de artículos por fila que quieres mostrar para este "
|
405 |
"diseño"
|
406 |
|
407 |
+
#: plugin-options/filter-options.php:106
|
408 |
msgctxt "[Admin] Filter edit form"
|
409 |
msgid "Customize terms"
|
410 |
msgstr "Términos personalizados"
|
411 |
|
412 |
+
#: plugin-options/filter-options.php:109
|
413 |
msgctxt "[Admin] Filter edit form"
|
414 |
msgid ""
|
415 |
"Configure your terms individually; system will otherwise use default labels/"
|
423 |
"this option and use the boxes below</span>"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: plugin-options/filter-options.php:119
|
427 |
#, fuzzy
|
428 |
msgctxt "[Admin] Filter edit form"
|
429 |
msgid "Terms options"
|
430 |
msgstr "Opciones de orden"
|
431 |
|
432 |
+
#: plugin-options/filter-options.php:125
|
433 |
msgctxt "[Admin] Filter edit form"
|
434 |
msgid "Show hierarchy"
|
435 |
msgstr "Mostrar jerarquía"
|
436 |
|
437 |
+
#: plugin-options/filter-options.php:128
|
438 |
msgctxt "[Admin] Filter edit form"
|
439 |
msgid "No, show all terms in same level"
|
440 |
msgstr "No, mostrar todos los términos en el mismo nivel"
|
441 |
|
442 |
+
#: plugin-options/filter-options.php:129
|
443 |
msgctxt "[Admin] Filter edit form"
|
444 |
msgid "No, show only parent terms"
|
445 |
msgstr "No, mostrar solo términos superiores"
|
446 |
|
447 |
+
#: plugin-options/filter-options.php:130
|
448 |
msgctxt "[Admin] Filter edit form"
|
449 |
msgid "Yes"
|
450 |
msgstr ""
|
451 |
|
452 |
+
#: plugin-options/filter-options.php:132
|
453 |
msgctxt "[Admin] Filter edit form"
|
454 |
msgid "Choose how to show terms hierarchy"
|
455 |
msgstr "Elige cómo mostrar los términos jerárquicamente"
|
456 |
|
457 |
+
#: plugin-options/filter-options.php:136
|
458 |
msgctxt "[Admin] Filter edit form"
|
459 |
msgid "Allow multiple selection"
|
460 |
msgstr "Permitir selección múltiple"
|
461 |
|
462 |
+
#: plugin-options/filter-options.php:138
|
463 |
msgctxt "[Admin] Filter edit form"
|
464 |
msgid "Enable if the user can select multiple terms when filtering products"
|
465 |
msgstr ""
|
466 |
"Activa si el usuario puede seleccionar múltiples términos al filtrar los "
|
467 |
"productos"
|
468 |
|
469 |
+
#: plugin-options/filter-options.php:142
|
470 |
msgctxt "[Admin] Filter edit form"
|
471 |
msgid "Multiselect relation"
|
472 |
msgstr "Relación de multi-selección"
|
473 |
|
474 |
+
#: plugin-options/filter-options.php:148
|
475 |
msgctxt "[Admin] Filter edit form"
|
476 |
msgid "Choose how multiple terms selection should behave"
|
477 |
msgstr "Escoge cómo debe comportarse la selección de términos múltiples"
|
478 |
|
479 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
480 |
msgctxt "[Admin] Filter edit form, sorting options"
|
481 |
msgid "Default sorting"
|
482 |
msgstr "Orden predeterminado"
|
483 |
|
484 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
485 |
msgctxt "[Admin] Filter edit form, sorting options"
|
486 |
msgid "Sort by popularity"
|
487 |
msgstr "Ordenar por popularidad"
|
488 |
|
489 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
490 |
msgctxt "[Admin] Filter edit form, sorting options"
|
491 |
msgid "Sort by average rating"
|
492 |
msgstr "Ordenar por promedio de valoración"
|
493 |
|
494 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
495 |
msgctxt "[Admin] Filter edit form, sorting options"
|
496 |
msgid "Sort by latest"
|
497 |
msgstr "Ordenar por último"
|
498 |
|
499 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
500 |
msgctxt "[Admin] Filter edit form, sorting options"
|
501 |
msgid "Sort by price: low to high"
|
502 |
msgstr "Ordenar por precio: de bajo a alto"
|
503 |
|
504 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
505 |
msgctxt "[Admin] Filter edit form, sorting options"
|
506 |
msgid "Sort by price: high to low"
|
507 |
msgstr "Ordenar por precio: de alto a bajo"
|
508 |
|
509 |
+
#: includes/class-yith-wcan-filter.php:116
|
510 |
msgctxt "[Admin] Default filter title"
|
511 |
msgid "New filter"
|
512 |
msgstr "Nuevo filtro"
|
513 |
|
514 |
+
#: includes/class-yith-wcan-frontend.php:591
|
515 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
516 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
517 |
msgid "All"
|
518 |
msgstr "Todo"
|
519 |
|
520 |
+
#: includes/class-yith-wcan-frontend.php:592
|
521 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
522 |
msgid "Search..."
|
523 |
msgstr "Buscar..."
|
524 |
|
525 |
+
#: includes/class-yith-wcan-frontend.php:593
|
526 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
527 |
msgid "No item found"
|
528 |
msgstr "No se han encontrado artículos."
|
529 |
|
530 |
#. translators: 1. Number of items to show.
|
531 |
+
#: includes/class-yith-wcan-frontend.php:595
|
532 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
533 |
msgid "Show %d more"
|
534 |
msgstr "Mostrar %d más"
|
535 |
|
536 |
+
#: includes/class-yith-wcan-frontend.php:596
|
537 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
538 |
msgid "Close"
|
539 |
msgstr "Cerrar"
|
540 |
|
541 |
+
#: includes/class-yith-wcan-frontend.php:597
|
542 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
543 |
msgid "Save"
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: includes/class-yith-wcan-frontend.php:598
|
547 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
548 |
msgid "Show results"
|
549 |
msgstr "Mostrar resultados"
|
550 |
|
551 |
+
#: includes/class-yith-wcan-frontend.php:599
|
552 |
msgctxt ""
|
553 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
554 |
"selection"
|
555 |
msgid "Clear"
|
556 |
msgstr "Limpiar"
|
557 |
|
558 |
+
#: includes/class-yith-wcan-frontend.php:600
|
559 |
msgctxt ""
|
560 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
561 |
"selection"
|
562 |
msgid "Clear All"
|
563 |
msgstr "Limpiar todo"
|
564 |
|
565 |
+
#: includes/class-yith-wcan-install.php:95
|
566 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
567 |
msgid "Default preset"
|
568 |
msgstr "Pre establecimiento predeterminado"
|
569 |
|
570 |
#. translators: 1. Taxonomy name.
|
571 |
+
#: includes/class-yith-wcan-install.php:285
|
572 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
573 |
msgid "Filter by %s"
|
574 |
msgstr "Filtrar por %s"
|
575 |
|
576 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
577 |
#, fuzzy
|
578 |
msgctxt "[Admin] Label in new preset page"
|
579 |
msgid "Default"
|
589 |
msgid "Enter a name to identify this filter preset"
|
590 |
msgstr "Introduce un nombre para identificar este filtro pre establecido"
|
591 |
|
592 |
+
#: templates/admin/preset-filters.php:22
|
593 |
msgctxt "[Admin] Label in new preset page"
|
594 |
msgid "Filters of this preset"
|
595 |
msgstr "Filtros para este pre establecimiento"
|
596 |
|
597 |
+
#: includes/class-yith-wcan-presets.php:95
|
598 |
+
#: includes/class-yith-wcan-presets.php:100
|
599 |
msgctxt "[Admin] name of presets custom post type"
|
600 |
msgid "Filter presets"
|
601 |
msgstr "Pre establecimientos de filtro"
|
602 |
|
603 |
+
#: includes/class-yith-wcan-presets.php:96
|
604 |
msgctxt "[Admin] singular name of presets custom post type"
|
605 |
msgid "Filter preset"
|
606 |
msgstr "Pre establecimiento de filtro"
|
607 |
|
608 |
+
#: includes/class-yith-wcan-presets.php:97
|
609 |
msgctxt "[Admin] add new filter preset label"
|
610 |
msgid "Add new preset"
|
611 |
msgstr "Añadir nuevo pre establecimiento"
|
612 |
|
613 |
+
#: includes/class-yith-wcan-presets.php:139
|
614 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
615 |
msgid "Convert widgets in a preset"
|
616 |
msgstr "Convertir widgets en un pre establecimiento"
|
617 |
|
618 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
619 |
msgctxt ""
|
620 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
621 |
"not exist"
|
623 |
msgstr "Pre establecimiento no válido."
|
624 |
|
625 |
#. translators: 1. Title of original preset.
|
626 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
627 |
msgctxt "[ADMIN] Title of the cloned preset"
|
628 |
msgid "%s - Copy"
|
629 |
msgstr "%s - Copiar"
|
630 |
|
631 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
632 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
633 |
msgid "YITH AJAX Filters Preset"
|
634 |
msgstr "YITH AJAX Pre establecimiento de filtros"
|
635 |
|
636 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
637 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
638 |
msgid "YITH AJAX Filters Reset Button"
|
639 |
msgstr "YITH AJAX Botón de restablecimiento de filtros"
|
640 |
|
641 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
642 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
643 |
msgctxt "[ELEMENTOR] Default preset option"
|
644 |
msgid "Choose an option"
|
645 |
msgstr "Escoge una opción"
|
646 |
|
647 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
648 |
msgctxt "[ELEMENTOR] Section title"
|
649 |
msgid "Filters"
|
650 |
msgstr "Filtros"
|
651 |
|
652 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
653 |
msgctxt "[ELEMENTOR] Section title"
|
654 |
msgid "General"
|
655 |
msgstr "General"
|
656 |
|
657 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
658 |
msgctxt "[ELEMENTOR] Control label"
|
659 |
msgid "Preset"
|
660 |
msgstr "Pre establecimiento"
|
661 |
|
662 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
663 |
msgctxt "[ELEMENTOR] Widget description"
|
664 |
msgid ""
|
665 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
666 |
msgstr ""
|
667 |
"Este widget mostrará el botón ''Restablecer filtros'' en donde se encuentre"
|
668 |
|
669 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
670 |
msgctxt "[ELEMENTOR] Widget description"
|
671 |
msgid ""
|
672 |
"It will allow users to reset the filer selection; it will only appear when "
|
675 |
"Permitirá a los usuarios restablecer la selección de filtro; solo aparecerá "
|
676 |
"cuando haya un filtro activo."
|
677 |
|
678 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
679 |
msgctxt "[ELEMENTOR] Widget description"
|
680 |
msgid ""
|
681 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
685 |
"dentro de tu página, cuando la opción ''Posición del botón Restablecer'' no "
|
686 |
"funcione para el bucle de tus productos"
|
687 |
|
688 |
+
#: includes/functions-yith-wcan.php:112
|
689 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
690 |
msgid "Color 1"
|
691 |
msgstr "Color 1"
|
692 |
|
693 |
+
#: includes/functions-yith-wcan.php:112
|
694 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
695 |
msgid "Color 2"
|
696 |
msgstr "Color 2"
|
697 |
|
698 |
+
#: includes/functions-yith-wcan.php:1026
|
699 |
msgctxt "[FRONTEND] Star rating template"
|
700 |
msgid "star"
|
701 |
msgid_plural "stars"
|
703 |
msgstr[1] "estrellas"
|
704 |
|
705 |
#. translators: 1. Rating.
|
706 |
+
#: includes/functions-yith-wcan.php:1041
|
707 |
msgctxt "[FRONTEND] Star rating label"
|
708 |
msgid "Rated %s out of 5"
|
709 |
msgstr "Valorado en %s sobre 5"
|
710 |
|
711 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
712 |
msgctxt "[GUTENBERG]: block name"
|
713 |
msgid "YITH AJAX Filters Preset"
|
714 |
msgstr "YITH AJAX Pre establecimiento de filtros"
|
715 |
|
716 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
717 |
msgctxt "[GUTENBERG]: block name"
|
718 |
msgid "YITH Reset Filters Button"
|
719 |
msgstr "YITH Botón de restablecimiento de filtros"
|
720 |
|
721 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
722 |
msgctxt "[GUTENBERG]: block description"
|
723 |
msgid "Show filters from a preset"
|
724 |
msgstr "Mostrar filtros de un pre establecimiento"
|
725 |
|
726 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
727 |
msgctxt "[GUTENBERG]: block description"
|
728 |
msgid ""
|
729 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
737 |
"opción ''Posición del botón Restablecer' no funcione en el bucle de tus "
|
738 |
"productos"
|
739 |
|
740 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
741 |
msgctxt "[GUTENBERG]: attribute description"
|
742 |
msgid "Preset"
|
743 |
msgstr "Pre establecimiento"
|
744 |
|
745 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
746 |
msgctxt "[Admin] Preset table column header"
|
747 |
msgid "Preset name"
|
748 |
msgstr "Nombre del pre establecimiento"
|
749 |
|
750 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
751 |
msgctxt "[Admin] Preset table column header"
|
752 |
msgid "Shortcode"
|
753 |
msgstr "Shortcode"
|
754 |
|
755 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
756 |
msgctxt "[Admin] Preset edit action label"
|
757 |
msgid "Edit this preset"
|
758 |
msgstr "Editar este pre establecimiento"
|
759 |
|
760 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
761 |
msgctxt "[Admin] Preset clone action label"
|
762 |
msgid "Clone this preset"
|
763 |
msgstr "Clonar este pre establecimiento"
|
764 |
|
765 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
766 |
msgctxt "[Admin] Preset delete action label"
|
767 |
msgid "Delete this preset"
|
768 |
msgstr "Eliminar este pre establecimiento"
|
769 |
|
770 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
771 |
msgctxt "[Admin] Preset delete confirm label"
|
772 |
msgid "Are you sure you want to delete this preset?"
|
773 |
msgstr "¿Estás seguro de que quieres eliminar este pre establecimiento?"
|
774 |
|
775 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
776 |
msgctxt "[Admin] on-off yes"
|
777 |
msgid "YES"
|
778 |
msgstr "SÍ"
|
779 |
|
780 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
781 |
msgctxt "[Admin] on-off no"
|
782 |
msgid "NO"
|
783 |
msgstr "NO"
|
784 |
|
785 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
786 |
msgctxt ""
|
787 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
788 |
msgid "filter preset"
|
789 |
msgstr "Pre establecimiento de filtro"
|
790 |
|
791 |
+
#: templates/admin/preset-filters.php:31
|
792 |
msgctxt ""
|
793 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
794 |
msgid "filter"
|
795 |
msgstr "filtro"
|
796 |
|
797 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
798 |
msgctxt "[Admin] New preset button label"
|
799 |
msgid "Create a new preset"
|
800 |
msgstr "Crea un nuevo pre establecimiento"
|
801 |
|
802 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
803 |
msgctxt "[ADMIN] Name of the preset widget"
|
804 |
msgid "YITH AJAX Filters Preset"
|
805 |
msgstr "YITH AJAX Pre establecimiento de filtros"
|
806 |
|
807 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
808 |
msgctxt "[ADMIN] Preset widget options"
|
809 |
msgid "Preset"
|
810 |
msgstr "Pre establecimiento"
|
811 |
|
812 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
813 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
814 |
msgctxt "[ADMIN] Preset widget options"
|
815 |
msgid ""
|
816 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
819 |
"Por favor, ve al <a href=\"%s\">Panel de WP-> YITH -> Ajax Product Filter -> "
|
820 |
"Pre establecimientos</a> y crea tu primer pre establecimiento"
|
821 |
|
822 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
823 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
824 |
msgid "YITH AJAX Product Filter"
|
825 |
msgstr "YITH Ajax Filtro de producto"
|
826 |
|
827 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
828 |
#, fuzzy
|
829 |
msgctxt ""
|
830 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
831 |
msgid "AND"
|
832 |
msgstr "Y"
|
833 |
|
834 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
835 |
msgctxt "[Plugin Name]"
|
836 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
837 |
msgstr ""
|
838 |
"Restablecer todos los filtros establecidos por YITH WooCommerce Ajax Product "
|
839 |
"Filter"
|
840 |
|
841 |
+
#: plugin-options/filter-options.php:145
|
842 |
#, fuzzy
|
843 |
msgctxt ""
|
844 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
847 |
"Y . Los resultados deben coincidir con los términos seleccionados al mismo "
|
848 |
"tiempo"
|
849 |
|
850 |
+
#: plugin-options/filter-options.php:146
|
851 |
#, fuzzy
|
852 |
msgctxt ""
|
853 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
1134 |
msgctxt "[ADMIN] Premium tab"
|
1135 |
msgid ""
|
1136 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1137 |
+
"view<br/>\n"
|
1138 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1139 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1140 |
+
"range (based on their budget availability)<br/>\n"
|
1141 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1142 |
"attributes available in your store, like color and size. For the color "
|
1143 |
"filter, you can either choose square or circular color swatches or use "
|
1144 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1145 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1146 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1147 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1148 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1149 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1150 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1151 |
+
"filter products and view only those with a discount<br/>\n"
|
1152 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1153 |
"filter products based on their needs and exclude out-of-stock products from "
|
1154 |
"the list"
|
1274 |
"easier to share)"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: templates/admin/preset-edit.php:31
|
1278 |
msgctxt "[Admin] Back link in new preset page"
|
1279 |
msgid "< back to preset list"
|
1280 |
msgstr "< volver a la lista de pre establecimiento"
|
1281 |
|
1282 |
+
#: templates/admin/preset-edit.php:38
|
1283 |
msgctxt "[ADMIN] Title for new preset page"
|
1284 |
msgid "Edit filter preset"
|
1285 |
msgstr "Editar pre establecimiento de filtro"
|
1286 |
|
1287 |
+
#: templates/admin/preset-edit.php:40
|
1288 |
msgctxt "[ADMIN] Title for new preset page"
|
1289 |
msgid "Add new filter preset"
|
1290 |
msgstr "Añadir nuevo filtro pre establecido"
|
1291 |
|
1292 |
+
#: templates/admin/preset-edit.php:47
|
1293 |
msgctxt "[ADMIN] Preset save message"
|
1294 |
msgid "Preset saved correctly"
|
1295 |
msgstr ""
|
1296 |
|
1297 |
+
#: templates/admin/preset-edit.php:93
|
1298 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1299 |
msgid "Save preset"
|
1300 |
msgstr "Guardar pre establecimiento"
|
1301 |
|
1302 |
+
#: templates/admin/preset-empty-content.php:29
|
1303 |
msgctxt "Alt text for empty preset image"
|
1304 |
msgid "Empty preset"
|
1305 |
msgstr "Pre establecimiento vacío"
|
1306 |
|
1307 |
#. translators: 1. Missing item name.
|
1308 |
+
#: templates/admin/preset-empty-content.php:35
|
1309 |
msgctxt "[Admin] Preset table empty message"
|
1310 |
msgid "You don't have any %s yet."
|
1311 |
msgstr "No tienes ningún %s aún."
|
1312 |
|
1313 |
+
#: templates/admin/preset-filter-term.php:30
|
1314 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1315 |
msgid "Label"
|
1316 |
msgstr "Etiqueta"
|
1317 |
|
1318 |
+
#: templates/admin/preset-filter-term.php:35
|
1319 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1320 |
msgid "Tooltip"
|
1321 |
msgstr "Información emergente"
|
1322 |
|
1323 |
+
#: templates/admin/preset-filter-term.php:41
|
1324 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1325 |
msgid "Color"
|
1326 |
msgstr "Color"
|
1327 |
|
1328 |
+
#: templates/admin/preset-filter.php:91
|
1329 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1330 |
msgid "Save Filter"
|
1331 |
msgstr "Guardar filtro"
|
1332 |
|
1333 |
+
#: templates/admin/preset-filter.php:92
|
1334 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1335 |
msgid "Delete Filter"
|
1336 |
msgstr "Eliminar filtro"
|
1337 |
|
1338 |
+
#: templates/admin/preset-filters.php:33
|
1339 |
msgctxt "[Admin] New filter button label"
|
1340 |
msgid "Add a new filter"
|
1341 |
msgstr "Añadir nuevo filtro"
|
1342 |
|
1343 |
+
#: templates/admin/preset-filters.php:57
|
1344 |
msgctxt "[Admin] Add new filter in new preset page"
|
1345 |
msgid "+ Add filter"
|
1346 |
msgstr "+ Añadir filtro"
|
1352 |
msgid "See %d more filters"
|
1353 |
msgstr "Antes de los filtros"
|
1354 |
|
1355 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1356 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1357 |
msgid "Use the new filter preset feature for your filters"
|
1358 |
msgstr "Usar la nueva característica de pre establecimiento para tus filtros"
|
1359 |
|
1360 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1361 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1362 |
msgid ""
|
1363 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1371 |
"shortcode, el bloque de Gutenberg o el widget de Elementor."
|
1372 |
|
1373 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1374 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1375 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1376 |
msgid ""
|
1377 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1381 |
"documentación</a> para saber cómo usar esta nueva característica."
|
1382 |
|
1383 |
#. translators: 1. Url to docs.
|
1384 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1385 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1386 |
msgid ""
|
1387 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1390 |
"Te sugerimos <a href=\"%1$s\">leer la documentación</a> para aprender como "
|
1391 |
"usar esta nueva característica."
|
1392 |
|
1393 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1394 |
#, fuzzy
|
1395 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1396 |
msgid ""
|
1405 |
"establecimientos de filtro. <br/><b>No te preocupes, no se perderán datos "
|
1406 |
"durante el proceso.</b>"
|
1407 |
|
1408 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1409 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1410 |
msgid ""
|
1411 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1413 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1417 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1418 |
msgid "Convert your widgets in a preset now"
|
1419 |
msgstr "Convierte tus widgets en pre establecimiento ahora"
|
1420 |
|
1421 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1422 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1423 |
msgid "No thanks"
|
1424 |
msgstr "No, gracias"
|
1425 |
|
1426 |
+
#: templates/filters/global/reset-filters.php:24
|
1427 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1428 |
msgid "Reset filters"
|
1429 |
msgstr "Restablecer filtros"
|
1430 |
|
1431 |
+
#~ msgctxt "[Admin] Menu title"
|
1432 |
+
#~ msgid "Ajax Product Filter"
|
1433 |
+
#~ msgstr "Ajax Product Filter"
|
1434 |
+
|
1435 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1436 |
#~ msgid "All"
|
1437 |
#~ msgstr "Todo"
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2020-12-29 14:36:56+0000\n"
|
10 |
"Language: fr\n"
|
11 |
"MIME-Version: 1.0\n"
|
@@ -14,94 +14,94 @@ msgstr ""
|
|
14 |
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
-
#: includes/data-stores/class
|
18 |
msgid "Draft Preset"
|
19 |
msgstr ""
|
20 |
|
21 |
-
#: includes/functions
|
22 |
-
#: includes/functions
|
23 |
msgid "Term"
|
24 |
msgstr "Terme"
|
25 |
|
26 |
-
#: includes/functions
|
27 |
-
#: includes/widgets/class
|
28 |
msgid "Color"
|
29 |
msgstr "Couleur"
|
30 |
|
31 |
-
#: includes/functions
|
32 |
msgid "Labels"
|
33 |
msgstr "Étiquettes"
|
34 |
|
35 |
-
#: includes/widgets/class
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Filtrer la liste des produits sans recharger la page"
|
38 |
|
39 |
-
#: includes/widgets/class
|
40 |
msgid "Filters:"
|
41 |
msgstr "Filtres :"
|
42 |
|
43 |
-
#: includes/widgets/class
|
44 |
msgid "List"
|
45 |
msgstr "Liste"
|
46 |
|
47 |
-
#: includes/widgets/class
|
48 |
msgid "Label"
|
49 |
msgstr "Étiquette"
|
50 |
|
51 |
-
#: includes/widgets/class
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Menu déroulant"
|
54 |
|
55 |
-
#: includes/widgets/class
|
56 |
-
#: includes/widgets/class
|
57 |
msgid "Title"
|
58 |
msgstr "Titre"
|
59 |
|
60 |
-
#: includes/widgets/class
|
61 |
msgid "Type:"
|
62 |
msgstr "Type :"
|
63 |
|
64 |
-
#: includes/widgets/class
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Type de requête :"
|
67 |
|
68 |
-
#: includes/widgets/class
|
69 |
msgid "OR"
|
70 |
msgstr "OU"
|
71 |
|
72 |
-
#: includes/widgets/class
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Attribut :"
|
75 |
|
76 |
-
#: includes/widgets/class
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Affichage (tout par défaut) :"
|
79 |
|
80 |
-
#: includes/widgets/class
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Tout (pas de hiérarchie)"
|
83 |
|
84 |
-
#: includes/widgets/class
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Tout (hiérarchique)"
|
87 |
|
88 |
-
#: includes/widgets/class
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Parent seulement"
|
91 |
|
92 |
-
#: includes/widgets/class
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "Classe personnalisée CSS"
|
95 |
|
96 |
-
#: includes/widgets/class
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: includes/widgets/class
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Réinitialiser tous les filtres"
|
103 |
|
104 |
-
#: includes/widgets/class
|
105 |
msgid "Button Label"
|
106 |
msgstr "Étiquette du bouton"
|
107 |
|
@@ -130,118 +130,113 @@ msgid ""
|
|
130 |
"your e-commerce shop on <strong>YITH</strong></a>"
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: includes/class
|
134 |
msgctxt "[Admin] Copy confirmation message"
|
135 |
msgid "Content copied to your clipboard"
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: includes/class
|
139 |
msgctxt "[Admin] Confirm filter delete message"
|
140 |
msgid "Are you sure you want to delete this item?"
|
141 |
msgstr ""
|
142 |
|
143 |
#. translators: 1. Number of items that will be added.
|
144 |
-
#: includes/class
|
145 |
msgctxt "[Admin] Confirm add all terms message"
|
146 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: includes/class
|
150 |
msgctxt "[Admin] Error message"
|
151 |
msgid "\"Filter title\" is a required field"
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: includes/class
|
155 |
msgctxt "[Admin] Message shown when filter has empty title"
|
156 |
msgid "< no title >"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: includes/class
|
160 |
msgctxt "[Admin] Media library title, when selecting images"
|
161 |
msgid "Select media you want to use"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: includes/class
|
165 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
166 |
msgid "Use this media"
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: includes/class
|
170 |
msgctxt "[Admin] tab name"
|
171 |
msgid "Filter presets"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/class
|
175 |
msgctxt "[Admin] tab name"
|
176 |
msgid "General settings"
|
177 |
msgstr ""
|
178 |
|
179 |
-
#: includes/class
|
180 |
#, fuzzy
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "SEO"
|
183 |
msgstr "SEO"
|
184 |
|
185 |
-
#: includes/class
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "Premium Version"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: includes/class
|
191 |
msgctxt "[Admin] tab name"
|
192 |
msgid "Legacy"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: includes/class
|
196 |
-
msgctxt "[Admin] Menu title"
|
197 |
-
msgid "Ajax Product Filter"
|
198 |
-
msgstr ""
|
199 |
-
|
200 |
-
#: includes/class.yith-wcan-admin.php:199
|
201 |
msgctxt "[Admin] Plugin description"
|
202 |
msgid ""
|
203 |
"It allows your users to find the product they are looking for as quickly as "
|
204 |
"possible."
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: includes/class
|
208 |
msgctxt "[HELP TAB] Video title"
|
209 |
msgid ""
|
210 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
211 |
"the shop page:</b>"
|
212 |
msgstr ""
|
213 |
|
214 |
-
#: includes/class
|
215 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
216 |
msgid "item"
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: includes/class
|
220 |
msgctxt "[Admin] Preset table empty message second line"
|
221 |
msgid "But don't worry, here you can create your first one!"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/class
|
225 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
226 |
msgid "Clear Product Filter transients"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: includes/class
|
230 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
231 |
msgid "Run filter widgets upgrade"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: includes/class
|
235 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
236 |
msgid "Clear"
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: includes/class
|
240 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
241 |
msgid "Run"
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: includes/class
|
245 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
246 |
msgid ""
|
247 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -249,39 +244,39 @@ msgid ""
|
|
249 |
"and filters do not display the expected results."
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/class
|
253 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
254 |
msgid ""
|
255 |
"This will create a preset for any sidebar of your shop containing filter "
|
256 |
"widgets; preset will be configured to match widgets specifications"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: includes/class
|
260 |
msgctxt "[Admin] Filter edit form"
|
261 |
msgid "Taxonomy"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: includes/class
|
265 |
msgctxt "[Admin] Filter edit form"
|
266 |
msgid "Checkbox"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: includes/class
|
270 |
msgctxt "[Admin] Filter edit form"
|
271 |
msgid "Select"
|
272 |
msgstr ""
|
273 |
|
274 |
-
#: includes/class
|
275 |
msgctxt "[Admin] Filter edit form"
|
276 |
msgid "Text"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: includes/class
|
280 |
msgctxt "[Admin] Filter edit form"
|
281 |
msgid "Color Swatches"
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: includes/class
|
285 |
msgctxt "[Admin] Filter edit form"
|
286 |
msgid "Label"
|
287 |
msgstr ""
|
@@ -296,32 +291,32 @@ msgctxt "[Admin] Filter edit form"
|
|
296 |
msgid "Enter a name to identify this filter"
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: plugin-options/filter-options.php:
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Filter for"
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: plugin-options/filter-options.php:
|
305 |
msgctxt "[Admin] Filter edit form"
|
306 |
msgid "Select the parameters you wish to filter for"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: plugin-options/filter-options.php:
|
310 |
msgctxt "[Admin] Filter edit form"
|
311 |
msgid "Choose taxonomy"
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: plugin-options/filter-options.php:
|
315 |
msgctxt "[Admin] Filter edit form"
|
316 |
msgid "Select which taxonomy to use for this filter"
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: plugin-options/filter-options.php:
|
320 |
msgctxt "[Admin] Filter edit form"
|
321 |
msgid "Auto-populate with all terms"
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: plugin-options/filter-options.php:
|
325 |
msgctxt "[Admin] Filter edit form"
|
326 |
msgid ""
|
327 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -330,70 +325,70 @@ msgid ""
|
|
330 |
"well.</span>"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: plugin-options/filter-options.php:
|
334 |
msgctxt "[Admin] Filter edit form"
|
335 |
msgid "Choose terms"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: plugin-options/filter-options.php:
|
339 |
msgctxt "[Admin] Filter edit form"
|
340 |
msgid "Select which terms to use for filtering"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: plugin-options/filter-options.php:
|
344 |
msgctxt "[Admin] Filter edit form"
|
345 |
msgid "Filter type"
|
346 |
msgstr ""
|
347 |
|
348 |
-
#: plugin-options/filter-options.php:
|
349 |
msgctxt "[Admin] Filter edit form"
|
350 |
msgid "Select the filter type for this filter"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: plugin-options/filter-options.php:
|
354 |
#, fuzzy
|
355 |
msgctxt "[Admin] Filter edit form"
|
356 |
msgid "Labels"
|
357 |
msgstr "Étiquettes"
|
358 |
|
359 |
-
#: plugin-options/filter-options.php:
|
360 |
#, fuzzy
|
361 |
msgctxt "[Admin] Filter edit form"
|
362 |
msgid "Show below"
|
363 |
msgstr "Afficher la sélection"
|
364 |
|
365 |
-
#: plugin-options/filter-options.php:
|
366 |
msgctxt "[Admin] Filter edit form"
|
367 |
msgid "Show on the right"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: plugin-options/filter-options.php:
|
371 |
msgctxt "[Admin] Filter edit form"
|
372 |
msgid "Hide"
|
373 |
msgstr ""
|
374 |
|
375 |
-
#: plugin-options/filter-options.php:
|
376 |
#, fuzzy
|
377 |
msgctxt "[Admin] Filter edit form"
|
378 |
msgid "Choose if and where to show the label inside your filter"
|
379 |
msgstr "Choisissez comment trier les produits WooCommerce"
|
380 |
|
381 |
-
#: plugin-options/filter-options.php:
|
382 |
msgctxt "[Admin] Filter edit form"
|
383 |
msgid "Columns number"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: plugin-options/filter-options.php:
|
387 |
msgctxt "[Admin] Filter edit form"
|
388 |
msgid "Set the number of items per row you want to show for this design"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: plugin-options/filter-options.php:
|
392 |
msgctxt "[Admin] Filter edit form"
|
393 |
msgid "Customize terms"
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: plugin-options/filter-options.php:
|
397 |
msgctxt "[Admin] Filter edit form"
|
398 |
msgid ""
|
399 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -407,154 +402,154 @@ msgid ""
|
|
407 |
"this option and use the boxes below</span>"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: plugin-options/filter-options.php:
|
411 |
msgctxt "[Admin] Filter edit form"
|
412 |
msgid "Terms options"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: plugin-options/filter-options.php:
|
416 |
msgctxt "[Admin] Filter edit form"
|
417 |
msgid "Show hierarchy"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: plugin-options/filter-options.php:
|
421 |
msgctxt "[Admin] Filter edit form"
|
422 |
msgid "No, show all terms in same level"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: plugin-options/filter-options.php:
|
426 |
msgctxt "[Admin] Filter edit form"
|
427 |
msgid "No, show only parent terms"
|
428 |
msgstr ""
|
429 |
|
430 |
-
#: plugin-options/filter-options.php:
|
431 |
msgctxt "[Admin] Filter edit form"
|
432 |
msgid "Yes"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: plugin-options/filter-options.php:
|
436 |
msgctxt "[Admin] Filter edit form"
|
437 |
msgid "Choose how to show terms hierarchy"
|
438 |
msgstr ""
|
439 |
|
440 |
-
#: plugin-options/filter-options.php:
|
441 |
msgctxt "[Admin] Filter edit form"
|
442 |
msgid "Allow multiple selection"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: plugin-options/filter-options.php:
|
446 |
msgctxt "[Admin] Filter edit form"
|
447 |
msgid "Enable if the user can select multiple terms when filtering products"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: plugin-options/filter-options.php:
|
451 |
msgctxt "[Admin] Filter edit form"
|
452 |
msgid "Multiselect relation"
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: plugin-options/filter-options.php:
|
456 |
msgctxt "[Admin] Filter edit form"
|
457 |
msgid "Choose how multiple terms selection should behave"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: includes/class
|
461 |
msgctxt "[Admin] Filter edit form, sorting options"
|
462 |
msgid "Default sorting"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: includes/class
|
466 |
msgctxt "[Admin] Filter edit form, sorting options"
|
467 |
msgid "Sort by popularity"
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: includes/class
|
471 |
msgctxt "[Admin] Filter edit form, sorting options"
|
472 |
msgid "Sort by average rating"
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/class
|
476 |
msgctxt "[Admin] Filter edit form, sorting options"
|
477 |
msgid "Sort by latest"
|
478 |
msgstr ""
|
479 |
|
480 |
-
#: includes/class
|
481 |
msgctxt "[Admin] Filter edit form, sorting options"
|
482 |
msgid "Sort by price: low to high"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: includes/class
|
486 |
msgctxt "[Admin] Filter edit form, sorting options"
|
487 |
msgid "Sort by price: high to low"
|
488 |
msgstr ""
|
489 |
|
490 |
-
#: includes/class
|
491 |
msgctxt "[Admin] Default filter title"
|
492 |
msgid "New filter"
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: includes/class
|
496 |
-
#: includes/filters/class
|
497 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
498 |
msgid "All"
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: includes/class
|
502 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
503 |
msgid "Search..."
|
504 |
msgstr ""
|
505 |
|
506 |
-
#: includes/class
|
507 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
508 |
msgid "No item found"
|
509 |
msgstr ""
|
510 |
|
511 |
#. translators: 1. Number of items to show.
|
512 |
-
#: includes/class
|
513 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
514 |
msgid "Show %d more"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#: includes/class
|
518 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
519 |
msgid "Close"
|
520 |
msgstr ""
|
521 |
|
522 |
-
#: includes/class
|
523 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
524 |
msgid "Save"
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: includes/class
|
528 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
529 |
msgid "Show results"
|
530 |
msgstr ""
|
531 |
|
532 |
-
#: includes/class
|
533 |
msgctxt ""
|
534 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
535 |
"selection"
|
536 |
msgid "Clear"
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: includes/class
|
540 |
msgctxt ""
|
541 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
542 |
"selection"
|
543 |
msgid "Clear All"
|
544 |
msgstr ""
|
545 |
|
546 |
-
#: includes/class
|
547 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
548 |
msgid "Default preset"
|
549 |
msgstr ""
|
550 |
|
551 |
#. translators: 1. Taxonomy name.
|
552 |
-
#: includes/class
|
553 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
554 |
msgid "Filter by %s"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: includes/class
|
558 |
msgctxt "[Admin] Label in new preset page"
|
559 |
msgid "Default"
|
560 |
msgstr ""
|
@@ -569,33 +564,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
569 |
msgid "Enter a name to identify this filter preset"
|
570 |
msgstr ""
|
571 |
|
572 |
-
#: templates/admin/preset-filters.php:
|
573 |
msgctxt "[Admin] Label in new preset page"
|
574 |
msgid "Filters of this preset"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: includes/class
|
578 |
-
#: includes/class
|
579 |
msgctxt "[Admin] name of presets custom post type"
|
580 |
msgid "Filter presets"
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: includes/class
|
584 |
msgctxt "[Admin] singular name of presets custom post type"
|
585 |
msgid "Filter preset"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: includes/class
|
589 |
msgctxt "[Admin] add new filter preset label"
|
590 |
msgid "Add new preset"
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: includes/class
|
594 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
595 |
msgid "Convert widgets in a preset"
|
596 |
msgstr ""
|
597 |
|
598 |
-
#: includes/data-stores/class
|
599 |
msgctxt ""
|
600 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
601 |
"not exist"
|
@@ -603,73 +598,73 @@ msgid "Invalid preset."
|
|
603 |
msgstr ""
|
604 |
|
605 |
#. translators: 1. Title of original preset.
|
606 |
-
#: includes/data-stores/class
|
607 |
msgctxt "[ADMIN] Title of the cloned preset"
|
608 |
msgid "%s - Copy"
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: includes/elementor/class
|
612 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
613 |
msgid "YITH AJAX Filters Preset"
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: includes/elementor/class
|
617 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
618 |
msgid "YITH AJAX Filters Reset Button"
|
619 |
msgstr ""
|
620 |
|
621 |
-
#: includes/elementor/class
|
622 |
-
#: includes/shortcodes/class
|
623 |
msgctxt "[ELEMENTOR] Default preset option"
|
624 |
msgid "Choose an option"
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: includes/elementor/class
|
628 |
msgctxt "[ELEMENTOR] Section title"
|
629 |
msgid "Filters"
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: includes/elementor/class
|
633 |
msgctxt "[ELEMENTOR] Section title"
|
634 |
msgid "General"
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: includes/elementor/class
|
638 |
msgctxt "[ELEMENTOR] Control label"
|
639 |
msgid "Preset"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: includes/elementor/class
|
643 |
msgctxt "[ELEMENTOR] Widget description"
|
644 |
msgid ""
|
645 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: includes/elementor/class
|
649 |
msgctxt "[ELEMENTOR] Widget description"
|
650 |
msgid ""
|
651 |
"It will allow users to reset the filer selection; it will only appear when "
|
652 |
"there is an active filter."
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/elementor/class
|
656 |
msgctxt "[ELEMENTOR] Widget description"
|
657 |
msgid ""
|
658 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
659 |
"when \"Reset button position\" option won't work for your product's loop"
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: includes/functions
|
663 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
664 |
msgid "Color 1"
|
665 |
msgstr "Couleur 1"
|
666 |
|
667 |
-
#: includes/functions
|
668 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
669 |
msgid "Color 2"
|
670 |
msgstr "Couleur 2"
|
671 |
|
672 |
-
#: includes/functions
|
673 |
msgctxt "[FRONTEND] Star rating template"
|
674 |
msgid "star"
|
675 |
msgid_plural "stars"
|
@@ -677,27 +672,27 @@ msgstr[0] ""
|
|
677 |
msgstr[1] ""
|
678 |
|
679 |
#. translators: 1. Rating.
|
680 |
-
#: includes/functions
|
681 |
msgctxt "[FRONTEND] Star rating label"
|
682 |
msgid "Rated %s out of 5"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: includes/shortcodes/class
|
686 |
msgctxt "[GUTENBERG]: block name"
|
687 |
msgid "YITH AJAX Filters Preset"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: includes/shortcodes/class
|
691 |
msgctxt "[GUTENBERG]: block name"
|
692 |
msgid "YITH Reset Filters Button"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/shortcodes/class
|
696 |
msgctxt "[GUTENBERG]: block description"
|
697 |
msgid "Show filters from a preset"
|
698 |
msgstr ""
|
699 |
|
700 |
-
#: includes/shortcodes/class
|
701 |
msgctxt "[GUTENBERG]: block description"
|
702 |
msgid ""
|
703 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -706,110 +701,110 @@ msgid ""
|
|
706 |
"product's loop"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: includes/shortcodes/class
|
710 |
msgctxt "[GUTENBERG]: attribute description"
|
711 |
msgid "Preset"
|
712 |
msgstr ""
|
713 |
|
714 |
-
#: includes/tables/class
|
715 |
msgctxt "[Admin] Preset table column header"
|
716 |
msgid "Preset name"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/tables/class
|
720 |
msgctxt "[Admin] Preset table column header"
|
721 |
msgid "Shortcode"
|
722 |
msgstr ""
|
723 |
|
724 |
-
#: includes/tables/class
|
725 |
msgctxt "[Admin] Preset edit action label"
|
726 |
msgid "Edit this preset"
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: includes/tables/class
|
730 |
msgctxt "[Admin] Preset clone action label"
|
731 |
msgid "Clone this preset"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: includes/tables/class
|
735 |
msgctxt "[Admin] Preset delete action label"
|
736 |
msgid "Delete this preset"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/tables/class
|
740 |
msgctxt "[Admin] Preset delete confirm label"
|
741 |
msgid "Are you sure you want to delete this preset?"
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: includes/tables/class
|
745 |
msgctxt "[Admin] on-off yes"
|
746 |
msgid "YES"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: includes/tables/class
|
750 |
msgctxt "[Admin] on-off no"
|
751 |
msgid "NO"
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: includes/tables/class
|
755 |
msgctxt ""
|
756 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
757 |
msgid "filter preset"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: templates/admin/preset-filters.php:
|
761 |
msgctxt ""
|
762 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
763 |
msgid "filter"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: includes/tables/class
|
767 |
msgctxt "[Admin] New preset button label"
|
768 |
msgid "Create a new preset"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/widgets/class
|
772 |
msgctxt "[ADMIN] Name of the preset widget"
|
773 |
msgid "YITH AJAX Filters Preset"
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: includes/widgets/class
|
777 |
msgctxt "[ADMIN] Preset widget options"
|
778 |
msgid "Preset"
|
779 |
msgstr ""
|
780 |
|
781 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
782 |
-
#: includes/widgets/class
|
783 |
msgctxt "[ADMIN] Preset widget options"
|
784 |
msgid ""
|
785 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
786 |
"Presets</a> and create your first preset"
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: includes/widgets/class
|
790 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
791 |
msgid "YITH AJAX Product Filter"
|
792 |
msgstr ""
|
793 |
|
794 |
-
#: includes/widgets/class
|
795 |
#, fuzzy
|
796 |
msgctxt ""
|
797 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
798 |
msgid "AND"
|
799 |
msgstr "ET"
|
800 |
|
801 |
-
#: includes/widgets/class
|
802 |
msgctxt "[Plugin Name]"
|
803 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
804 |
msgstr ""
|
805 |
|
806 |
-
#: plugin-options/filter-options.php:
|
807 |
msgctxt ""
|
808 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
809 |
msgid "AND - Results need to match all selected terms at the same time"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: plugin-options/filter-options.php:
|
813 |
msgctxt ""
|
814 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
815 |
msgid "OR - Results need to match at least one of the selected terms"
|
@@ -1074,21 +1069,21 @@ msgstr ""
|
|
1074 |
msgctxt "[ADMIN] Premium tab"
|
1075 |
msgid ""
|
1076 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1077 |
-
"view<br/>\
|
1078 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1079 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1080 |
-
"range (based on their budget availability)<br/>\
|
1081 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1082 |
"attributes available in your store, like color and size. For the color "
|
1083 |
"filter, you can either choose square or circular color swatches or use "
|
1084 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1085 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1086 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1087 |
-
"concentrate only on high-rated ones)<br/>\
|
1088 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1089 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1090 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1091 |
-
"filter products and view only those with a discount<br/>\
|
1092 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1093 |
"filter products based on their needs and exclude out-of-stock products from "
|
1094 |
"the list"
|
@@ -1205,73 +1200,73 @@ msgid ""
|
|
1205 |
"easier to share)"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
#: templates/admin/preset-edit.php:
|
1209 |
msgctxt "[Admin] Back link in new preset page"
|
1210 |
msgid "< back to preset list"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: templates/admin/preset-edit.php:
|
1214 |
msgctxt "[ADMIN] Title for new preset page"
|
1215 |
msgid "Edit filter preset"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
-
#: templates/admin/preset-edit.php:
|
1219 |
msgctxt "[ADMIN] Title for new preset page"
|
1220 |
msgid "Add new filter preset"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: templates/admin/preset-edit.php:
|
1224 |
msgctxt "[ADMIN] Preset save message"
|
1225 |
msgid "Preset saved correctly"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#: templates/admin/preset-edit.php:
|
1229 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1230 |
msgid "Save preset"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: templates/admin/preset-empty-content.php:
|
1234 |
msgctxt "Alt text for empty preset image"
|
1235 |
msgid "Empty preset"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
#. translators: 1. Missing item name.
|
1239 |
-
#: templates/admin/preset-empty-content.php:
|
1240 |
msgctxt "[Admin] Preset table empty message"
|
1241 |
msgid "You don't have any %s yet."
|
1242 |
msgstr ""
|
1243 |
|
1244 |
-
#: templates/admin/preset-filter-term.php:
|
1245 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1246 |
msgid "Label"
|
1247 |
msgstr ""
|
1248 |
|
1249 |
-
#: templates/admin/preset-filter-term.php:
|
1250 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1251 |
msgid "Tooltip"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: templates/admin/preset-filter-term.php:
|
1255 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1256 |
msgid "Color"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: templates/admin/preset-filter.php:
|
1260 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1261 |
msgid "Save Filter"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
-
#: templates/admin/preset-filter.php:
|
1265 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1266 |
msgid "Delete Filter"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
-
#: templates/admin/preset-filters.php:
|
1270 |
msgctxt "[Admin] New filter button label"
|
1271 |
msgid "Add a new filter"
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: templates/admin/preset-filters.php:
|
1275 |
msgctxt "[Admin] Add new filter in new preset page"
|
1276 |
msgid "+ Add filter"
|
1277 |
msgstr ""
|
@@ -1282,12 +1277,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1282 |
msgid "See %d more filters"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: templates/admin/upgrade-note-modal.php:
|
1286 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1287 |
msgid "Use the new filter preset feature for your filters"
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: templates/admin/upgrade-note-modal.php:
|
1291 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1292 |
msgid ""
|
1293 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1297,7 +1292,7 @@ msgid ""
|
|
1297 |
msgstr ""
|
1298 |
|
1299 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1300 |
-
#: templates/admin/upgrade-note-modal.php:
|
1301 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1302 |
msgid ""
|
1303 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1305,14 +1300,14 @@ msgid ""
|
|
1305 |
msgstr ""
|
1306 |
|
1307 |
#. translators: 1. Url to docs.
|
1308 |
-
#: templates/admin/upgrade-note-modal.php:
|
1309 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1310 |
msgid ""
|
1311 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1312 |
"to use this new feature."
|
1313 |
msgstr ""
|
1314 |
|
1315 |
-
#: templates/admin/upgrade-note-modal.php:
|
1316 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1317 |
msgid ""
|
1318 |
"We offer a tool to automatically convert the widget filters of your shop in "
|
@@ -1321,7 +1316,7 @@ msgid ""
|
|
1321 |
"will be lost during the process.</b>"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: templates/admin/upgrade-note-modal.php:
|
1325 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1326 |
msgid ""
|
1327 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1329,17 +1324,17 @@ msgid ""
|
|
1329 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#: templates/admin/upgrade-note-modal.php:
|
1333 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1334 |
msgid "Convert your widgets in a preset now"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: templates/admin/upgrade-note-modal.php:
|
1338 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1339 |
msgid "No thanks"
|
1340 |
msgstr ""
|
1341 |
|
1342 |
-
#: templates/filters/global/reset-filters.php:
|
1343 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1344 |
msgid "Reset filters"
|
1345 |
msgstr ""
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2020-12-29 14:36:56+0000\n"
|
10 |
"Language: fr\n"
|
11 |
"MIME-Version: 1.0\n"
|
14 |
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
18 |
msgid "Draft Preset"
|
19 |
msgstr ""
|
20 |
|
21 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
22 |
+
#: includes/functions-yith-wcan.php:132
|
23 |
msgid "Term"
|
24 |
msgstr "Terme"
|
25 |
|
26 |
+
#: includes/functions-yith-wcan.php:98
|
27 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
28 |
msgid "Color"
|
29 |
msgstr "Couleur"
|
30 |
|
31 |
+
#: includes/functions-yith-wcan.php:132
|
32 |
msgid "Labels"
|
33 |
msgstr "Étiquettes"
|
34 |
|
35 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Filtrer la liste des produits sans recharger la page"
|
38 |
|
39 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
40 |
msgid "Filters:"
|
41 |
msgstr "Filtres :"
|
42 |
|
43 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
44 |
msgid "List"
|
45 |
msgstr "Liste"
|
46 |
|
47 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
48 |
msgid "Label"
|
49 |
msgstr "Étiquette"
|
50 |
|
51 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Menu déroulant"
|
54 |
|
55 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
56 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
57 |
msgid "Title"
|
58 |
msgstr "Titre"
|
59 |
|
60 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
61 |
msgid "Type:"
|
62 |
msgstr "Type :"
|
63 |
|
64 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Type de requête :"
|
67 |
|
68 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
69 |
msgid "OR"
|
70 |
msgstr "OU"
|
71 |
|
72 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Attribut :"
|
75 |
|
76 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Affichage (tout par défaut) :"
|
79 |
|
80 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Tout (pas de hiérarchie)"
|
83 |
|
84 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Tout (hiérarchique)"
|
87 |
|
88 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Parent seulement"
|
91 |
|
92 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "Classe personnalisée CSS"
|
95 |
|
96 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Réinitialiser tous les filtres"
|
103 |
|
104 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
105 |
msgid "Button Label"
|
106 |
msgstr "Étiquette du bouton"
|
107 |
|
130 |
"your e-commerce shop on <strong>YITH</strong></a>"
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: includes/class-yith-wcan-admin.php:107
|
134 |
msgctxt "[Admin] Copy confirmation message"
|
135 |
msgid "Content copied to your clipboard"
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: includes/class-yith-wcan-admin.php:108
|
139 |
msgctxt "[Admin] Confirm filter delete message"
|
140 |
msgid "Are you sure you want to delete this item?"
|
141 |
msgstr ""
|
142 |
|
143 |
#. translators: 1. Number of items that will be added.
|
144 |
+
#: includes/class-yith-wcan-admin.php:110
|
145 |
msgctxt "[Admin] Confirm add all terms message"
|
146 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: includes/class-yith-wcan-admin.php:111
|
150 |
msgctxt "[Admin] Error message"
|
151 |
msgid "\"Filter title\" is a required field"
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
155 |
msgctxt "[Admin] Message shown when filter has empty title"
|
156 |
msgid "< no title >"
|
157 |
msgstr ""
|
158 |
|
159 |
+
#: includes/class-yith-wcan-admin.php:115
|
160 |
msgctxt "[Admin] Media library title, when selecting images"
|
161 |
msgid "Select media you want to use"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: includes/class-yith-wcan-admin.php:116
|
165 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
166 |
msgid "Use this media"
|
167 |
msgstr ""
|
168 |
|
169 |
+
#: includes/class-yith-wcan-admin.php:184
|
170 |
msgctxt "[Admin] tab name"
|
171 |
msgid "Filter presets"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: includes/class-yith-wcan-admin.php:185
|
175 |
msgctxt "[Admin] tab name"
|
176 |
msgid "General settings"
|
177 |
msgstr ""
|
178 |
|
179 |
+
#: includes/class-yith-wcan-admin.php:186
|
180 |
#, fuzzy
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "SEO"
|
183 |
msgstr "SEO"
|
184 |
|
185 |
+
#: includes/class-yith-wcan-admin.php:187
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "Premium Version"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: includes/class-yith-wcan-admin.php:191
|
191 |
msgctxt "[Admin] tab name"
|
192 |
msgid "Legacy"
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
196 |
msgctxt "[Admin] Plugin description"
|
197 |
msgid ""
|
198 |
"It allows your users to find the product they are looking for as quickly as "
|
199 |
"possible."
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: includes/class-yith-wcan-admin.php:211
|
203 |
msgctxt "[HELP TAB] Video title"
|
204 |
msgid ""
|
205 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
206 |
"the shop page:</b>"
|
207 |
msgstr ""
|
208 |
|
209 |
+
#: includes/class-yith-wcan-admin.php:329
|
210 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
211 |
msgid "item"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: includes/class-yith-wcan-admin.php:330
|
215 |
msgctxt "[Admin] Preset table empty message second line"
|
216 |
msgid "But don't worry, here you can create your first one!"
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: includes/class-yith-wcan-admin.php:480
|
220 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
221 |
msgid "Clear Product Filter transients"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: includes/class-yith-wcan-admin.php:486
|
225 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
226 |
msgid "Run filter widgets upgrade"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: includes/class-yith-wcan-admin.php:481
|
230 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
231 |
msgid "Clear"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: includes/class-yith-wcan-admin.php:487
|
235 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
236 |
msgid "Run"
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: includes/class-yith-wcan-admin.php:482
|
240 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
241 |
msgid ""
|
242 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
244 |
"and filters do not display the expected results."
|
245 |
msgstr ""
|
246 |
|
247 |
+
#: includes/class-yith-wcan-admin.php:488
|
248 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
249 |
msgid ""
|
250 |
"This will create a preset for any sidebar of your shop containing filter "
|
251 |
"widgets; preset will be configured to match widgets specifications"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
255 |
msgctxt "[Admin] Filter edit form"
|
256 |
msgid "Taxonomy"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
260 |
msgctxt "[Admin] Filter edit form"
|
261 |
msgid "Checkbox"
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
265 |
msgctxt "[Admin] Filter edit form"
|
266 |
msgid "Select"
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
270 |
msgctxt "[Admin] Filter edit form"
|
271 |
msgid "Text"
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
275 |
msgctxt "[Admin] Filter edit form"
|
276 |
msgid "Color Swatches"
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
280 |
msgctxt "[Admin] Filter edit form"
|
281 |
msgid "Label"
|
282 |
msgstr ""
|
291 |
msgid "Enter a name to identify this filter"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: plugin-options/filter-options.php:40
|
295 |
msgctxt "[Admin] Filter edit form"
|
296 |
msgid "Filter for"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: plugin-options/filter-options.php:44
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Select the parameters you wish to filter for"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: plugin-options/filter-options.php:49
|
305 |
msgctxt "[Admin] Filter edit form"
|
306 |
msgid "Choose taxonomy"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: plugin-options/filter-options.php:53
|
310 |
msgctxt "[Admin] Filter edit form"
|
311 |
msgid "Select which taxonomy to use for this filter"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: plugin-options/filter-options.php:58
|
315 |
msgctxt "[Admin] Filter edit form"
|
316 |
msgid "Auto-populate with all terms"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: plugin-options/filter-options.php:60
|
320 |
msgctxt "[Admin] Filter edit form"
|
321 |
msgid ""
|
322 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
325 |
"well.</span>"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: plugin-options/filter-options.php:69
|
329 |
msgctxt "[Admin] Filter edit form"
|
330 |
msgid "Choose terms"
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: plugin-options/filter-options.php:74
|
334 |
msgctxt "[Admin] Filter edit form"
|
335 |
msgid "Select which terms to use for filtering"
|
336 |
msgstr ""
|
337 |
|
338 |
+
#: plugin-options/filter-options.php:78
|
339 |
msgctxt "[Admin] Filter edit form"
|
340 |
msgid "Filter type"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: plugin-options/filter-options.php:82
|
344 |
msgctxt "[Admin] Filter edit form"
|
345 |
msgid "Select the filter type for this filter"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: plugin-options/filter-options.php:86
|
349 |
#, fuzzy
|
350 |
msgctxt "[Admin] Filter edit form"
|
351 |
msgid "Labels"
|
352 |
msgstr "Étiquettes"
|
353 |
|
354 |
+
#: plugin-options/filter-options.php:89
|
355 |
#, fuzzy
|
356 |
msgctxt "[Admin] Filter edit form"
|
357 |
msgid "Show below"
|
358 |
msgstr "Afficher la sélection"
|
359 |
|
360 |
+
#: plugin-options/filter-options.php:90
|
361 |
msgctxt "[Admin] Filter edit form"
|
362 |
msgid "Show on the right"
|
363 |
msgstr ""
|
364 |
|
365 |
+
#: plugin-options/filter-options.php:91
|
366 |
msgctxt "[Admin] Filter edit form"
|
367 |
msgid "Hide"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: plugin-options/filter-options.php:93
|
371 |
#, fuzzy
|
372 |
msgctxt "[Admin] Filter edit form"
|
373 |
msgid "Choose if and where to show the label inside your filter"
|
374 |
msgstr "Choisissez comment trier les produits WooCommerce"
|
375 |
|
376 |
+
#: plugin-options/filter-options.php:97
|
377 |
msgctxt "[Admin] Filter edit form"
|
378 |
msgid "Columns number"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: plugin-options/filter-options.php:102
|
382 |
msgctxt "[Admin] Filter edit form"
|
383 |
msgid "Set the number of items per row you want to show for this design"
|
384 |
msgstr ""
|
385 |
|
386 |
+
#: plugin-options/filter-options.php:106
|
387 |
msgctxt "[Admin] Filter edit form"
|
388 |
msgid "Customize terms"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: plugin-options/filter-options.php:109
|
392 |
msgctxt "[Admin] Filter edit form"
|
393 |
msgid ""
|
394 |
"Configure your terms individually; system will otherwise use default labels/"
|
402 |
"this option and use the boxes below</span>"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: plugin-options/filter-options.php:119
|
406 |
msgctxt "[Admin] Filter edit form"
|
407 |
msgid "Terms options"
|
408 |
msgstr ""
|
409 |
|
410 |
+
#: plugin-options/filter-options.php:125
|
411 |
msgctxt "[Admin] Filter edit form"
|
412 |
msgid "Show hierarchy"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: plugin-options/filter-options.php:128
|
416 |
msgctxt "[Admin] Filter edit form"
|
417 |
msgid "No, show all terms in same level"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: plugin-options/filter-options.php:129
|
421 |
msgctxt "[Admin] Filter edit form"
|
422 |
msgid "No, show only parent terms"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: plugin-options/filter-options.php:130
|
426 |
msgctxt "[Admin] Filter edit form"
|
427 |
msgid "Yes"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: plugin-options/filter-options.php:132
|
431 |
msgctxt "[Admin] Filter edit form"
|
432 |
msgid "Choose how to show terms hierarchy"
|
433 |
msgstr ""
|
434 |
|
435 |
+
#: plugin-options/filter-options.php:136
|
436 |
msgctxt "[Admin] Filter edit form"
|
437 |
msgid "Allow multiple selection"
|
438 |
msgstr ""
|
439 |
|
440 |
+
#: plugin-options/filter-options.php:138
|
441 |
msgctxt "[Admin] Filter edit form"
|
442 |
msgid "Enable if the user can select multiple terms when filtering products"
|
443 |
msgstr ""
|
444 |
|
445 |
+
#: plugin-options/filter-options.php:142
|
446 |
msgctxt "[Admin] Filter edit form"
|
447 |
msgid "Multiselect relation"
|
448 |
msgstr ""
|
449 |
|
450 |
+
#: plugin-options/filter-options.php:148
|
451 |
msgctxt "[Admin] Filter edit form"
|
452 |
msgid "Choose how multiple terms selection should behave"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
456 |
msgctxt "[Admin] Filter edit form, sorting options"
|
457 |
msgid "Default sorting"
|
458 |
msgstr ""
|
459 |
|
460 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
461 |
msgctxt "[Admin] Filter edit form, sorting options"
|
462 |
msgid "Sort by popularity"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
466 |
msgctxt "[Admin] Filter edit form, sorting options"
|
467 |
msgid "Sort by average rating"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
471 |
msgctxt "[Admin] Filter edit form, sorting options"
|
472 |
msgid "Sort by latest"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
476 |
msgctxt "[Admin] Filter edit form, sorting options"
|
477 |
msgid "Sort by price: low to high"
|
478 |
msgstr ""
|
479 |
|
480 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
481 |
msgctxt "[Admin] Filter edit form, sorting options"
|
482 |
msgid "Sort by price: high to low"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: includes/class-yith-wcan-filter.php:116
|
486 |
msgctxt "[Admin] Default filter title"
|
487 |
msgid "New filter"
|
488 |
msgstr ""
|
489 |
|
490 |
+
#: includes/class-yith-wcan-frontend.php:591
|
491 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
492 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
493 |
msgid "All"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: includes/class-yith-wcan-frontend.php:592
|
497 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
498 |
msgid "Search..."
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: includes/class-yith-wcan-frontend.php:593
|
502 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
503 |
msgid "No item found"
|
504 |
msgstr ""
|
505 |
|
506 |
#. translators: 1. Number of items to show.
|
507 |
+
#: includes/class-yith-wcan-frontend.php:595
|
508 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
509 |
msgid "Show %d more"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: includes/class-yith-wcan-frontend.php:596
|
513 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
514 |
msgid "Close"
|
515 |
msgstr ""
|
516 |
|
517 |
+
#: includes/class-yith-wcan-frontend.php:597
|
518 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
519 |
msgid "Save"
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: includes/class-yith-wcan-frontend.php:598
|
523 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
524 |
msgid "Show results"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: includes/class-yith-wcan-frontend.php:599
|
528 |
msgctxt ""
|
529 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
530 |
"selection"
|
531 |
msgid "Clear"
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: includes/class-yith-wcan-frontend.php:600
|
535 |
msgctxt ""
|
536 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
537 |
"selection"
|
538 |
msgid "Clear All"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: includes/class-yith-wcan-install.php:95
|
542 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
543 |
msgid "Default preset"
|
544 |
msgstr ""
|
545 |
|
546 |
#. translators: 1. Taxonomy name.
|
547 |
+
#: includes/class-yith-wcan-install.php:285
|
548 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
549 |
msgid "Filter by %s"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
553 |
msgctxt "[Admin] Label in new preset page"
|
554 |
msgid "Default"
|
555 |
msgstr ""
|
564 |
msgid "Enter a name to identify this filter preset"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: templates/admin/preset-filters.php:22
|
568 |
msgctxt "[Admin] Label in new preset page"
|
569 |
msgid "Filters of this preset"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: includes/class-yith-wcan-presets.php:95
|
573 |
+
#: includes/class-yith-wcan-presets.php:100
|
574 |
msgctxt "[Admin] name of presets custom post type"
|
575 |
msgid "Filter presets"
|
576 |
msgstr ""
|
577 |
|
578 |
+
#: includes/class-yith-wcan-presets.php:96
|
579 |
msgctxt "[Admin] singular name of presets custom post type"
|
580 |
msgid "Filter preset"
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: includes/class-yith-wcan-presets.php:97
|
584 |
msgctxt "[Admin] add new filter preset label"
|
585 |
msgid "Add new preset"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: includes/class-yith-wcan-presets.php:139
|
589 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
590 |
msgid "Convert widgets in a preset"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
594 |
msgctxt ""
|
595 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
596 |
"not exist"
|
598 |
msgstr ""
|
599 |
|
600 |
#. translators: 1. Title of original preset.
|
601 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
602 |
msgctxt "[ADMIN] Title of the cloned preset"
|
603 |
msgid "%s - Copy"
|
604 |
msgstr ""
|
605 |
|
606 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
607 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
608 |
msgid "YITH AJAX Filters Preset"
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
612 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
613 |
msgid "YITH AJAX Filters Reset Button"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
617 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
618 |
msgctxt "[ELEMENTOR] Default preset option"
|
619 |
msgid "Choose an option"
|
620 |
msgstr ""
|
621 |
|
622 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
623 |
msgctxt "[ELEMENTOR] Section title"
|
624 |
msgid "Filters"
|
625 |
msgstr ""
|
626 |
|
627 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
628 |
msgctxt "[ELEMENTOR] Section title"
|
629 |
msgid "General"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
633 |
msgctxt "[ELEMENTOR] Control label"
|
634 |
msgid "Preset"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
638 |
msgctxt "[ELEMENTOR] Widget description"
|
639 |
msgid ""
|
640 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
641 |
msgstr ""
|
642 |
|
643 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
644 |
msgctxt "[ELEMENTOR] Widget description"
|
645 |
msgid ""
|
646 |
"It will allow users to reset the filer selection; it will only appear when "
|
647 |
"there is an active filter."
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
651 |
msgctxt "[ELEMENTOR] Widget description"
|
652 |
msgid ""
|
653 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
654 |
"when \"Reset button position\" option won't work for your product's loop"
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: includes/functions-yith-wcan.php:112
|
658 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
659 |
msgid "Color 1"
|
660 |
msgstr "Couleur 1"
|
661 |
|
662 |
+
#: includes/functions-yith-wcan.php:112
|
663 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
664 |
msgid "Color 2"
|
665 |
msgstr "Couleur 2"
|
666 |
|
667 |
+
#: includes/functions-yith-wcan.php:1026
|
668 |
msgctxt "[FRONTEND] Star rating template"
|
669 |
msgid "star"
|
670 |
msgid_plural "stars"
|
672 |
msgstr[1] ""
|
673 |
|
674 |
#. translators: 1. Rating.
|
675 |
+
#: includes/functions-yith-wcan.php:1041
|
676 |
msgctxt "[FRONTEND] Star rating label"
|
677 |
msgid "Rated %s out of 5"
|
678 |
msgstr ""
|
679 |
|
680 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
681 |
msgctxt "[GUTENBERG]: block name"
|
682 |
msgid "YITH AJAX Filters Preset"
|
683 |
msgstr ""
|
684 |
|
685 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
686 |
msgctxt "[GUTENBERG]: block name"
|
687 |
msgid "YITH Reset Filters Button"
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
691 |
msgctxt "[GUTENBERG]: block description"
|
692 |
msgid "Show filters from a preset"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
696 |
msgctxt "[GUTENBERG]: block description"
|
697 |
msgid ""
|
698 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
701 |
"product's loop"
|
702 |
msgstr ""
|
703 |
|
704 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
705 |
msgctxt "[GUTENBERG]: attribute description"
|
706 |
msgid "Preset"
|
707 |
msgstr ""
|
708 |
|
709 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
710 |
msgctxt "[Admin] Preset table column header"
|
711 |
msgid "Preset name"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
715 |
msgctxt "[Admin] Preset table column header"
|
716 |
msgid "Shortcode"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
720 |
msgctxt "[Admin] Preset edit action label"
|
721 |
msgid "Edit this preset"
|
722 |
msgstr ""
|
723 |
|
724 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
725 |
msgctxt "[Admin] Preset clone action label"
|
726 |
msgid "Clone this preset"
|
727 |
msgstr ""
|
728 |
|
729 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
730 |
msgctxt "[Admin] Preset delete action label"
|
731 |
msgid "Delete this preset"
|
732 |
msgstr ""
|
733 |
|
734 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
735 |
msgctxt "[Admin] Preset delete confirm label"
|
736 |
msgid "Are you sure you want to delete this preset?"
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
740 |
msgctxt "[Admin] on-off yes"
|
741 |
msgid "YES"
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
745 |
msgctxt "[Admin] on-off no"
|
746 |
msgid "NO"
|
747 |
msgstr ""
|
748 |
|
749 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
750 |
msgctxt ""
|
751 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
752 |
msgid "filter preset"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: templates/admin/preset-filters.php:31
|
756 |
msgctxt ""
|
757 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
758 |
msgid "filter"
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
762 |
msgctxt "[Admin] New preset button label"
|
763 |
msgid "Create a new preset"
|
764 |
msgstr ""
|
765 |
|
766 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
767 |
msgctxt "[ADMIN] Name of the preset widget"
|
768 |
msgid "YITH AJAX Filters Preset"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
772 |
msgctxt "[ADMIN] Preset widget options"
|
773 |
msgid "Preset"
|
774 |
msgstr ""
|
775 |
|
776 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
777 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
778 |
msgctxt "[ADMIN] Preset widget options"
|
779 |
msgid ""
|
780 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
781 |
"Presets</a> and create your first preset"
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
785 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
786 |
msgid "YITH AJAX Product Filter"
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
790 |
#, fuzzy
|
791 |
msgctxt ""
|
792 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
793 |
msgid "AND"
|
794 |
msgstr "ET"
|
795 |
|
796 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
797 |
msgctxt "[Plugin Name]"
|
798 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
799 |
msgstr ""
|
800 |
|
801 |
+
#: plugin-options/filter-options.php:145
|
802 |
msgctxt ""
|
803 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
804 |
msgid "AND - Results need to match all selected terms at the same time"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: plugin-options/filter-options.php:146
|
808 |
msgctxt ""
|
809 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
810 |
msgid "OR - Results need to match at least one of the selected terms"
|
1069 |
msgctxt "[ADMIN] Premium tab"
|
1070 |
msgid ""
|
1071 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1072 |
+
"view<br/>\n"
|
1073 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1074 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1075 |
+
"range (based on their budget availability)<br/>\n"
|
1076 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1077 |
"attributes available in your store, like color and size. For the color "
|
1078 |
"filter, you can either choose square or circular color swatches or use "
|
1079 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1080 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1081 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1082 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1083 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1084 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1085 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1086 |
+
"filter products and view only those with a discount<br/>\n"
|
1087 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1088 |
"filter products based on their needs and exclude out-of-stock products from "
|
1089 |
"the list"
|
1200 |
"easier to share)"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: templates/admin/preset-edit.php:31
|
1204 |
msgctxt "[Admin] Back link in new preset page"
|
1205 |
msgid "< back to preset list"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: templates/admin/preset-edit.php:38
|
1209 |
msgctxt "[ADMIN] Title for new preset page"
|
1210 |
msgid "Edit filter preset"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: templates/admin/preset-edit.php:40
|
1214 |
msgctxt "[ADMIN] Title for new preset page"
|
1215 |
msgid "Add new filter preset"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: templates/admin/preset-edit.php:47
|
1219 |
msgctxt "[ADMIN] Preset save message"
|
1220 |
msgid "Preset saved correctly"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
+
#: templates/admin/preset-edit.php:93
|
1224 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1225 |
msgid "Save preset"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
+
#: templates/admin/preset-empty-content.php:29
|
1229 |
msgctxt "Alt text for empty preset image"
|
1230 |
msgid "Empty preset"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
#. translators: 1. Missing item name.
|
1234 |
+
#: templates/admin/preset-empty-content.php:35
|
1235 |
msgctxt "[Admin] Preset table empty message"
|
1236 |
msgid "You don't have any %s yet."
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: templates/admin/preset-filter-term.php:30
|
1240 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1241 |
msgid "Label"
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: templates/admin/preset-filter-term.php:35
|
1245 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1246 |
msgid "Tooltip"
|
1247 |
msgstr ""
|
1248 |
|
1249 |
+
#: templates/admin/preset-filter-term.php:41
|
1250 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1251 |
msgid "Color"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: templates/admin/preset-filter.php:91
|
1255 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1256 |
msgid "Save Filter"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
+
#: templates/admin/preset-filter.php:92
|
1260 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1261 |
msgid "Delete Filter"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: templates/admin/preset-filters.php:33
|
1265 |
msgctxt "[Admin] New filter button label"
|
1266 |
msgid "Add a new filter"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: templates/admin/preset-filters.php:57
|
1270 |
msgctxt "[Admin] Add new filter in new preset page"
|
1271 |
msgid "+ Add filter"
|
1272 |
msgstr ""
|
1277 |
msgid "See %d more filters"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1281 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1282 |
msgid "Use the new filter preset feature for your filters"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1286 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1287 |
msgid ""
|
1288 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1292 |
msgstr ""
|
1293 |
|
1294 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1295 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1296 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1297 |
msgid ""
|
1298 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
#. translators: 1. Url to docs.
|
1303 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1304 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1305 |
msgid ""
|
1306 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1307 |
"to use this new feature."
|
1308 |
msgstr ""
|
1309 |
|
1310 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1311 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1312 |
msgid ""
|
1313 |
"We offer a tool to automatically convert the widget filters of your shop in "
|
1316 |
"will be lost during the process.</b>"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1320 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1321 |
msgid ""
|
1322 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1324 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1328 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1329 |
msgid "Convert your widgets in a preset now"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1333 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1334 |
msgid "No thanks"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: templates/filters/global/reset-filters.php:24
|
1338 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1339 |
msgid "Reset filters"
|
1340 |
msgstr ""
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2021-03-03 10:36+0100\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
@@ -16,94 +16,94 @@ msgstr ""
|
|
16 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
"X-Generator: Poedit 2.4.2\n"
|
18 |
|
19 |
-
#: includes/data-stores/class
|
20 |
msgid "Draft Preset"
|
21 |
msgstr "Preset bozza"
|
22 |
|
23 |
-
#: includes/functions
|
24 |
-
#: includes/functions
|
25 |
msgid "Term"
|
26 |
msgstr "Proprietà"
|
27 |
|
28 |
-
#: includes/functions
|
29 |
-
#: includes/widgets/class
|
30 |
msgid "Color"
|
31 |
msgstr "Colore"
|
32 |
|
33 |
-
#: includes/functions
|
34 |
msgid "Labels"
|
35 |
msgstr "Etichette "
|
36 |
|
37 |
-
#: includes/widgets/class
|
38 |
msgid "Filter the list of products without reloading the page"
|
39 |
msgstr "Filtra la lista dei prodotti senza dover ricaricare la pagina"
|
40 |
|
41 |
-
#: includes/widgets/class
|
42 |
msgid "Filters:"
|
43 |
msgstr "Filtri:"
|
44 |
|
45 |
-
#: includes/widgets/class
|
46 |
msgid "List"
|
47 |
msgstr "Lista"
|
48 |
|
49 |
-
#: includes/widgets/class
|
50 |
msgid "Label"
|
51 |
msgstr "Etichetta"
|
52 |
|
53 |
-
#: includes/widgets/class
|
54 |
msgid "Dropdown"
|
55 |
msgstr "Dropdown"
|
56 |
|
57 |
-
#: includes/widgets/class
|
58 |
-
#: includes/widgets/class
|
59 |
msgid "Title"
|
60 |
msgstr "Titolo"
|
61 |
|
62 |
-
#: includes/widgets/class
|
63 |
msgid "Type:"
|
64 |
msgstr "Tipo:"
|
65 |
|
66 |
-
#: includes/widgets/class
|
67 |
msgid "Query Type:"
|
68 |
msgstr "Tipo Query:"
|
69 |
|
70 |
-
#: includes/widgets/class
|
71 |
msgid "OR"
|
72 |
msgstr "O"
|
73 |
|
74 |
-
#: includes/widgets/class
|
75 |
msgid "Attribute:"
|
76 |
msgstr "Attributo:"
|
77 |
|
78 |
-
#: includes/widgets/class
|
79 |
msgid "Display (default All):"
|
80 |
msgstr "Mostra (default Tutti)"
|
81 |
|
82 |
-
#: includes/widgets/class
|
83 |
msgid "All (no hierarchical)"
|
84 |
msgstr "Tutti (non gerarchico)"
|
85 |
|
86 |
-
#: includes/widgets/class
|
87 |
msgid "All (hierarchical)"
|
88 |
msgstr "Tutti (gerarchico)"
|
89 |
|
90 |
-
#: includes/widgets/class
|
91 |
msgid "Only Parent"
|
92 |
msgstr "Solo Principali"
|
93 |
|
94 |
-
#: includes/widgets/class
|
95 |
msgid "CSS custom class"
|
96 |
msgstr "Classe CSS custom"
|
97 |
|
98 |
-
#: includes/widgets/class
|
99 |
msgid "YITH AJAX Reset Filter"
|
100 |
msgstr "YITH AJAX Reset Filter"
|
101 |
|
102 |
-
#: includes/widgets/class
|
103 |
msgid "Reset All Filters"
|
104 |
msgstr "Resetta tutti i filtri"
|
105 |
|
106 |
-
#: includes/widgets/class
|
107 |
msgid "Button Label"
|
108 |
msgstr "Etichetta Pulsante"
|
109 |
|
@@ -141,73 +141,68 @@ msgstr ""
|
|
141 |
"yithemes.com/\" target=\"_blank\">Scopri altri plugin per il tuo e-commerce "
|
142 |
"su <strong>YITH</strong></a>"
|
143 |
|
144 |
-
#: includes/class
|
145 |
msgctxt "[Admin] Copy confirmation message"
|
146 |
msgid "Content copied to your clipboard"
|
147 |
msgstr "Contenuto copiato negli appunti"
|
148 |
|
149 |
-
#: includes/class
|
150 |
msgctxt "[Admin] Confirm filter delete message"
|
151 |
msgid "Are you sure you want to delete this item?"
|
152 |
msgstr "Sei sicuro di voler eliminare questo termine?"
|
153 |
|
154 |
#. translators: 1. Number of items that will be added.
|
155 |
-
#: includes/class
|
156 |
msgctxt "[Admin] Confirm add all terms message"
|
157 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
158 |
msgstr "Sei sicuro di voler procedere? Questa azione aggiungerà %s elementi"
|
159 |
|
160 |
-
#: includes/class
|
161 |
msgctxt "[Admin] Error message"
|
162 |
msgid "\"Filter title\" is a required field"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class
|
166 |
msgctxt "[Admin] Message shown when filter has empty title"
|
167 |
msgid "< no title >"
|
168 |
msgstr "< nessun titolo >"
|
169 |
|
170 |
-
#: includes/class
|
171 |
msgctxt "[Admin] Media library title, when selecting images"
|
172 |
msgid "Select media you want to use"
|
173 |
msgstr "Seleziona i media da usare"
|
174 |
|
175 |
-
#: includes/class
|
176 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
177 |
msgid "Use this media"
|
178 |
msgstr "Usa questo media"
|
179 |
|
180 |
-
#: includes/class
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "Filter presets"
|
183 |
msgstr "Preset filtri"
|
184 |
|
185 |
-
#: includes/class
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "General settings"
|
188 |
msgstr "Impostazioni generali"
|
189 |
|
190 |
-
#: includes/class
|
191 |
msgctxt "[Admin] tab name"
|
192 |
msgid "SEO"
|
193 |
msgstr "SEO"
|
194 |
|
195 |
-
#: includes/class
|
196 |
msgctxt "[Admin] tab name"
|
197 |
msgid "Premium Version"
|
198 |
msgstr "Versione Premium"
|
199 |
|
200 |
-
#: includes/class
|
201 |
msgctxt "[Admin] tab name"
|
202 |
msgid "Legacy"
|
203 |
msgstr "Legacy"
|
204 |
|
205 |
-
#: includes/class
|
206 |
-
msgctxt "[Admin] Menu title"
|
207 |
-
msgid "Ajax Product Filter"
|
208 |
-
msgstr "Ajax Product Filter"
|
209 |
-
|
210 |
-
#: includes/class.yith-wcan-admin.php:199
|
211 |
msgctxt "[Admin] Plugin description"
|
212 |
msgid ""
|
213 |
"It allows your users to find the product they are looking for as quickly as "
|
@@ -216,44 +211,44 @@ msgstr ""
|
|
216 |
"Permette ai tuoi utenti di trovare il prodotto che stanno cercando il più "
|
217 |
"velocemente possibile."
|
218 |
|
219 |
-
#: includes/class
|
220 |
msgctxt "[HELP TAB] Video title"
|
221 |
msgid ""
|
222 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
223 |
"the shop page:</b>"
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: includes/class
|
227 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
228 |
msgid "item"
|
229 |
msgstr "elemento"
|
230 |
|
231 |
-
#: includes/class
|
232 |
msgctxt "[Admin] Preset table empty message second line"
|
233 |
msgid "But don't worry, here you can create your first one!"
|
234 |
msgstr "Ma non preoccuparti. Puoi iniziare a crearli qui!"
|
235 |
|
236 |
-
#: includes/class
|
237 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
238 |
msgid "Clear Product Filter transients"
|
239 |
msgstr "Cancella i transient Product Filter"
|
240 |
|
241 |
-
#: includes/class
|
242 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
243 |
msgid "Run filter widgets upgrade"
|
244 |
msgstr "Avvia l'upgrade dei widget dei filtri"
|
245 |
|
246 |
-
#: includes/class
|
247 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
248 |
msgid "Clear"
|
249 |
msgstr "Cancella"
|
250 |
|
251 |
-
#: includes/class
|
252 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
253 |
msgid "Run"
|
254 |
msgstr "Avvia"
|
255 |
|
256 |
-
#: includes/class
|
257 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
258 |
msgid ""
|
259 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -264,7 +259,7 @@ msgstr ""
|
|
264 |
"Product Filter. Utile se hai cambiato la configurazione del prodotto e i "
|
265 |
"filtri non mostrano i risultati previsti. "
|
266 |
|
267 |
-
#: includes/class
|
268 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
269 |
msgid ""
|
270 |
"This will create a preset for any sidebar of your shop containing filter "
|
@@ -273,32 +268,32 @@ msgstr ""
|
|
273 |
"Questo creerà un preset con i widget dei filtri per qualsiasi barra laterale "
|
274 |
"del tuo shop. Il preset sarà configurato in base alle specifiche dei widget"
|
275 |
|
276 |
-
#: includes/class
|
277 |
msgctxt "[Admin] Filter edit form"
|
278 |
msgid "Taxonomy"
|
279 |
msgstr "Tassonomia"
|
280 |
|
281 |
-
#: includes/class
|
282 |
msgctxt "[Admin] Filter edit form"
|
283 |
msgid "Checkbox"
|
284 |
msgstr "Checkbox"
|
285 |
|
286 |
-
#: includes/class
|
287 |
msgctxt "[Admin] Filter edit form"
|
288 |
msgid "Select"
|
289 |
msgstr "Select"
|
290 |
|
291 |
-
#: includes/class
|
292 |
msgctxt "[Admin] Filter edit form"
|
293 |
msgid "Text"
|
294 |
msgstr "Testo"
|
295 |
|
296 |
-
#: includes/class
|
297 |
msgctxt "[Admin] Filter edit form"
|
298 |
msgid "Color Swatches"
|
299 |
msgstr "Campioni colore"
|
300 |
|
301 |
-
#: includes/class
|
302 |
msgctxt "[Admin] Filter edit form"
|
303 |
msgid "Label"
|
304 |
msgstr "Etichetta"
|
@@ -313,32 +308,32 @@ msgctxt "[Admin] Filter edit form"
|
|
313 |
msgid "Enter a name to identify this filter"
|
314 |
msgstr "Inserisci un nome per definire questo filtro"
|
315 |
|
316 |
-
#: plugin-options/filter-options.php:
|
317 |
msgctxt "[Admin] Filter edit form"
|
318 |
msgid "Filter for"
|
319 |
msgstr "Filtro per"
|
320 |
|
321 |
-
#: plugin-options/filter-options.php:
|
322 |
msgctxt "[Admin] Filter edit form"
|
323 |
msgid "Select the parameters you wish to filter for"
|
324 |
msgstr "Seleziona il parametro per il filtro"
|
325 |
|
326 |
-
#: plugin-options/filter-options.php:
|
327 |
msgctxt "[Admin] Filter edit form"
|
328 |
msgid "Choose taxonomy"
|
329 |
msgstr "Scegli tassonomia"
|
330 |
|
331 |
-
#: plugin-options/filter-options.php:
|
332 |
msgctxt "[Admin] Filter edit form"
|
333 |
msgid "Select which taxonomy to use for this filter"
|
334 |
msgstr "Seleziona quale tassonomia usare per questo filtro"
|
335 |
|
336 |
-
#: plugin-options/filter-options.php:
|
337 |
msgctxt "[Admin] Filter edit form"
|
338 |
msgid "Auto-populate with all terms"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: plugin-options/filter-options.php:
|
342 |
msgctxt "[Admin] Filter edit form"
|
343 |
msgid ""
|
344 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -347,50 +342,50 @@ msgid ""
|
|
347 |
"well.</span>"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: plugin-options/filter-options.php:
|
351 |
msgctxt "[Admin] Filter edit form"
|
352 |
msgid "Choose terms"
|
353 |
msgstr "Scegli termini"
|
354 |
|
355 |
-
#: plugin-options/filter-options.php:
|
356 |
msgctxt "[Admin] Filter edit form"
|
357 |
msgid "Select which terms to use for filtering"
|
358 |
msgstr "Seleziona quali termini usare per i filtri"
|
359 |
|
360 |
-
#: plugin-options/filter-options.php:
|
361 |
msgctxt "[Admin] Filter edit form"
|
362 |
msgid "Filter type"
|
363 |
msgstr "Tipo filtro"
|
364 |
|
365 |
-
#: plugin-options/filter-options.php:
|
366 |
msgctxt "[Admin] Filter edit form"
|
367 |
msgid "Select the filter type for this filter"
|
368 |
msgstr "Seleziona il tipo di filtro"
|
369 |
|
370 |
-
#: plugin-options/filter-options.php:
|
371 |
#, fuzzy
|
372 |
msgctxt "[Admin] Filter edit form"
|
373 |
msgid "Labels"
|
374 |
msgstr "Etichette "
|
375 |
|
376 |
-
#: plugin-options/filter-options.php:
|
377 |
#, fuzzy
|
378 |
msgctxt "[Admin] Filter edit form"
|
379 |
msgid "Show below"
|
380 |
msgstr "Mostra risultati"
|
381 |
|
382 |
-
#: plugin-options/filter-options.php:
|
383 |
#, fuzzy
|
384 |
msgctxt "[Admin] Filter edit form"
|
385 |
msgid "Show on the right"
|
386 |
msgstr "Mostra conteggio elementi"
|
387 |
|
388 |
-
#: plugin-options/filter-options.php:
|
389 |
msgctxt "[Admin] Filter edit form"
|
390 |
msgid "Hide"
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: plugin-options/filter-options.php:
|
394 |
#, fuzzy
|
395 |
msgctxt "[Admin] Filter edit form"
|
396 |
msgid "Choose if and where to show the label inside your filter"
|
@@ -398,22 +393,22 @@ msgstr ""
|
|
398 |
"Decidi se e dove mostrare il pulsante \"Resetta filtri\" e i filtri "
|
399 |
"selezionati"
|
400 |
|
401 |
-
#: plugin-options/filter-options.php:
|
402 |
msgctxt "[Admin] Filter edit form"
|
403 |
msgid "Columns number"
|
404 |
msgstr "Numero colonne"
|
405 |
|
406 |
-
#: plugin-options/filter-options.php:
|
407 |
msgctxt "[Admin] Filter edit form"
|
408 |
msgid "Set the number of items per row you want to show for this design"
|
409 |
msgstr "Scegli il numero di elementi per riga da mostrare "
|
410 |
|
411 |
-
#: plugin-options/filter-options.php:
|
412 |
msgctxt "[Admin] Filter edit form"
|
413 |
msgid "Customize terms"
|
414 |
msgstr "Personalizza termini"
|
415 |
|
416 |
-
#: plugin-options/filter-options.php:
|
417 |
msgctxt "[Admin] Filter edit form"
|
418 |
msgid ""
|
419 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -427,155 +422,155 @@ msgid ""
|
|
427 |
"this option and use the boxes below</span>"
|
428 |
msgstr ""
|
429 |
|
430 |
-
#: plugin-options/filter-options.php:
|
431 |
#, fuzzy
|
432 |
msgctxt "[Admin] Filter edit form"
|
433 |
msgid "Terms options"
|
434 |
msgstr "Opzioni ordinamento"
|
435 |
|
436 |
-
#: plugin-options/filter-options.php:
|
437 |
msgctxt "[Admin] Filter edit form"
|
438 |
msgid "Show hierarchy"
|
439 |
msgstr "Mostra gerarchia"
|
440 |
|
441 |
-
#: plugin-options/filter-options.php:
|
442 |
msgctxt "[Admin] Filter edit form"
|
443 |
msgid "No, show all terms in same level"
|
444 |
msgstr "No, mostra tutti i termini nello stesso livello"
|
445 |
|
446 |
-
#: plugin-options/filter-options.php:
|
447 |
msgctxt "[Admin] Filter edit form"
|
448 |
msgid "No, show only parent terms"
|
449 |
msgstr "No, mostra solo termini genitore"
|
450 |
|
451 |
-
#: plugin-options/filter-options.php:
|
452 |
msgctxt "[Admin] Filter edit form"
|
453 |
msgid "Yes"
|
454 |
msgstr ""
|
455 |
|
456 |
-
#: plugin-options/filter-options.php:
|
457 |
msgctxt "[Admin] Filter edit form"
|
458 |
msgid "Choose how to show terms hierarchy"
|
459 |
msgstr "Decidi come mostrare la gerarchia dei termini"
|
460 |
|
461 |
-
#: plugin-options/filter-options.php:
|
462 |
msgctxt "[Admin] Filter edit form"
|
463 |
msgid "Allow multiple selection"
|
464 |
msgstr "Abilita selezione multipla"
|
465 |
|
466 |
-
#: plugin-options/filter-options.php:
|
467 |
msgctxt "[Admin] Filter edit form"
|
468 |
msgid "Enable if the user can select multiple terms when filtering products"
|
469 |
msgstr "Abilita la selezione multipla dei termini per filtrare i prodotti"
|
470 |
|
471 |
-
#: plugin-options/filter-options.php:
|
472 |
msgctxt "[Admin] Filter edit form"
|
473 |
msgid "Multiselect relation"
|
474 |
msgstr "Relazione seleziona multipla"
|
475 |
|
476 |
-
#: plugin-options/filter-options.php:
|
477 |
msgctxt "[Admin] Filter edit form"
|
478 |
msgid "Choose how multiple terms selection should behave"
|
479 |
msgstr "Decidi il comportamento della selezione multipla dei termini"
|
480 |
|
481 |
-
#: includes/class
|
482 |
msgctxt "[Admin] Filter edit form, sorting options"
|
483 |
msgid "Default sorting"
|
484 |
msgstr "Ordinamento predefinito "
|
485 |
|
486 |
-
#: includes/class
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Sort by popularity"
|
489 |
msgstr "Ordina per popolarità"
|
490 |
|
491 |
-
#: includes/class
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by average rating"
|
494 |
msgstr "Ordina per valutazione media"
|
495 |
|
496 |
-
#: includes/class
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by latest"
|
499 |
msgstr "Ordina per più recenti"
|
500 |
|
501 |
-
#: includes/class
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by price: low to high"
|
504 |
msgstr "Ordina per prezzo: crescente"
|
505 |
|
506 |
-
#: includes/class
|
507 |
msgctxt "[Admin] Filter edit form, sorting options"
|
508 |
msgid "Sort by price: high to low"
|
509 |
msgstr "Ordina per prezzo: decrescente"
|
510 |
|
511 |
-
#: includes/class
|
512 |
msgctxt "[Admin] Default filter title"
|
513 |
msgid "New filter"
|
514 |
msgstr "Nuovo filtro"
|
515 |
|
516 |
-
#: includes/class
|
517 |
-
#: includes/filters/class
|
518 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
519 |
msgid "All"
|
520 |
msgstr "Tutte"
|
521 |
|
522 |
-
#: includes/class
|
523 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
524 |
msgid "Search..."
|
525 |
msgstr "Cerca..."
|
526 |
|
527 |
-
#: includes/class
|
528 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
529 |
msgid "No item found"
|
530 |
msgstr "Nessun elemento trovato"
|
531 |
|
532 |
#. translators: 1. Number of items to show.
|
533 |
-
#: includes/class
|
534 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
535 |
msgid "Show %d more"
|
536 |
msgstr "Mostra altri %d"
|
537 |
|
538 |
-
#: includes/class
|
539 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
540 |
msgid "Close"
|
541 |
msgstr "Chiudi"
|
542 |
|
543 |
-
#: includes/class
|
544 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
545 |
msgid "Save"
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: includes/class
|
549 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
550 |
msgid "Show results"
|
551 |
msgstr "Mostra risultati"
|
552 |
|
553 |
-
#: includes/class
|
554 |
msgctxt ""
|
555 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
556 |
"selection"
|
557 |
msgid "Clear"
|
558 |
msgstr "Cancella"
|
559 |
|
560 |
-
#: includes/class
|
561 |
msgctxt ""
|
562 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
563 |
"selection"
|
564 |
msgid "Clear All"
|
565 |
msgstr "Cancella tutti"
|
566 |
|
567 |
-
#: includes/class
|
568 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
569 |
msgid "Default preset"
|
570 |
msgstr "Preset predefinito"
|
571 |
|
572 |
#. translators: 1. Taxonomy name.
|
573 |
-
#: includes/class
|
574 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
575 |
msgid "Filter by %s"
|
576 |
msgstr "Filtra per %s"
|
577 |
|
578 |
-
#: includes/class
|
579 |
#, fuzzy
|
580 |
msgctxt "[Admin] Label in new preset page"
|
581 |
msgid "Default"
|
@@ -591,33 +586,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
591 |
msgid "Enter a name to identify this filter preset"
|
592 |
msgstr "Inserisci un nome per definire questo preset di filtri"
|
593 |
|
594 |
-
#: templates/admin/preset-filters.php:
|
595 |
msgctxt "[Admin] Label in new preset page"
|
596 |
msgid "Filters of this preset"
|
597 |
msgstr "Filtri di questo preset"
|
598 |
|
599 |
-
#: includes/class
|
600 |
-
#: includes/class
|
601 |
msgctxt "[Admin] name of presets custom post type"
|
602 |
msgid "Filter presets"
|
603 |
msgstr "Preset filtri"
|
604 |
|
605 |
-
#: includes/class
|
606 |
msgctxt "[Admin] singular name of presets custom post type"
|
607 |
msgid "Filter preset"
|
608 |
msgstr "Preset filtri"
|
609 |
|
610 |
-
#: includes/class
|
611 |
msgctxt "[Admin] add new filter preset label"
|
612 |
msgid "Add new preset"
|
613 |
msgstr "Aggiungi nuovo preset"
|
614 |
|
615 |
-
#: includes/class
|
616 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
617 |
msgid "Convert widgets in a preset"
|
618 |
msgstr "Converti widget in preset"
|
619 |
|
620 |
-
#: includes/data-stores/class
|
621 |
msgctxt ""
|
622 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
623 |
"not exist"
|
@@ -625,49 +620,49 @@ msgid "Invalid preset."
|
|
625 |
msgstr "Preset non valido."
|
626 |
|
627 |
#. translators: 1. Title of original preset.
|
628 |
-
#: includes/data-stores/class
|
629 |
msgctxt "[ADMIN] Title of the cloned preset"
|
630 |
msgid "%s - Copy"
|
631 |
msgstr "%s - Copia"
|
632 |
|
633 |
-
#: includes/elementor/class
|
634 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
635 |
msgid "YITH AJAX Filters Preset"
|
636 |
msgstr "YITH AJAX Filters Preset"
|
637 |
|
638 |
-
#: includes/elementor/class
|
639 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
640 |
msgid "YITH AJAX Filters Reset Button"
|
641 |
msgstr "YITH AJAX Filters Reset Button"
|
642 |
|
643 |
-
#: includes/elementor/class
|
644 |
-
#: includes/shortcodes/class
|
645 |
msgctxt "[ELEMENTOR] Default preset option"
|
646 |
msgid "Choose an option"
|
647 |
msgstr "Scegli un'opzione"
|
648 |
|
649 |
-
#: includes/elementor/class
|
650 |
msgctxt "[ELEMENTOR] Section title"
|
651 |
msgid "Filters"
|
652 |
msgstr "Filtri"
|
653 |
|
654 |
-
#: includes/elementor/class
|
655 |
msgctxt "[ELEMENTOR] Section title"
|
656 |
msgid "General"
|
657 |
msgstr "Generale"
|
658 |
|
659 |
-
#: includes/elementor/class
|
660 |
msgctxt "[ELEMENTOR] Control label"
|
661 |
msgid "Preset"
|
662 |
msgstr "Preset"
|
663 |
|
664 |
-
#: includes/elementor/class
|
665 |
msgctxt "[ELEMENTOR] Widget description"
|
666 |
msgid ""
|
667 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
668 |
msgstr "Questo widget mostrerà il pulsante \"Filters reset\" dove posizionato"
|
669 |
|
670 |
-
#: includes/elementor/class
|
671 |
msgctxt "[ELEMENTOR] Widget description"
|
672 |
msgid ""
|
673 |
"It will allow users to reset the filer selection; it will only appear when "
|
@@ -676,7 +671,7 @@ msgstr ""
|
|
676 |
"Permetterà ai tuoi utenti di resettare i filtri selezionati. Verrà mostrato "
|
677 |
"solo se c'è almeno un filtro attivo. "
|
678 |
|
679 |
-
#: includes/elementor/class
|
680 |
msgctxt "[ELEMENTOR] Widget description"
|
681 |
msgid ""
|
682 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
@@ -686,17 +681,17 @@ msgstr ""
|
|
686 |
"all'interno della tua pagina se l'opzione \"Posizione pulsante reset\" non "
|
687 |
"funziona per il loop del prodotto"
|
688 |
|
689 |
-
#: includes/functions
|
690 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
691 |
msgid "Color 1"
|
692 |
msgstr "Colore 1"
|
693 |
|
694 |
-
#: includes/functions
|
695 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
696 |
msgid "Color 2"
|
697 |
msgstr "Colore 2"
|
698 |
|
699 |
-
#: includes/functions
|
700 |
msgctxt "[FRONTEND] Star rating template"
|
701 |
msgid "star"
|
702 |
msgid_plural "stars"
|
@@ -704,27 +699,27 @@ msgstr[0] "stella"
|
|
704 |
msgstr[1] "stelle"
|
705 |
|
706 |
#. translators: 1. Rating.
|
707 |
-
#: includes/functions
|
708 |
msgctxt "[FRONTEND] Star rating label"
|
709 |
msgid "Rated %s out of 5"
|
710 |
msgstr "Valutato %s su 5"
|
711 |
|
712 |
-
#: includes/shortcodes/class
|
713 |
msgctxt "[GUTENBERG]: block name"
|
714 |
msgid "YITH AJAX Filters Preset"
|
715 |
msgstr "YITH AJAX Filters Preset"
|
716 |
|
717 |
-
#: includes/shortcodes/class
|
718 |
msgctxt "[GUTENBERG]: block name"
|
719 |
msgid "YITH Reset Filters Button"
|
720 |
msgstr "YITH Reset Filters Button"
|
721 |
|
722 |
-
#: includes/shortcodes/class
|
723 |
msgctxt "[GUTENBERG]: block description"
|
724 |
msgid "Show filters from a preset"
|
725 |
msgstr "Mostra filtri da un preset"
|
726 |
|
727 |
-
#: includes/shortcodes/class
|
728 |
msgctxt "[GUTENBERG]: block description"
|
729 |
msgid ""
|
730 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -738,80 +733,80 @@ msgstr ""
|
|
738 |
"pagina se l'opzione \"Posizione pulsante reset\" non funziona per il loop "
|
739 |
"del prodotto"
|
740 |
|
741 |
-
#: includes/shortcodes/class
|
742 |
msgctxt "[GUTENBERG]: attribute description"
|
743 |
msgid "Preset"
|
744 |
msgstr "Preset"
|
745 |
|
746 |
-
#: includes/tables/class
|
747 |
msgctxt "[Admin] Preset table column header"
|
748 |
msgid "Preset name"
|
749 |
msgstr "Nome preset"
|
750 |
|
751 |
-
#: includes/tables/class
|
752 |
msgctxt "[Admin] Preset table column header"
|
753 |
msgid "Shortcode"
|
754 |
msgstr "Shortcode"
|
755 |
|
756 |
-
#: includes/tables/class
|
757 |
msgctxt "[Admin] Preset edit action label"
|
758 |
msgid "Edit this preset"
|
759 |
msgstr "Modifica questo preset"
|
760 |
|
761 |
-
#: includes/tables/class
|
762 |
msgctxt "[Admin] Preset clone action label"
|
763 |
msgid "Clone this preset"
|
764 |
msgstr "Clona questo preset"
|
765 |
|
766 |
-
#: includes/tables/class
|
767 |
msgctxt "[Admin] Preset delete action label"
|
768 |
msgid "Delete this preset"
|
769 |
msgstr "Elimina questo preset"
|
770 |
|
771 |
-
#: includes/tables/class
|
772 |
msgctxt "[Admin] Preset delete confirm label"
|
773 |
msgid "Are you sure you want to delete this preset?"
|
774 |
msgstr "Sei sicuro di voler eliminare questo preset?"
|
775 |
|
776 |
-
#: includes/tables/class
|
777 |
msgctxt "[Admin] on-off yes"
|
778 |
msgid "YES"
|
779 |
msgstr "SI"
|
780 |
|
781 |
-
#: includes/tables/class
|
782 |
msgctxt "[Admin] on-off no"
|
783 |
msgid "NO"
|
784 |
msgstr "NO"
|
785 |
|
786 |
-
#: includes/tables/class
|
787 |
msgctxt ""
|
788 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
789 |
msgid "filter preset"
|
790 |
msgstr "preset filtri"
|
791 |
|
792 |
-
#: templates/admin/preset-filters.php:
|
793 |
msgctxt ""
|
794 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
795 |
msgid "filter"
|
796 |
msgstr "filtro"
|
797 |
|
798 |
-
#: includes/tables/class
|
799 |
msgctxt "[Admin] New preset button label"
|
800 |
msgid "Create a new preset"
|
801 |
msgstr "Crea nuovo preset"
|
802 |
|
803 |
-
#: includes/widgets/class
|
804 |
msgctxt "[ADMIN] Name of the preset widget"
|
805 |
msgid "YITH AJAX Filters Preset"
|
806 |
msgstr "YITH AJAX Filters Preset"
|
807 |
|
808 |
-
#: includes/widgets/class
|
809 |
msgctxt "[ADMIN] Preset widget options"
|
810 |
msgid "Preset"
|
811 |
msgstr "Preset"
|
812 |
|
813 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
814 |
-
#: includes/widgets/class
|
815 |
msgctxt "[ADMIN] Preset widget options"
|
816 |
msgid ""
|
817 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -820,32 +815,32 @@ msgstr ""
|
|
820 |
"Vai su <a href=\"%s\">Bacheca WP -> YITH -> Ajax Product Filter -> Preset</"
|
821 |
"a> e crea il tuo primo preset"
|
822 |
|
823 |
-
#: includes/widgets/class
|
824 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
825 |
msgid "YITH AJAX Product Filter"
|
826 |
msgstr "YITH AJAX Product Filter"
|
827 |
|
828 |
-
#: includes/widgets/class
|
829 |
#, fuzzy
|
830 |
msgctxt ""
|
831 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
832 |
msgid "AND"
|
833 |
msgstr "E"
|
834 |
|
835 |
-
#: includes/widgets/class
|
836 |
msgctxt "[Plugin Name]"
|
837 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
838 |
msgstr ""
|
839 |
"Resetta tutti i filtri impostati da YITH WooCommerce AJAX Product Filter"
|
840 |
|
841 |
-
#: plugin-options/filter-options.php:
|
842 |
#, fuzzy
|
843 |
msgctxt ""
|
844 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
845 |
msgid "AND - Results need to match all selected terms at the same time"
|
846 |
msgstr "AND - I risultati devono combaciare con tutti i termini selezionati "
|
847 |
|
848 |
-
#: plugin-options/filter-options.php:
|
849 |
#, fuzzy
|
850 |
msgctxt ""
|
851 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -1137,24 +1132,25 @@ msgid "The plugin includes:"
|
|
1137 |
msgstr "Il plugin include:"
|
1138 |
|
1139 |
#: templates/admin/premium.php:271
|
|
|
1140 |
msgctxt "[ADMIN] Premium tab"
|
1141 |
msgid ""
|
1142 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1143 |
-
"view<br/>\
|
1144 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1145 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1146 |
-
"range (based on their budget availability)<br/>\
|
1147 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1148 |
"attributes available in your store, like color and size. For the color "
|
1149 |
"filter, you can either choose square or circular color swatches or use "
|
1150 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1151 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1152 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1153 |
-
"concentrate only on high-rated ones)<br/>\
|
1154 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1155 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1156 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1157 |
-
"filter products and view only those with a discount<br/>\
|
1158 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1159 |
"filter products based on their needs and exclude out-of-stock products from "
|
1160 |
"the list"
|
@@ -1323,73 +1319,73 @@ msgstr ""
|
|
1323 |
"aggiungendo i filtri applicati o di modificarlo attraverso i permalink del "
|
1324 |
"plugin (in questo modo gli URL saranno più brevi e semplici da condividere)"
|
1325 |
|
1326 |
-
#: templates/admin/preset-edit.php:
|
1327 |
msgctxt "[Admin] Back link in new preset page"
|
1328 |
msgid "< back to preset list"
|
1329 |
msgstr "< Torna all'elenco preset"
|
1330 |
|
1331 |
-
#: templates/admin/preset-edit.php:
|
1332 |
msgctxt "[ADMIN] Title for new preset page"
|
1333 |
msgid "Edit filter preset"
|
1334 |
msgstr "Modifica preset filtri"
|
1335 |
|
1336 |
-
#: templates/admin/preset-edit.php:
|
1337 |
msgctxt "[ADMIN] Title for new preset page"
|
1338 |
msgid "Add new filter preset"
|
1339 |
msgstr "Aggiungi nuovo preset filtri"
|
1340 |
|
1341 |
-
#: templates/admin/preset-edit.php:
|
1342 |
msgctxt "[ADMIN] Preset save message"
|
1343 |
msgid "Preset saved correctly"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
-
#: templates/admin/preset-edit.php:
|
1347 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1348 |
msgid "Save preset"
|
1349 |
msgstr "Salva preset"
|
1350 |
|
1351 |
-
#: templates/admin/preset-empty-content.php:
|
1352 |
msgctxt "Alt text for empty preset image"
|
1353 |
msgid "Empty preset"
|
1354 |
msgstr "Preset vuoto"
|
1355 |
|
1356 |
#. translators: 1. Missing item name.
|
1357 |
-
#: templates/admin/preset-empty-content.php:
|
1358 |
msgctxt "[Admin] Preset table empty message"
|
1359 |
msgid "You don't have any %s yet."
|
1360 |
msgstr "Non hai ancora nessun %s."
|
1361 |
|
1362 |
-
#: templates/admin/preset-filter-term.php:
|
1363 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1364 |
msgid "Label"
|
1365 |
msgstr "Etichetta"
|
1366 |
|
1367 |
-
#: templates/admin/preset-filter-term.php:
|
1368 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1369 |
msgid "Tooltip"
|
1370 |
msgstr "Tooltip"
|
1371 |
|
1372 |
-
#: templates/admin/preset-filter-term.php:
|
1373 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1374 |
msgid "Color"
|
1375 |
msgstr "Colore"
|
1376 |
|
1377 |
-
#: templates/admin/preset-filter.php:
|
1378 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1379 |
msgid "Save Filter"
|
1380 |
msgstr "Salva filtro "
|
1381 |
|
1382 |
-
#: templates/admin/preset-filter.php:
|
1383 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1384 |
msgid "Delete Filter"
|
1385 |
msgstr "Elimina filtro"
|
1386 |
|
1387 |
-
#: templates/admin/preset-filters.php:
|
1388 |
msgctxt "[Admin] New filter button label"
|
1389 |
msgid "Add a new filter"
|
1390 |
msgstr "Aggiungi nuovo filtro"
|
1391 |
|
1392 |
-
#: templates/admin/preset-filters.php:
|
1393 |
msgctxt "[Admin] Add new filter in new preset page"
|
1394 |
msgid "+ Add filter"
|
1395 |
msgstr "+ Aggiungi filtro"
|
@@ -1401,12 +1397,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1401 |
msgid "See %d more filters"
|
1402 |
msgstr "Prima dei filtri"
|
1403 |
|
1404 |
-
#: templates/admin/upgrade-note-modal.php:
|
1405 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1406 |
msgid "Use the new filter preset feature for your filters"
|
1407 |
msgstr "Usa la nuova funzionalità preset per i tuoi filtri"
|
1408 |
|
1409 |
-
#: templates/admin/upgrade-note-modal.php:
|
1410 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1411 |
msgid ""
|
1412 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1420,7 +1416,7 @@ msgstr ""
|
|
1420 |
"Gutenberg o il widget di Elementor."
|
1421 |
|
1422 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1423 |
-
#: templates/admin/upgrade-note-modal.php:
|
1424 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1425 |
msgid ""
|
1426 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1431,7 +1427,7 @@ msgstr ""
|
|
1431 |
"funzionalità. "
|
1432 |
|
1433 |
#. translators: 1. Url to docs.
|
1434 |
-
#: templates/admin/upgrade-note-modal.php:
|
1435 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1436 |
msgid ""
|
1437 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
@@ -1440,7 +1436,7 @@ msgstr ""
|
|
1440 |
"Ti consigliamo di <a href=\"%1$s\">leggere la documentazione</a> per capire "
|
1441 |
"come usare questa nuova funzionalità. "
|
1442 |
|
1443 |
-
#: templates/admin/upgrade-note-modal.php:
|
1444 |
#, fuzzy
|
1445 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1446 |
msgid ""
|
@@ -1454,7 +1450,7 @@ msgstr ""
|
|
1454 |
"nella tabella dei preset filtri.<br/><b>Non preoccuparti: non perderai "
|
1455 |
"nessun dato con questa procedura.</b>"
|
1456 |
|
1457 |
-
#: templates/admin/upgrade-note-modal.php:
|
1458 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1459 |
msgid ""
|
1460 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1462,21 +1458,25 @@ msgid ""
|
|
1462 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1463 |
msgstr ""
|
1464 |
|
1465 |
-
#: templates/admin/upgrade-note-modal.php:
|
1466 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1467 |
msgid "Convert your widgets in a preset now"
|
1468 |
msgstr "Converti subito i tuoi widget in preset"
|
1469 |
|
1470 |
-
#: templates/admin/upgrade-note-modal.php:
|
1471 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1472 |
msgid "No thanks"
|
1473 |
msgstr "No grazie"
|
1474 |
|
1475 |
-
#: templates/filters/global/reset-filters.php:
|
1476 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1477 |
msgid "Reset filters"
|
1478 |
msgstr "Resetta filtri"
|
1479 |
|
|
|
|
|
|
|
|
|
1480 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1481 |
#~ msgid "All"
|
1482 |
#~ msgstr "Tutti"
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2021-03-03 10:36+0100\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
16 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
"X-Generator: Poedit 2.4.2\n"
|
18 |
|
19 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
20 |
msgid "Draft Preset"
|
21 |
msgstr "Preset bozza"
|
22 |
|
23 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
24 |
+
#: includes/functions-yith-wcan.php:132
|
25 |
msgid "Term"
|
26 |
msgstr "Proprietà"
|
27 |
|
28 |
+
#: includes/functions-yith-wcan.php:98
|
29 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
30 |
msgid "Color"
|
31 |
msgstr "Colore"
|
32 |
|
33 |
+
#: includes/functions-yith-wcan.php:132
|
34 |
msgid "Labels"
|
35 |
msgstr "Etichette "
|
36 |
|
37 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
38 |
msgid "Filter the list of products without reloading the page"
|
39 |
msgstr "Filtra la lista dei prodotti senza dover ricaricare la pagina"
|
40 |
|
41 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
42 |
msgid "Filters:"
|
43 |
msgstr "Filtri:"
|
44 |
|
45 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
46 |
msgid "List"
|
47 |
msgstr "Lista"
|
48 |
|
49 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
50 |
msgid "Label"
|
51 |
msgstr "Etichetta"
|
52 |
|
53 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
54 |
msgid "Dropdown"
|
55 |
msgstr "Dropdown"
|
56 |
|
57 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
58 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
59 |
msgid "Title"
|
60 |
msgstr "Titolo"
|
61 |
|
62 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
63 |
msgid "Type:"
|
64 |
msgstr "Tipo:"
|
65 |
|
66 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
67 |
msgid "Query Type:"
|
68 |
msgstr "Tipo Query:"
|
69 |
|
70 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
71 |
msgid "OR"
|
72 |
msgstr "O"
|
73 |
|
74 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
75 |
msgid "Attribute:"
|
76 |
msgstr "Attributo:"
|
77 |
|
78 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
79 |
msgid "Display (default All):"
|
80 |
msgstr "Mostra (default Tutti)"
|
81 |
|
82 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
83 |
msgid "All (no hierarchical)"
|
84 |
msgstr "Tutti (non gerarchico)"
|
85 |
|
86 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
87 |
msgid "All (hierarchical)"
|
88 |
msgstr "Tutti (gerarchico)"
|
89 |
|
90 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
91 |
msgid "Only Parent"
|
92 |
msgstr "Solo Principali"
|
93 |
|
94 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
95 |
msgid "CSS custom class"
|
96 |
msgstr "Classe CSS custom"
|
97 |
|
98 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
99 |
msgid "YITH AJAX Reset Filter"
|
100 |
msgstr "YITH AJAX Reset Filter"
|
101 |
|
102 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
103 |
msgid "Reset All Filters"
|
104 |
msgstr "Resetta tutti i filtri"
|
105 |
|
106 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
107 |
msgid "Button Label"
|
108 |
msgstr "Etichetta Pulsante"
|
109 |
|
141 |
"yithemes.com/\" target=\"_blank\">Scopri altri plugin per il tuo e-commerce "
|
142 |
"su <strong>YITH</strong></a>"
|
143 |
|
144 |
+
#: includes/class-yith-wcan-admin.php:107
|
145 |
msgctxt "[Admin] Copy confirmation message"
|
146 |
msgid "Content copied to your clipboard"
|
147 |
msgstr "Contenuto copiato negli appunti"
|
148 |
|
149 |
+
#: includes/class-yith-wcan-admin.php:108
|
150 |
msgctxt "[Admin] Confirm filter delete message"
|
151 |
msgid "Are you sure you want to delete this item?"
|
152 |
msgstr "Sei sicuro di voler eliminare questo termine?"
|
153 |
|
154 |
#. translators: 1. Number of items that will be added.
|
155 |
+
#: includes/class-yith-wcan-admin.php:110
|
156 |
msgctxt "[Admin] Confirm add all terms message"
|
157 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
158 |
msgstr "Sei sicuro di voler procedere? Questa azione aggiungerà %s elementi"
|
159 |
|
160 |
+
#: includes/class-yith-wcan-admin.php:111
|
161 |
msgctxt "[Admin] Error message"
|
162 |
msgid "\"Filter title\" is a required field"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
166 |
msgctxt "[Admin] Message shown when filter has empty title"
|
167 |
msgid "< no title >"
|
168 |
msgstr "< nessun titolo >"
|
169 |
|
170 |
+
#: includes/class-yith-wcan-admin.php:115
|
171 |
msgctxt "[Admin] Media library title, when selecting images"
|
172 |
msgid "Select media you want to use"
|
173 |
msgstr "Seleziona i media da usare"
|
174 |
|
175 |
+
#: includes/class-yith-wcan-admin.php:116
|
176 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
177 |
msgid "Use this media"
|
178 |
msgstr "Usa questo media"
|
179 |
|
180 |
+
#: includes/class-yith-wcan-admin.php:184
|
181 |
msgctxt "[Admin] tab name"
|
182 |
msgid "Filter presets"
|
183 |
msgstr "Preset filtri"
|
184 |
|
185 |
+
#: includes/class-yith-wcan-admin.php:185
|
186 |
msgctxt "[Admin] tab name"
|
187 |
msgid "General settings"
|
188 |
msgstr "Impostazioni generali"
|
189 |
|
190 |
+
#: includes/class-yith-wcan-admin.php:186
|
191 |
msgctxt "[Admin] tab name"
|
192 |
msgid "SEO"
|
193 |
msgstr "SEO"
|
194 |
|
195 |
+
#: includes/class-yith-wcan-admin.php:187
|
196 |
msgctxt "[Admin] tab name"
|
197 |
msgid "Premium Version"
|
198 |
msgstr "Versione Premium"
|
199 |
|
200 |
+
#: includes/class-yith-wcan-admin.php:191
|
201 |
msgctxt "[Admin] tab name"
|
202 |
msgid "Legacy"
|
203 |
msgstr "Legacy"
|
204 |
|
205 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
206 |
msgctxt "[Admin] Plugin description"
|
207 |
msgid ""
|
208 |
"It allows your users to find the product they are looking for as quickly as "
|
211 |
"Permette ai tuoi utenti di trovare il prodotto che stanno cercando il più "
|
212 |
"velocemente possibile."
|
213 |
|
214 |
+
#: includes/class-yith-wcan-admin.php:211
|
215 |
msgctxt "[HELP TAB] Video title"
|
216 |
msgid ""
|
217 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
218 |
"the shop page:</b>"
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: includes/class-yith-wcan-admin.php:329
|
222 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
223 |
msgid "item"
|
224 |
msgstr "elemento"
|
225 |
|
226 |
+
#: includes/class-yith-wcan-admin.php:330
|
227 |
msgctxt "[Admin] Preset table empty message second line"
|
228 |
msgid "But don't worry, here you can create your first one!"
|
229 |
msgstr "Ma non preoccuparti. Puoi iniziare a crearli qui!"
|
230 |
|
231 |
+
#: includes/class-yith-wcan-admin.php:480
|
232 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
233 |
msgid "Clear Product Filter transients"
|
234 |
msgstr "Cancella i transient Product Filter"
|
235 |
|
236 |
+
#: includes/class-yith-wcan-admin.php:486
|
237 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
238 |
msgid "Run filter widgets upgrade"
|
239 |
msgstr "Avvia l'upgrade dei widget dei filtri"
|
240 |
|
241 |
+
#: includes/class-yith-wcan-admin.php:481
|
242 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
243 |
msgid "Clear"
|
244 |
msgstr "Cancella"
|
245 |
|
246 |
+
#: includes/class-yith-wcan-admin.php:487
|
247 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
248 |
msgid "Run"
|
249 |
msgstr "Avvia"
|
250 |
|
251 |
+
#: includes/class-yith-wcan-admin.php:482
|
252 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
253 |
msgid ""
|
254 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
259 |
"Product Filter. Utile se hai cambiato la configurazione del prodotto e i "
|
260 |
"filtri non mostrano i risultati previsti. "
|
261 |
|
262 |
+
#: includes/class-yith-wcan-admin.php:488
|
263 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
264 |
msgid ""
|
265 |
"This will create a preset for any sidebar of your shop containing filter "
|
268 |
"Questo creerà un preset con i widget dei filtri per qualsiasi barra laterale "
|
269 |
"del tuo shop. Il preset sarà configurato in base alle specifiche dei widget"
|
270 |
|
271 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
272 |
msgctxt "[Admin] Filter edit form"
|
273 |
msgid "Taxonomy"
|
274 |
msgstr "Tassonomia"
|
275 |
|
276 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
277 |
msgctxt "[Admin] Filter edit form"
|
278 |
msgid "Checkbox"
|
279 |
msgstr "Checkbox"
|
280 |
|
281 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
282 |
msgctxt "[Admin] Filter edit form"
|
283 |
msgid "Select"
|
284 |
msgstr "Select"
|
285 |
|
286 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
287 |
msgctxt "[Admin] Filter edit form"
|
288 |
msgid "Text"
|
289 |
msgstr "Testo"
|
290 |
|
291 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
292 |
msgctxt "[Admin] Filter edit form"
|
293 |
msgid "Color Swatches"
|
294 |
msgstr "Campioni colore"
|
295 |
|
296 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
297 |
msgctxt "[Admin] Filter edit form"
|
298 |
msgid "Label"
|
299 |
msgstr "Etichetta"
|
308 |
msgid "Enter a name to identify this filter"
|
309 |
msgstr "Inserisci un nome per definire questo filtro"
|
310 |
|
311 |
+
#: plugin-options/filter-options.php:40
|
312 |
msgctxt "[Admin] Filter edit form"
|
313 |
msgid "Filter for"
|
314 |
msgstr "Filtro per"
|
315 |
|
316 |
+
#: plugin-options/filter-options.php:44
|
317 |
msgctxt "[Admin] Filter edit form"
|
318 |
msgid "Select the parameters you wish to filter for"
|
319 |
msgstr "Seleziona il parametro per il filtro"
|
320 |
|
321 |
+
#: plugin-options/filter-options.php:49
|
322 |
msgctxt "[Admin] Filter edit form"
|
323 |
msgid "Choose taxonomy"
|
324 |
msgstr "Scegli tassonomia"
|
325 |
|
326 |
+
#: plugin-options/filter-options.php:53
|
327 |
msgctxt "[Admin] Filter edit form"
|
328 |
msgid "Select which taxonomy to use for this filter"
|
329 |
msgstr "Seleziona quale tassonomia usare per questo filtro"
|
330 |
|
331 |
+
#: plugin-options/filter-options.php:58
|
332 |
msgctxt "[Admin] Filter edit form"
|
333 |
msgid "Auto-populate with all terms"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: plugin-options/filter-options.php:60
|
337 |
msgctxt "[Admin] Filter edit form"
|
338 |
msgid ""
|
339 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
342 |
"well.</span>"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: plugin-options/filter-options.php:69
|
346 |
msgctxt "[Admin] Filter edit form"
|
347 |
msgid "Choose terms"
|
348 |
msgstr "Scegli termini"
|
349 |
|
350 |
+
#: plugin-options/filter-options.php:74
|
351 |
msgctxt "[Admin] Filter edit form"
|
352 |
msgid "Select which terms to use for filtering"
|
353 |
msgstr "Seleziona quali termini usare per i filtri"
|
354 |
|
355 |
+
#: plugin-options/filter-options.php:78
|
356 |
msgctxt "[Admin] Filter edit form"
|
357 |
msgid "Filter type"
|
358 |
msgstr "Tipo filtro"
|
359 |
|
360 |
+
#: plugin-options/filter-options.php:82
|
361 |
msgctxt "[Admin] Filter edit form"
|
362 |
msgid "Select the filter type for this filter"
|
363 |
msgstr "Seleziona il tipo di filtro"
|
364 |
|
365 |
+
#: plugin-options/filter-options.php:86
|
366 |
#, fuzzy
|
367 |
msgctxt "[Admin] Filter edit form"
|
368 |
msgid "Labels"
|
369 |
msgstr "Etichette "
|
370 |
|
371 |
+
#: plugin-options/filter-options.php:89
|
372 |
#, fuzzy
|
373 |
msgctxt "[Admin] Filter edit form"
|
374 |
msgid "Show below"
|
375 |
msgstr "Mostra risultati"
|
376 |
|
377 |
+
#: plugin-options/filter-options.php:90
|
378 |
#, fuzzy
|
379 |
msgctxt "[Admin] Filter edit form"
|
380 |
msgid "Show on the right"
|
381 |
msgstr "Mostra conteggio elementi"
|
382 |
|
383 |
+
#: plugin-options/filter-options.php:91
|
384 |
msgctxt "[Admin] Filter edit form"
|
385 |
msgid "Hide"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: plugin-options/filter-options.php:93
|
389 |
#, fuzzy
|
390 |
msgctxt "[Admin] Filter edit form"
|
391 |
msgid "Choose if and where to show the label inside your filter"
|
393 |
"Decidi se e dove mostrare il pulsante \"Resetta filtri\" e i filtri "
|
394 |
"selezionati"
|
395 |
|
396 |
+
#: plugin-options/filter-options.php:97
|
397 |
msgctxt "[Admin] Filter edit form"
|
398 |
msgid "Columns number"
|
399 |
msgstr "Numero colonne"
|
400 |
|
401 |
+
#: plugin-options/filter-options.php:102
|
402 |
msgctxt "[Admin] Filter edit form"
|
403 |
msgid "Set the number of items per row you want to show for this design"
|
404 |
msgstr "Scegli il numero di elementi per riga da mostrare "
|
405 |
|
406 |
+
#: plugin-options/filter-options.php:106
|
407 |
msgctxt "[Admin] Filter edit form"
|
408 |
msgid "Customize terms"
|
409 |
msgstr "Personalizza termini"
|
410 |
|
411 |
+
#: plugin-options/filter-options.php:109
|
412 |
msgctxt "[Admin] Filter edit form"
|
413 |
msgid ""
|
414 |
"Configure your terms individually; system will otherwise use default labels/"
|
422 |
"this option and use the boxes below</span>"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: plugin-options/filter-options.php:119
|
426 |
#, fuzzy
|
427 |
msgctxt "[Admin] Filter edit form"
|
428 |
msgid "Terms options"
|
429 |
msgstr "Opzioni ordinamento"
|
430 |
|
431 |
+
#: plugin-options/filter-options.php:125
|
432 |
msgctxt "[Admin] Filter edit form"
|
433 |
msgid "Show hierarchy"
|
434 |
msgstr "Mostra gerarchia"
|
435 |
|
436 |
+
#: plugin-options/filter-options.php:128
|
437 |
msgctxt "[Admin] Filter edit form"
|
438 |
msgid "No, show all terms in same level"
|
439 |
msgstr "No, mostra tutti i termini nello stesso livello"
|
440 |
|
441 |
+
#: plugin-options/filter-options.php:129
|
442 |
msgctxt "[Admin] Filter edit form"
|
443 |
msgid "No, show only parent terms"
|
444 |
msgstr "No, mostra solo termini genitore"
|
445 |
|
446 |
+
#: plugin-options/filter-options.php:130
|
447 |
msgctxt "[Admin] Filter edit form"
|
448 |
msgid "Yes"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: plugin-options/filter-options.php:132
|
452 |
msgctxt "[Admin] Filter edit form"
|
453 |
msgid "Choose how to show terms hierarchy"
|
454 |
msgstr "Decidi come mostrare la gerarchia dei termini"
|
455 |
|
456 |
+
#: plugin-options/filter-options.php:136
|
457 |
msgctxt "[Admin] Filter edit form"
|
458 |
msgid "Allow multiple selection"
|
459 |
msgstr "Abilita selezione multipla"
|
460 |
|
461 |
+
#: plugin-options/filter-options.php:138
|
462 |
msgctxt "[Admin] Filter edit form"
|
463 |
msgid "Enable if the user can select multiple terms when filtering products"
|
464 |
msgstr "Abilita la selezione multipla dei termini per filtrare i prodotti"
|
465 |
|
466 |
+
#: plugin-options/filter-options.php:142
|
467 |
msgctxt "[Admin] Filter edit form"
|
468 |
msgid "Multiselect relation"
|
469 |
msgstr "Relazione seleziona multipla"
|
470 |
|
471 |
+
#: plugin-options/filter-options.php:148
|
472 |
msgctxt "[Admin] Filter edit form"
|
473 |
msgid "Choose how multiple terms selection should behave"
|
474 |
msgstr "Decidi il comportamento della selezione multipla dei termini"
|
475 |
|
476 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
477 |
msgctxt "[Admin] Filter edit form, sorting options"
|
478 |
msgid "Default sorting"
|
479 |
msgstr "Ordinamento predefinito "
|
480 |
|
481 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
482 |
msgctxt "[Admin] Filter edit form, sorting options"
|
483 |
msgid "Sort by popularity"
|
484 |
msgstr "Ordina per popolarità"
|
485 |
|
486 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Sort by average rating"
|
489 |
msgstr "Ordina per valutazione media"
|
490 |
|
491 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by latest"
|
494 |
msgstr "Ordina per più recenti"
|
495 |
|
496 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by price: low to high"
|
499 |
msgstr "Ordina per prezzo: crescente"
|
500 |
|
501 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by price: high to low"
|
504 |
msgstr "Ordina per prezzo: decrescente"
|
505 |
|
506 |
+
#: includes/class-yith-wcan-filter.php:116
|
507 |
msgctxt "[Admin] Default filter title"
|
508 |
msgid "New filter"
|
509 |
msgstr "Nuovo filtro"
|
510 |
|
511 |
+
#: includes/class-yith-wcan-frontend.php:591
|
512 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
513 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
514 |
msgid "All"
|
515 |
msgstr "Tutte"
|
516 |
|
517 |
+
#: includes/class-yith-wcan-frontend.php:592
|
518 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
519 |
msgid "Search..."
|
520 |
msgstr "Cerca..."
|
521 |
|
522 |
+
#: includes/class-yith-wcan-frontend.php:593
|
523 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
524 |
msgid "No item found"
|
525 |
msgstr "Nessun elemento trovato"
|
526 |
|
527 |
#. translators: 1. Number of items to show.
|
528 |
+
#: includes/class-yith-wcan-frontend.php:595
|
529 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
530 |
msgid "Show %d more"
|
531 |
msgstr "Mostra altri %d"
|
532 |
|
533 |
+
#: includes/class-yith-wcan-frontend.php:596
|
534 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
535 |
msgid "Close"
|
536 |
msgstr "Chiudi"
|
537 |
|
538 |
+
#: includes/class-yith-wcan-frontend.php:597
|
539 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
540 |
msgid "Save"
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: includes/class-yith-wcan-frontend.php:598
|
544 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
545 |
msgid "Show results"
|
546 |
msgstr "Mostra risultati"
|
547 |
|
548 |
+
#: includes/class-yith-wcan-frontend.php:599
|
549 |
msgctxt ""
|
550 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
551 |
"selection"
|
552 |
msgid "Clear"
|
553 |
msgstr "Cancella"
|
554 |
|
555 |
+
#: includes/class-yith-wcan-frontend.php:600
|
556 |
msgctxt ""
|
557 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
558 |
"selection"
|
559 |
msgid "Clear All"
|
560 |
msgstr "Cancella tutti"
|
561 |
|
562 |
+
#: includes/class-yith-wcan-install.php:95
|
563 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
564 |
msgid "Default preset"
|
565 |
msgstr "Preset predefinito"
|
566 |
|
567 |
#. translators: 1. Taxonomy name.
|
568 |
+
#: includes/class-yith-wcan-install.php:285
|
569 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
570 |
msgid "Filter by %s"
|
571 |
msgstr "Filtra per %s"
|
572 |
|
573 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
574 |
#, fuzzy
|
575 |
msgctxt "[Admin] Label in new preset page"
|
576 |
msgid "Default"
|
586 |
msgid "Enter a name to identify this filter preset"
|
587 |
msgstr "Inserisci un nome per definire questo preset di filtri"
|
588 |
|
589 |
+
#: templates/admin/preset-filters.php:22
|
590 |
msgctxt "[Admin] Label in new preset page"
|
591 |
msgid "Filters of this preset"
|
592 |
msgstr "Filtri di questo preset"
|
593 |
|
594 |
+
#: includes/class-yith-wcan-presets.php:95
|
595 |
+
#: includes/class-yith-wcan-presets.php:100
|
596 |
msgctxt "[Admin] name of presets custom post type"
|
597 |
msgid "Filter presets"
|
598 |
msgstr "Preset filtri"
|
599 |
|
600 |
+
#: includes/class-yith-wcan-presets.php:96
|
601 |
msgctxt "[Admin] singular name of presets custom post type"
|
602 |
msgid "Filter preset"
|
603 |
msgstr "Preset filtri"
|
604 |
|
605 |
+
#: includes/class-yith-wcan-presets.php:97
|
606 |
msgctxt "[Admin] add new filter preset label"
|
607 |
msgid "Add new preset"
|
608 |
msgstr "Aggiungi nuovo preset"
|
609 |
|
610 |
+
#: includes/class-yith-wcan-presets.php:139
|
611 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
612 |
msgid "Convert widgets in a preset"
|
613 |
msgstr "Converti widget in preset"
|
614 |
|
615 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
616 |
msgctxt ""
|
617 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
618 |
"not exist"
|
620 |
msgstr "Preset non valido."
|
621 |
|
622 |
#. translators: 1. Title of original preset.
|
623 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
624 |
msgctxt "[ADMIN] Title of the cloned preset"
|
625 |
msgid "%s - Copy"
|
626 |
msgstr "%s - Copia"
|
627 |
|
628 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
629 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
630 |
msgid "YITH AJAX Filters Preset"
|
631 |
msgstr "YITH AJAX Filters Preset"
|
632 |
|
633 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
634 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
635 |
msgid "YITH AJAX Filters Reset Button"
|
636 |
msgstr "YITH AJAX Filters Reset Button"
|
637 |
|
638 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
639 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
640 |
msgctxt "[ELEMENTOR] Default preset option"
|
641 |
msgid "Choose an option"
|
642 |
msgstr "Scegli un'opzione"
|
643 |
|
644 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
645 |
msgctxt "[ELEMENTOR] Section title"
|
646 |
msgid "Filters"
|
647 |
msgstr "Filtri"
|
648 |
|
649 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
650 |
msgctxt "[ELEMENTOR] Section title"
|
651 |
msgid "General"
|
652 |
msgstr "Generale"
|
653 |
|
654 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
655 |
msgctxt "[ELEMENTOR] Control label"
|
656 |
msgid "Preset"
|
657 |
msgstr "Preset"
|
658 |
|
659 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
660 |
msgctxt "[ELEMENTOR] Widget description"
|
661 |
msgid ""
|
662 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
663 |
msgstr "Questo widget mostrerà il pulsante \"Filters reset\" dove posizionato"
|
664 |
|
665 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
666 |
msgctxt "[ELEMENTOR] Widget description"
|
667 |
msgid ""
|
668 |
"It will allow users to reset the filer selection; it will only appear when "
|
671 |
"Permetterà ai tuoi utenti di resettare i filtri selezionati. Verrà mostrato "
|
672 |
"solo se c'è almeno un filtro attivo. "
|
673 |
|
674 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
675 |
msgctxt "[ELEMENTOR] Widget description"
|
676 |
msgid ""
|
677 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
681 |
"all'interno della tua pagina se l'opzione \"Posizione pulsante reset\" non "
|
682 |
"funziona per il loop del prodotto"
|
683 |
|
684 |
+
#: includes/functions-yith-wcan.php:112
|
685 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
686 |
msgid "Color 1"
|
687 |
msgstr "Colore 1"
|
688 |
|
689 |
+
#: includes/functions-yith-wcan.php:112
|
690 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
691 |
msgid "Color 2"
|
692 |
msgstr "Colore 2"
|
693 |
|
694 |
+
#: includes/functions-yith-wcan.php:1026
|
695 |
msgctxt "[FRONTEND] Star rating template"
|
696 |
msgid "star"
|
697 |
msgid_plural "stars"
|
699 |
msgstr[1] "stelle"
|
700 |
|
701 |
#. translators: 1. Rating.
|
702 |
+
#: includes/functions-yith-wcan.php:1041
|
703 |
msgctxt "[FRONTEND] Star rating label"
|
704 |
msgid "Rated %s out of 5"
|
705 |
msgstr "Valutato %s su 5"
|
706 |
|
707 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
708 |
msgctxt "[GUTENBERG]: block name"
|
709 |
msgid "YITH AJAX Filters Preset"
|
710 |
msgstr "YITH AJAX Filters Preset"
|
711 |
|
712 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
713 |
msgctxt "[GUTENBERG]: block name"
|
714 |
msgid "YITH Reset Filters Button"
|
715 |
msgstr "YITH Reset Filters Button"
|
716 |
|
717 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
718 |
msgctxt "[GUTENBERG]: block description"
|
719 |
msgid "Show filters from a preset"
|
720 |
msgstr "Mostra filtri da un preset"
|
721 |
|
722 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
723 |
msgctxt "[GUTENBERG]: block description"
|
724 |
msgid ""
|
725 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
733 |
"pagina se l'opzione \"Posizione pulsante reset\" non funziona per il loop "
|
734 |
"del prodotto"
|
735 |
|
736 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
737 |
msgctxt "[GUTENBERG]: attribute description"
|
738 |
msgid "Preset"
|
739 |
msgstr "Preset"
|
740 |
|
741 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
742 |
msgctxt "[Admin] Preset table column header"
|
743 |
msgid "Preset name"
|
744 |
msgstr "Nome preset"
|
745 |
|
746 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
747 |
msgctxt "[Admin] Preset table column header"
|
748 |
msgid "Shortcode"
|
749 |
msgstr "Shortcode"
|
750 |
|
751 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
752 |
msgctxt "[Admin] Preset edit action label"
|
753 |
msgid "Edit this preset"
|
754 |
msgstr "Modifica questo preset"
|
755 |
|
756 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
757 |
msgctxt "[Admin] Preset clone action label"
|
758 |
msgid "Clone this preset"
|
759 |
msgstr "Clona questo preset"
|
760 |
|
761 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
762 |
msgctxt "[Admin] Preset delete action label"
|
763 |
msgid "Delete this preset"
|
764 |
msgstr "Elimina questo preset"
|
765 |
|
766 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
767 |
msgctxt "[Admin] Preset delete confirm label"
|
768 |
msgid "Are you sure you want to delete this preset?"
|
769 |
msgstr "Sei sicuro di voler eliminare questo preset?"
|
770 |
|
771 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
772 |
msgctxt "[Admin] on-off yes"
|
773 |
msgid "YES"
|
774 |
msgstr "SI"
|
775 |
|
776 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
777 |
msgctxt "[Admin] on-off no"
|
778 |
msgid "NO"
|
779 |
msgstr "NO"
|
780 |
|
781 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
782 |
msgctxt ""
|
783 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
784 |
msgid "filter preset"
|
785 |
msgstr "preset filtri"
|
786 |
|
787 |
+
#: templates/admin/preset-filters.php:31
|
788 |
msgctxt ""
|
789 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
790 |
msgid "filter"
|
791 |
msgstr "filtro"
|
792 |
|
793 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
794 |
msgctxt "[Admin] New preset button label"
|
795 |
msgid "Create a new preset"
|
796 |
msgstr "Crea nuovo preset"
|
797 |
|
798 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
799 |
msgctxt "[ADMIN] Name of the preset widget"
|
800 |
msgid "YITH AJAX Filters Preset"
|
801 |
msgstr "YITH AJAX Filters Preset"
|
802 |
|
803 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
804 |
msgctxt "[ADMIN] Preset widget options"
|
805 |
msgid "Preset"
|
806 |
msgstr "Preset"
|
807 |
|
808 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
809 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
810 |
msgctxt "[ADMIN] Preset widget options"
|
811 |
msgid ""
|
812 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
815 |
"Vai su <a href=\"%s\">Bacheca WP -> YITH -> Ajax Product Filter -> Preset</"
|
816 |
"a> e crea il tuo primo preset"
|
817 |
|
818 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
819 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
820 |
msgid "YITH AJAX Product Filter"
|
821 |
msgstr "YITH AJAX Product Filter"
|
822 |
|
823 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
824 |
#, fuzzy
|
825 |
msgctxt ""
|
826 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
827 |
msgid "AND"
|
828 |
msgstr "E"
|
829 |
|
830 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
831 |
msgctxt "[Plugin Name]"
|
832 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
833 |
msgstr ""
|
834 |
"Resetta tutti i filtri impostati da YITH WooCommerce AJAX Product Filter"
|
835 |
|
836 |
+
#: plugin-options/filter-options.php:145
|
837 |
#, fuzzy
|
838 |
msgctxt ""
|
839 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
840 |
msgid "AND - Results need to match all selected terms at the same time"
|
841 |
msgstr "AND - I risultati devono combaciare con tutti i termini selezionati "
|
842 |
|
843 |
+
#: plugin-options/filter-options.php:146
|
844 |
#, fuzzy
|
845 |
msgctxt ""
|
846 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
1132 |
msgstr "Il plugin include:"
|
1133 |
|
1134 |
#: templates/admin/premium.php:271
|
1135 |
+
#, fuzzy
|
1136 |
msgctxt "[ADMIN] Premium tab"
|
1137 |
msgid ""
|
1138 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1139 |
+
"view<br/>\n"
|
1140 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1141 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1142 |
+
"range (based on their budget availability)<br/>\n"
|
1143 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1144 |
"attributes available in your store, like color and size. For the color "
|
1145 |
"filter, you can either choose square or circular color swatches or use "
|
1146 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1147 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1148 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1149 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1150 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1151 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1152 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1153 |
+
"filter products and view only those with a discount<br/>\n"
|
1154 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1155 |
"filter products based on their needs and exclude out-of-stock products from "
|
1156 |
"the list"
|
1319 |
"aggiungendo i filtri applicati o di modificarlo attraverso i permalink del "
|
1320 |
"plugin (in questo modo gli URL saranno più brevi e semplici da condividere)"
|
1321 |
|
1322 |
+
#: templates/admin/preset-edit.php:31
|
1323 |
msgctxt "[Admin] Back link in new preset page"
|
1324 |
msgid "< back to preset list"
|
1325 |
msgstr "< Torna all'elenco preset"
|
1326 |
|
1327 |
+
#: templates/admin/preset-edit.php:38
|
1328 |
msgctxt "[ADMIN] Title for new preset page"
|
1329 |
msgid "Edit filter preset"
|
1330 |
msgstr "Modifica preset filtri"
|
1331 |
|
1332 |
+
#: templates/admin/preset-edit.php:40
|
1333 |
msgctxt "[ADMIN] Title for new preset page"
|
1334 |
msgid "Add new filter preset"
|
1335 |
msgstr "Aggiungi nuovo preset filtri"
|
1336 |
|
1337 |
+
#: templates/admin/preset-edit.php:47
|
1338 |
msgctxt "[ADMIN] Preset save message"
|
1339 |
msgid "Preset saved correctly"
|
1340 |
msgstr ""
|
1341 |
|
1342 |
+
#: templates/admin/preset-edit.php:93
|
1343 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1344 |
msgid "Save preset"
|
1345 |
msgstr "Salva preset"
|
1346 |
|
1347 |
+
#: templates/admin/preset-empty-content.php:29
|
1348 |
msgctxt "Alt text for empty preset image"
|
1349 |
msgid "Empty preset"
|
1350 |
msgstr "Preset vuoto"
|
1351 |
|
1352 |
#. translators: 1. Missing item name.
|
1353 |
+
#: templates/admin/preset-empty-content.php:35
|
1354 |
msgctxt "[Admin] Preset table empty message"
|
1355 |
msgid "You don't have any %s yet."
|
1356 |
msgstr "Non hai ancora nessun %s."
|
1357 |
|
1358 |
+
#: templates/admin/preset-filter-term.php:30
|
1359 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1360 |
msgid "Label"
|
1361 |
msgstr "Etichetta"
|
1362 |
|
1363 |
+
#: templates/admin/preset-filter-term.php:35
|
1364 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1365 |
msgid "Tooltip"
|
1366 |
msgstr "Tooltip"
|
1367 |
|
1368 |
+
#: templates/admin/preset-filter-term.php:41
|
1369 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1370 |
msgid "Color"
|
1371 |
msgstr "Colore"
|
1372 |
|
1373 |
+
#: templates/admin/preset-filter.php:91
|
1374 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1375 |
msgid "Save Filter"
|
1376 |
msgstr "Salva filtro "
|
1377 |
|
1378 |
+
#: templates/admin/preset-filter.php:92
|
1379 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1380 |
msgid "Delete Filter"
|
1381 |
msgstr "Elimina filtro"
|
1382 |
|
1383 |
+
#: templates/admin/preset-filters.php:33
|
1384 |
msgctxt "[Admin] New filter button label"
|
1385 |
msgid "Add a new filter"
|
1386 |
msgstr "Aggiungi nuovo filtro"
|
1387 |
|
1388 |
+
#: templates/admin/preset-filters.php:57
|
1389 |
msgctxt "[Admin] Add new filter in new preset page"
|
1390 |
msgid "+ Add filter"
|
1391 |
msgstr "+ Aggiungi filtro"
|
1397 |
msgid "See %d more filters"
|
1398 |
msgstr "Prima dei filtri"
|
1399 |
|
1400 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1401 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1402 |
msgid "Use the new filter preset feature for your filters"
|
1403 |
msgstr "Usa la nuova funzionalità preset per i tuoi filtri"
|
1404 |
|
1405 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1406 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1407 |
msgid ""
|
1408 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1416 |
"Gutenberg o il widget di Elementor."
|
1417 |
|
1418 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1419 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1420 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1421 |
msgid ""
|
1422 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1427 |
"funzionalità. "
|
1428 |
|
1429 |
#. translators: 1. Url to docs.
|
1430 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1431 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1432 |
msgid ""
|
1433 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1436 |
"Ti consigliamo di <a href=\"%1$s\">leggere la documentazione</a> per capire "
|
1437 |
"come usare questa nuova funzionalità. "
|
1438 |
|
1439 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1440 |
#, fuzzy
|
1441 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1442 |
msgid ""
|
1450 |
"nella tabella dei preset filtri.<br/><b>Non preoccuparti: non perderai "
|
1451 |
"nessun dato con questa procedura.</b>"
|
1452 |
|
1453 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1454 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1455 |
msgid ""
|
1456 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1458 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1459 |
msgstr ""
|
1460 |
|
1461 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1462 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1463 |
msgid "Convert your widgets in a preset now"
|
1464 |
msgstr "Converti subito i tuoi widget in preset"
|
1465 |
|
1466 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1467 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1468 |
msgid "No thanks"
|
1469 |
msgstr "No grazie"
|
1470 |
|
1471 |
+
#: templates/filters/global/reset-filters.php:24
|
1472 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1473 |
msgid "Reset filters"
|
1474 |
msgstr "Resetta filtri"
|
1475 |
|
1476 |
+
#~ msgctxt "[Admin] Menu title"
|
1477 |
+
#~ msgid "Ajax Product Filter"
|
1478 |
+
#~ msgstr "Ajax Product Filter"
|
1479 |
+
|
1480 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1481 |
#~ msgid "All"
|
1482 |
#~ msgstr "Tutti"
|
Binary file
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"PO-Revision-Date: 2021-02-12 13:32:05+0000\n"
|
10 |
"Language: nl\n"
|
11 |
"MIME-Version: 1.0\n"
|
@@ -14,94 +14,94 @@ msgstr ""
|
|
14 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
-
#: includes/data-stores/class
|
18 |
msgid "Draft Preset"
|
19 |
msgstr "Concept pre-set"
|
20 |
|
21 |
-
#: includes/functions
|
22 |
-
#: includes/functions
|
23 |
msgid "Term"
|
24 |
msgstr "Termijn"
|
25 |
|
26 |
-
#: includes/functions
|
27 |
-
#: includes/widgets/class
|
28 |
msgid "Color"
|
29 |
msgstr "Kleur"
|
30 |
|
31 |
-
#: includes/functions
|
32 |
msgid "Labels"
|
33 |
msgstr "Labels"
|
34 |
|
35 |
-
#: includes/widgets/class
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Filter de lijst met producten, zonder te pagina opnieuw te laden"
|
38 |
|
39 |
-
#: includes/widgets/class
|
40 |
msgid "Filters:"
|
41 |
msgstr "Filters:"
|
42 |
|
43 |
-
#: includes/widgets/class
|
44 |
msgid "List"
|
45 |
msgstr "Lijst"
|
46 |
|
47 |
-
#: includes/widgets/class
|
48 |
msgid "Label"
|
49 |
msgstr "Label"
|
50 |
|
51 |
-
#: includes/widgets/class
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Dropdown"
|
54 |
|
55 |
-
#: includes/widgets/class
|
56 |
-
#: includes/widgets/class
|
57 |
msgid "Title"
|
58 |
msgstr "Titel"
|
59 |
|
60 |
-
#: includes/widgets/class
|
61 |
msgid "Type:"
|
62 |
msgstr "Type:"
|
63 |
|
64 |
-
#: includes/widgets/class
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Query Type:"
|
67 |
|
68 |
-
#: includes/widgets/class
|
69 |
msgid "OR"
|
70 |
msgstr "OF"
|
71 |
|
72 |
-
#: includes/widgets/class
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Eigenschap:"
|
75 |
|
76 |
-
#: includes/widgets/class
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Weergave (allen default):"
|
79 |
|
80 |
-
#: includes/widgets/class
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Allen (niet hiërarchisch)"
|
83 |
|
84 |
-
#: includes/widgets/class
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Allen (hiërarchisch)"
|
87 |
|
88 |
-
#: includes/widgets/class
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Alleen bovenliggend"
|
91 |
|
92 |
-
#: includes/widgets/class
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "CSS custom klasse"
|
95 |
|
96 |
-
#: includes/widgets/class
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr "YITH AJAX Reset Filter"
|
99 |
|
100 |
-
#: includes/widgets/class
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Alle filters resetten"
|
103 |
|
104 |
-
#: includes/widgets/class
|
105 |
msgid "Button Label"
|
106 |
msgstr "Labelknop"
|
107 |
|
@@ -137,74 +137,69 @@ msgstr ""
|
|
137 |
"yithemes.com/\" target=\"_blank\">Verkrijg meer plugins voor je e-commerce "
|
138 |
"winkel op <strong>YITH</strong></a>"
|
139 |
|
140 |
-
#: includes/class
|
141 |
msgctxt "[Admin] Copy confirmation message"
|
142 |
msgid "Content copied to your clipboard"
|
143 |
msgstr "Inhoud gekopieerd naar je klembord"
|
144 |
|
145 |
-
#: includes/class
|
146 |
msgctxt "[Admin] Confirm filter delete message"
|
147 |
msgid "Are you sure you want to delete this item?"
|
148 |
msgstr "Weet je zeker dat je dit item wilt verwijderen?"
|
149 |
|
150 |
#. translators: 1. Number of items that will be added.
|
151 |
-
#: includes/class
|
152 |
msgctxt "[Admin] Confirm add all terms message"
|
153 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
154 |
msgstr "Weet je zeker dat je door wilt gaan? Deze operatie voegt %s items toe"
|
155 |
|
156 |
-
#: includes/class
|
157 |
msgctxt "[Admin] Error message"
|
158 |
msgid "\"Filter title\" is a required field"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: includes/class
|
162 |
msgctxt "[Admin] Message shown when filter has empty title"
|
163 |
msgid "< no title >"
|
164 |
msgstr "< geen titel >"
|
165 |
|
166 |
-
#: includes/class
|
167 |
msgctxt "[Admin] Media library title, when selecting images"
|
168 |
msgid "Select media you want to use"
|
169 |
msgstr "Selecteer de media die je wilt gebruiken"
|
170 |
|
171 |
-
#: includes/class
|
172 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
173 |
msgid "Use this media"
|
174 |
msgstr "Gebruik deze media"
|
175 |
|
176 |
-
#: includes/class
|
177 |
msgctxt "[Admin] tab name"
|
178 |
msgid "Filter presets"
|
179 |
msgstr "Filter pre-set"
|
180 |
|
181 |
-
#: includes/class
|
182 |
msgctxt "[Admin] tab name"
|
183 |
msgid "General settings"
|
184 |
msgstr "Algemene instellingen"
|
185 |
|
186 |
-
#: includes/class
|
187 |
#, fuzzy
|
188 |
msgctxt "[Admin] tab name"
|
189 |
msgid "SEO"
|
190 |
msgstr "SEO"
|
191 |
|
192 |
-
#: includes/class
|
193 |
msgctxt "[Admin] tab name"
|
194 |
msgid "Premium Version"
|
195 |
msgstr "Premium versie"
|
196 |
|
197 |
-
#: includes/class
|
198 |
msgctxt "[Admin] tab name"
|
199 |
msgid "Legacy"
|
200 |
msgstr "Nalatenschap"
|
201 |
|
202 |
-
#: includes/class
|
203 |
-
msgctxt "[Admin] Menu title"
|
204 |
-
msgid "Ajax Product Filter"
|
205 |
-
msgstr "Ajax Product Filter"
|
206 |
-
|
207 |
-
#: includes/class.yith-wcan-admin.php:199
|
208 |
msgctxt "[Admin] Plugin description"
|
209 |
msgid ""
|
210 |
"It allows your users to find the product they are looking for as quickly as "
|
@@ -213,44 +208,44 @@ msgstr ""
|
|
213 |
"Het laat je gebruikers het product het product dat ze zoeken, zo snel "
|
214 |
"mogelijk vinden."
|
215 |
|
216 |
-
#: includes/class
|
217 |
msgctxt "[HELP TAB] Video title"
|
218 |
msgid ""
|
219 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
220 |
"the shop page:</b>"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: includes/class
|
224 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
225 |
msgid "item"
|
226 |
msgstr "Item"
|
227 |
|
228 |
-
#: includes/class
|
229 |
msgctxt "[Admin] Preset table empty message second line"
|
230 |
msgid "But don't worry, here you can create your first one!"
|
231 |
msgstr "Maar geen zorgen, je kunt hier je eerste aanmaken!"
|
232 |
|
233 |
-
#: includes/class
|
234 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
235 |
msgid "Clear Product Filter transients"
|
236 |
msgstr "Product Filter transients legen"
|
237 |
|
238 |
-
#: includes/class
|
239 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
240 |
msgid "Run filter widgets upgrade"
|
241 |
msgstr "Filter widgets upgrade uitvoeren"
|
242 |
|
243 |
-
#: includes/class
|
244 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
245 |
msgid "Clear"
|
246 |
msgstr "Wissen"
|
247 |
|
248 |
-
#: includes/class
|
249 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
250 |
msgid "Run"
|
251 |
msgstr "Uitvoeren"
|
252 |
|
253 |
-
#: includes/class
|
254 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
255 |
msgid ""
|
256 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -262,7 +257,7 @@ msgstr ""
|
|
262 |
"configuratie van je product hebt gewijzigd en filters niet de verwachte "
|
263 |
"resultaten weergeven."
|
264 |
|
265 |
-
#: includes/class
|
266 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
267 |
msgid ""
|
268 |
"This will create a preset for any sidebar of your shop containing filter "
|
@@ -272,32 +267,32 @@ msgstr ""
|
|
272 |
"filter widgets bevat; de preset wordt geconfigureerd om te voldoen aan de "
|
273 |
"widgets specificaties"
|
274 |
|
275 |
-
#: includes/class
|
276 |
msgctxt "[Admin] Filter edit form"
|
277 |
msgid "Taxonomy"
|
278 |
msgstr "Taxonomie"
|
279 |
|
280 |
-
#: includes/class
|
281 |
msgctxt "[Admin] Filter edit form"
|
282 |
msgid "Checkbox"
|
283 |
msgstr "Keuzevakje"
|
284 |
|
285 |
-
#: includes/class
|
286 |
msgctxt "[Admin] Filter edit form"
|
287 |
msgid "Select"
|
288 |
msgstr "Selecteren"
|
289 |
|
290 |
-
#: includes/class
|
291 |
msgctxt "[Admin] Filter edit form"
|
292 |
msgid "Text"
|
293 |
msgstr "Tekst"
|
294 |
|
295 |
-
#: includes/class
|
296 |
msgctxt "[Admin] Filter edit form"
|
297 |
msgid "Color Swatches"
|
298 |
msgstr "Kleur swatches"
|
299 |
|
300 |
-
#: includes/class
|
301 |
msgctxt "[Admin] Filter edit form"
|
302 |
msgid "Label"
|
303 |
msgstr "Label"
|
@@ -312,32 +307,32 @@ msgctxt "[Admin] Filter edit form"
|
|
312 |
msgid "Enter a name to identify this filter"
|
313 |
msgstr "Naam invoeren voor deze filter"
|
314 |
|
315 |
-
#: plugin-options/filter-options.php:
|
316 |
msgctxt "[Admin] Filter edit form"
|
317 |
msgid "Filter for"
|
318 |
msgstr "Filter voor"
|
319 |
|
320 |
-
#: plugin-options/filter-options.php:
|
321 |
msgctxt "[Admin] Filter edit form"
|
322 |
msgid "Select the parameters you wish to filter for"
|
323 |
msgstr "Selecteer de parameters je wilt filteren voor"
|
324 |
|
325 |
-
#: plugin-options/filter-options.php:
|
326 |
msgctxt "[Admin] Filter edit form"
|
327 |
msgid "Choose taxonomy"
|
328 |
msgstr "Kies taxonomie"
|
329 |
|
330 |
-
#: plugin-options/filter-options.php:
|
331 |
msgctxt "[Admin] Filter edit form"
|
332 |
msgid "Select which taxonomy to use for this filter"
|
333 |
msgstr "Selecteer welke taxonomie je wilt gebruiken voor deze filter"
|
334 |
|
335 |
-
#: plugin-options/filter-options.php:
|
336 |
msgctxt "[Admin] Filter edit form"
|
337 |
msgid "Auto-populate with all terms"
|
338 |
msgstr ""
|
339 |
|
340 |
-
#: plugin-options/filter-options.php:
|
341 |
msgctxt "[Admin] Filter edit form"
|
342 |
msgid ""
|
343 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -346,71 +341,71 @@ msgid ""
|
|
346 |
"well.</span>"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: plugin-options/filter-options.php:
|
350 |
msgctxt "[Admin] Filter edit form"
|
351 |
msgid "Choose terms"
|
352 |
msgstr "Kies termen"
|
353 |
|
354 |
-
#: plugin-options/filter-options.php:
|
355 |
msgctxt "[Admin] Filter edit form"
|
356 |
msgid "Select which terms to use for filtering"
|
357 |
msgstr "Selecteer welke termen je wilt gebruiken voor filteren"
|
358 |
|
359 |
-
#: plugin-options/filter-options.php:
|
360 |
msgctxt "[Admin] Filter edit form"
|
361 |
msgid "Filter type"
|
362 |
msgstr "Filter type"
|
363 |
|
364 |
-
#: plugin-options/filter-options.php:
|
365 |
msgctxt "[Admin] Filter edit form"
|
366 |
msgid "Select the filter type for this filter"
|
367 |
msgstr "Selecteer het filter type voor deze filter"
|
368 |
|
369 |
-
#: plugin-options/filter-options.php:
|
370 |
#, fuzzy
|
371 |
msgctxt "[Admin] Filter edit form"
|
372 |
msgid "Labels"
|
373 |
msgstr "Labels"
|
374 |
|
375 |
-
#: plugin-options/filter-options.php:
|
376 |
#, fuzzy
|
377 |
msgctxt "[Admin] Filter edit form"
|
378 |
msgid "Show below"
|
379 |
msgstr "Resultaten weergeven"
|
380 |
|
381 |
-
#: plugin-options/filter-options.php:
|
382 |
#, fuzzy
|
383 |
msgctxt "[Admin] Filter edit form"
|
384 |
msgid "Show on the right"
|
385 |
msgstr "Toon item telling"
|
386 |
|
387 |
-
#: plugin-options/filter-options.php:
|
388 |
msgctxt "[Admin] Filter edit form"
|
389 |
msgid "Hide"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: plugin-options/filter-options.php:
|
393 |
#, fuzzy
|
394 |
msgctxt "[Admin] Filter edit form"
|
395 |
msgid "Choose if and where to show the label inside your filter"
|
396 |
msgstr "Kies de stijl van de filter binnen de widgets"
|
397 |
|
398 |
-
#: plugin-options/filter-options.php:
|
399 |
msgctxt "[Admin] Filter edit form"
|
400 |
msgid "Columns number"
|
401 |
msgstr "Kolommen nummer"
|
402 |
|
403 |
-
#: plugin-options/filter-options.php:
|
404 |
msgctxt "[Admin] Filter edit form"
|
405 |
msgid "Set the number of items per row you want to show for this design"
|
406 |
msgstr "Kies het aantal items per rij dat je wilt tonen voor dit ontwerp"
|
407 |
|
408 |
-
#: plugin-options/filter-options.php:
|
409 |
msgctxt "[Admin] Filter edit form"
|
410 |
msgid "Customize terms"
|
411 |
msgstr "Aangepaste termen"
|
412 |
|
413 |
-
#: plugin-options/filter-options.php:
|
414 |
msgctxt "[Admin] Filter edit form"
|
415 |
msgid ""
|
416 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -424,157 +419,157 @@ msgid ""
|
|
424 |
"this option and use the boxes below</span>"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: plugin-options/filter-options.php:
|
428 |
#, fuzzy
|
429 |
msgctxt "[Admin] Filter edit form"
|
430 |
msgid "Terms options"
|
431 |
msgstr "Bestelling opties"
|
432 |
|
433 |
-
#: plugin-options/filter-options.php:
|
434 |
msgctxt "[Admin] Filter edit form"
|
435 |
msgid "Show hierarchy"
|
436 |
msgstr "Toon hiërarchie "
|
437 |
|
438 |
-
#: plugin-options/filter-options.php:
|
439 |
msgctxt "[Admin] Filter edit form"
|
440 |
msgid "No, show all terms in same level"
|
441 |
msgstr "Nee, toon alle termen in hetzelfde niveau"
|
442 |
|
443 |
-
#: plugin-options/filter-options.php:
|
444 |
msgctxt "[Admin] Filter edit form"
|
445 |
msgid "No, show only parent terms"
|
446 |
msgstr "Nee, alleen hoofd-termen tonen"
|
447 |
|
448 |
-
#: plugin-options/filter-options.php:
|
449 |
msgctxt "[Admin] Filter edit form"
|
450 |
msgid "Yes"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: plugin-options/filter-options.php:
|
454 |
msgctxt "[Admin] Filter edit form"
|
455 |
msgid "Choose how to show terms hierarchy"
|
456 |
msgstr "Bepaal hoe je de termen hiërarchie wilt tonen"
|
457 |
|
458 |
-
#: plugin-options/filter-options.php:
|
459 |
msgctxt "[Admin] Filter edit form"
|
460 |
msgid "Allow multiple selection"
|
461 |
msgstr "Meervoudige selectie toestaan"
|
462 |
|
463 |
-
#: plugin-options/filter-options.php:
|
464 |
msgctxt "[Admin] Filter edit form"
|
465 |
msgid "Enable if the user can select multiple terms when filtering products"
|
466 |
msgstr ""
|
467 |
"Inschakelen als de gebruiker meerdere termen can selecteren bij het filteren "
|
468 |
"van producten"
|
469 |
|
470 |
-
#: plugin-options/filter-options.php:
|
471 |
msgctxt "[Admin] Filter edit form"
|
472 |
msgid "Multiselect relation"
|
473 |
msgstr "Multi-selecteren relatie"
|
474 |
|
475 |
-
#: plugin-options/filter-options.php:
|
476 |
msgctxt "[Admin] Filter edit form"
|
477 |
msgid "Choose how multiple terms selection should behave"
|
478 |
msgstr "Bepaal het gedrag van meervoudige termen selectie"
|
479 |
|
480 |
-
#: includes/class
|
481 |
msgctxt "[Admin] Filter edit form, sorting options"
|
482 |
msgid "Default sorting"
|
483 |
msgstr "Standaard sortering"
|
484 |
|
485 |
-
#: includes/class
|
486 |
msgctxt "[Admin] Filter edit form, sorting options"
|
487 |
msgid "Sort by popularity"
|
488 |
msgstr "Sorteren op populariteit"
|
489 |
|
490 |
-
#: includes/class
|
491 |
msgctxt "[Admin] Filter edit form, sorting options"
|
492 |
msgid "Sort by average rating"
|
493 |
msgstr "Sorteren op gemiddelde waardering"
|
494 |
|
495 |
-
#: includes/class
|
496 |
msgctxt "[Admin] Filter edit form, sorting options"
|
497 |
msgid "Sort by latest"
|
498 |
msgstr "Sorteren op laaste"
|
499 |
|
500 |
-
#: includes/class
|
501 |
msgctxt "[Admin] Filter edit form, sorting options"
|
502 |
msgid "Sort by price: low to high"
|
503 |
msgstr "Sorteren op prijs: laag naar hoog"
|
504 |
|
505 |
-
#: includes/class
|
506 |
msgctxt "[Admin] Filter edit form, sorting options"
|
507 |
msgid "Sort by price: high to low"
|
508 |
msgstr "Sorteren op prijs: hoog naar laag"
|
509 |
|
510 |
-
#: includes/class
|
511 |
msgctxt "[Admin] Default filter title"
|
512 |
msgid "New filter"
|
513 |
msgstr "Nieuwe filter"
|
514 |
|
515 |
-
#: includes/class
|
516 |
-
#: includes/filters/class
|
517 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
518 |
msgid "All"
|
519 |
msgstr "Alle"
|
520 |
|
521 |
-
#: includes/class
|
522 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
523 |
msgid "Search..."
|
524 |
msgstr "Zoeken..."
|
525 |
|
526 |
-
#: includes/class
|
527 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
528 |
msgid "No item found"
|
529 |
msgstr "Geen item gevonden"
|
530 |
|
531 |
#. translators: 1. Number of items to show.
|
532 |
-
#: includes/class
|
533 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
534 |
msgid "Show %d more"
|
535 |
msgstr "Toon %d meer"
|
536 |
|
537 |
-
#: includes/class
|
538 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
539 |
msgid "Close"
|
540 |
msgstr "Sluiten"
|
541 |
|
542 |
-
#: includes/class
|
543 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
544 |
msgid "Save"
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: includes/class
|
548 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
549 |
msgid "Show results"
|
550 |
msgstr "Resultaten weergeven"
|
551 |
|
552 |
-
#: includes/class
|
553 |
msgctxt ""
|
554 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
555 |
"selection"
|
556 |
msgid "Clear"
|
557 |
msgstr "Wissen"
|
558 |
|
559 |
-
#: includes/class
|
560 |
msgctxt ""
|
561 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
562 |
"selection"
|
563 |
msgid "Clear All"
|
564 |
msgstr "Alles wissen"
|
565 |
|
566 |
-
#: includes/class
|
567 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
568 |
msgid "Default preset"
|
569 |
msgstr "Standaard pre-set"
|
570 |
|
571 |
#. translators: 1. Taxonomy name.
|
572 |
-
#: includes/class
|
573 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
574 |
msgid "Filter by %s"
|
575 |
msgstr "Filter op %s"
|
576 |
|
577 |
-
#: includes/class
|
578 |
#, fuzzy
|
579 |
msgctxt "[Admin] Label in new preset page"
|
580 |
msgid "Default"
|
@@ -590,33 +585,33 @@ msgctxt "[Admin] Label in new preset page"
|
|
590 |
msgid "Enter a name to identify this filter preset"
|
591 |
msgstr "Naam invoeren voor deze filter pre-set"
|
592 |
|
593 |
-
#: templates/admin/preset-filters.php:
|
594 |
msgctxt "[Admin] Label in new preset page"
|
595 |
msgid "Filters of this preset"
|
596 |
msgstr "Filters van deze pre-set"
|
597 |
|
598 |
-
#: includes/class
|
599 |
-
#: includes/class
|
600 |
msgctxt "[Admin] name of presets custom post type"
|
601 |
msgid "Filter presets"
|
602 |
msgstr "Filter pre-sets"
|
603 |
|
604 |
-
#: includes/class
|
605 |
msgctxt "[Admin] singular name of presets custom post type"
|
606 |
msgid "Filter preset"
|
607 |
msgstr "Filter pre-set"
|
608 |
|
609 |
-
#: includes/class
|
610 |
msgctxt "[Admin] add new filter preset label"
|
611 |
msgid "Add new preset"
|
612 |
msgstr "Nieuwe pre-set toevoegen"
|
613 |
|
614 |
-
#: includes/class
|
615 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
616 |
msgid "Convert widgets in a preset"
|
617 |
msgstr "Widgets omzetten in een pre-set"
|
618 |
|
619 |
-
#: includes/data-stores/class
|
620 |
msgctxt ""
|
621 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
622 |
"not exist"
|
@@ -624,43 +619,43 @@ msgid "Invalid preset."
|
|
624 |
msgstr "Ongeldige pre-set"
|
625 |
|
626 |
#. translators: 1. Title of original preset.
|
627 |
-
#: includes/data-stores/class
|
628 |
msgctxt "[ADMIN] Title of the cloned preset"
|
629 |
msgid "%s - Copy"
|
630 |
msgstr "%s - Kopieer"
|
631 |
|
632 |
-
#: includes/elementor/class
|
633 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
634 |
msgid "YITH AJAX Filters Preset"
|
635 |
msgstr "YITH AJAX Filters Pre-set"
|
636 |
|
637 |
-
#: includes/elementor/class
|
638 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
639 |
msgid "YITH AJAX Filters Reset Button"
|
640 |
msgstr "YITH AJAX Filters Reset Knop"
|
641 |
|
642 |
-
#: includes/elementor/class
|
643 |
-
#: includes/shortcodes/class
|
644 |
msgctxt "[ELEMENTOR] Default preset option"
|
645 |
msgid "Choose an option"
|
646 |
msgstr "Kies een optie"
|
647 |
|
648 |
-
#: includes/elementor/class
|
649 |
msgctxt "[ELEMENTOR] Section title"
|
650 |
msgid "Filters"
|
651 |
msgstr "Filters"
|
652 |
|
653 |
-
#: includes/elementor/class
|
654 |
msgctxt "[ELEMENTOR] Section title"
|
655 |
msgid "General"
|
656 |
msgstr "Algemeen"
|
657 |
|
658 |
-
#: includes/elementor/class
|
659 |
msgctxt "[ELEMENTOR] Control label"
|
660 |
msgid "Preset"
|
661 |
msgstr "Pre-set"
|
662 |
|
663 |
-
#: includes/elementor/class
|
664 |
msgctxt "[ELEMENTOR] Widget description"
|
665 |
msgid ""
|
666 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
@@ -668,7 +663,7 @@ msgstr ""
|
|
668 |
"Deze widget zal de \"Filters resetten\" knop weergeven, waar deze ook "
|
669 |
"geplaatst is"
|
670 |
|
671 |
-
#: includes/elementor/class
|
672 |
msgctxt "[ELEMENTOR] Widget description"
|
673 |
msgid ""
|
674 |
"It will allow users to reset the filer selection; it will only appear when "
|
@@ -677,7 +672,7 @@ msgstr ""
|
|
677 |
"Het laat gebruikers de filter selectie resetten; het verschijnt alleen "
|
678 |
"wanneer er een actieve filter is."
|
679 |
|
680 |
-
#: includes/elementor/class
|
681 |
msgctxt "[ELEMENTOR] Widget description"
|
682 |
msgid ""
|
683 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
@@ -687,17 +682,17 @@ msgstr ""
|
|
687 |
"plaatsen, wanneer de \"Resetten knop positie' optie niet werkt voor de loop "
|
688 |
"van je producten "
|
689 |
|
690 |
-
#: includes/functions
|
691 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
692 |
msgid "Color 1"
|
693 |
msgstr "Kleur 1"
|
694 |
|
695 |
-
#: includes/functions
|
696 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
697 |
msgid "Color 2"
|
698 |
msgstr "Kleur 2"
|
699 |
|
700 |
-
#: includes/functions
|
701 |
msgctxt "[FRONTEND] Star rating template"
|
702 |
msgid "star"
|
703 |
msgid_plural "stars"
|
@@ -705,27 +700,27 @@ msgstr[0] "ster"
|
|
705 |
msgstr[1] "sterren"
|
706 |
|
707 |
#. translators: 1. Rating.
|
708 |
-
#: includes/functions
|
709 |
msgctxt "[FRONTEND] Star rating label"
|
710 |
msgid "Rated %s out of 5"
|
711 |
msgstr "Waardering %s van de 5"
|
712 |
|
713 |
-
#: includes/shortcodes/class
|
714 |
msgctxt "[GUTENBERG]: block name"
|
715 |
msgid "YITH AJAX Filters Preset"
|
716 |
msgstr "YITH AJAX Filters Pre-set"
|
717 |
|
718 |
-
#: includes/shortcodes/class
|
719 |
msgctxt "[GUTENBERG]: block name"
|
720 |
msgid "YITH Reset Filters Button"
|
721 |
msgstr "YITH Reset Filters knop"
|
722 |
|
723 |
-
#: includes/shortcodes/class
|
724 |
msgctxt "[GUTENBERG]: block description"
|
725 |
msgid "Show filters from a preset"
|
726 |
msgstr "Filters tonen van een pre-set"
|
727 |
|
728 |
-
#: includes/shortcodes/class
|
729 |
msgctxt "[GUTENBERG]: block description"
|
730 |
msgid ""
|
731 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -738,80 +733,80 @@ msgstr ""
|
|
738 |
"'Filters resetten' op je pagina te plaatsen, als de optie 'Knop positie "
|
739 |
"resetten' niet werkt voor je producten loop"
|
740 |
|
741 |
-
#: includes/shortcodes/class
|
742 |
msgctxt "[GUTENBERG]: attribute description"
|
743 |
msgid "Preset"
|
744 |
msgstr "Pre-set"
|
745 |
|
746 |
-
#: includes/tables/class
|
747 |
msgctxt "[Admin] Preset table column header"
|
748 |
msgid "Preset name"
|
749 |
msgstr "Naam pre-set"
|
750 |
|
751 |
-
#: includes/tables/class
|
752 |
msgctxt "[Admin] Preset table column header"
|
753 |
msgid "Shortcode"
|
754 |
msgstr "Shortcode"
|
755 |
|
756 |
-
#: includes/tables/class
|
757 |
msgctxt "[Admin] Preset edit action label"
|
758 |
msgid "Edit this preset"
|
759 |
msgstr "Deze pre-set bewerken"
|
760 |
|
761 |
-
#: includes/tables/class
|
762 |
msgctxt "[Admin] Preset clone action label"
|
763 |
msgid "Clone this preset"
|
764 |
msgstr "Deze pre-set clonen"
|
765 |
|
766 |
-
#: includes/tables/class
|
767 |
msgctxt "[Admin] Preset delete action label"
|
768 |
msgid "Delete this preset"
|
769 |
msgstr "Deze pre-set verwijderen"
|
770 |
|
771 |
-
#: includes/tables/class
|
772 |
msgctxt "[Admin] Preset delete confirm label"
|
773 |
msgid "Are you sure you want to delete this preset?"
|
774 |
msgstr "Weet je zeker dat je deze pre-set wilt verwijderen?"
|
775 |
|
776 |
-
#: includes/tables/class
|
777 |
msgctxt "[Admin] on-off yes"
|
778 |
msgid "YES"
|
779 |
msgstr "JA"
|
780 |
|
781 |
-
#: includes/tables/class
|
782 |
msgctxt "[Admin] on-off no"
|
783 |
msgid "NO"
|
784 |
msgstr "NEE"
|
785 |
|
786 |
-
#: includes/tables/class
|
787 |
msgctxt ""
|
788 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
789 |
msgid "filter preset"
|
790 |
msgstr "Filter pre-set"
|
791 |
|
792 |
-
#: templates/admin/preset-filters.php:
|
793 |
msgctxt ""
|
794 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
795 |
msgid "filter"
|
796 |
msgstr "filter"
|
797 |
|
798 |
-
#: includes/tables/class
|
799 |
msgctxt "[Admin] New preset button label"
|
800 |
msgid "Create a new preset"
|
801 |
msgstr "Nieuwe pre-set aanmaken"
|
802 |
|
803 |
-
#: includes/widgets/class
|
804 |
msgctxt "[ADMIN] Name of the preset widget"
|
805 |
msgid "YITH AJAX Filters Preset"
|
806 |
msgstr "YITH AJAX Filters Pre-set"
|
807 |
|
808 |
-
#: includes/widgets/class
|
809 |
msgctxt "[ADMIN] Preset widget options"
|
810 |
msgid "Preset"
|
811 |
msgstr "Pre-set"
|
812 |
|
813 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
814 |
-
#: includes/widgets/class
|
815 |
msgctxt "[ADMIN] Preset widget options"
|
816 |
msgid ""
|
817 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -820,26 +815,26 @@ msgstr ""
|
|
820 |
"Ga a.u.b. naar het <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product "
|
821 |
"Filter -> Pre-sets</a> en maak je eerste pre-set aan"
|
822 |
|
823 |
-
#: includes/widgets/class
|
824 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
825 |
msgid "YITH AJAX Product Filter"
|
826 |
msgstr "YITH AJAX Product Filter"
|
827 |
|
828 |
-
#: includes/widgets/class
|
829 |
#, fuzzy
|
830 |
msgctxt ""
|
831 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
832 |
msgid "AND"
|
833 |
msgstr "EN"
|
834 |
|
835 |
-
#: includes/widgets/class
|
836 |
msgctxt "[Plugin Name]"
|
837 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
838 |
msgstr ""
|
839 |
"Alle filters terugzetten die zijn ingesteld door YITH WooCommerce AJAX "
|
840 |
"Product Filter"
|
841 |
|
842 |
-
#: plugin-options/filter-options.php:
|
843 |
#, fuzzy
|
844 |
msgctxt ""
|
845 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -847,7 +842,7 @@ msgid "AND - Results need to match all selected terms at the same time"
|
|
847 |
msgstr ""
|
848 |
"EN - Resultaten moeten matchen met alle geselecteerde termen tegelijkertijd"
|
849 |
|
850 |
-
#: plugin-options/filter-options.php:
|
851 |
#, fuzzy
|
852 |
msgctxt ""
|
853 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
@@ -1132,21 +1127,21 @@ msgstr ""
|
|
1132 |
msgctxt "[ADMIN] Premium tab"
|
1133 |
msgid ""
|
1134 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1135 |
-
"view<br/>\
|
1136 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1137 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1138 |
-
"range (based on their budget availability)<br/>\
|
1139 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1140 |
"attributes available in your store, like color and size. For the color "
|
1141 |
"filter, you can either choose square or circular color swatches or use "
|
1142 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1143 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1144 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1145 |
-
"concentrate only on high-rated ones)<br/>\
|
1146 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1147 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1148 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1149 |
-
"filter products and view only those with a discount<br/>\
|
1150 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1151 |
"filter products based on their needs and exclude out-of-stock products from "
|
1152 |
"the list"
|
@@ -1272,73 +1267,73 @@ msgid ""
|
|
1272 |
"easier to share)"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: templates/admin/preset-edit.php:
|
1276 |
msgctxt "[Admin] Back link in new preset page"
|
1277 |
msgid "< back to preset list"
|
1278 |
msgstr "< terug naar pre-set lijst"
|
1279 |
|
1280 |
-
#: templates/admin/preset-edit.php:
|
1281 |
msgctxt "[ADMIN] Title for new preset page"
|
1282 |
msgid "Edit filter preset"
|
1283 |
msgstr "Filter pre-set bewerken"
|
1284 |
|
1285 |
-
#: templates/admin/preset-edit.php:
|
1286 |
msgctxt "[ADMIN] Title for new preset page"
|
1287 |
msgid "Add new filter preset"
|
1288 |
msgstr "Nieuwe filter pre-set toevoegen"
|
1289 |
|
1290 |
-
#: templates/admin/preset-edit.php:
|
1291 |
msgctxt "[ADMIN] Preset save message"
|
1292 |
msgid "Preset saved correctly"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: templates/admin/preset-edit.php:
|
1296 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1297 |
msgid "Save preset"
|
1298 |
msgstr "Pre-set opslaan"
|
1299 |
|
1300 |
-
#: templates/admin/preset-empty-content.php:
|
1301 |
msgctxt "Alt text for empty preset image"
|
1302 |
msgid "Empty preset"
|
1303 |
msgstr "Lege pre-set"
|
1304 |
|
1305 |
#. translators: 1. Missing item name.
|
1306 |
-
#: templates/admin/preset-empty-content.php:
|
1307 |
msgctxt "[Admin] Preset table empty message"
|
1308 |
msgid "You don't have any %s yet."
|
1309 |
msgstr "Je hebt nog geen %s ingesteld."
|
1310 |
|
1311 |
-
#: templates/admin/preset-filter-term.php:
|
1312 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1313 |
msgid "Label"
|
1314 |
msgstr "Label"
|
1315 |
|
1316 |
-
#: templates/admin/preset-filter-term.php:
|
1317 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1318 |
msgid "Tooltip"
|
1319 |
msgstr "Tooltip"
|
1320 |
|
1321 |
-
#: templates/admin/preset-filter-term.php:
|
1322 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1323 |
msgid "Color"
|
1324 |
msgstr "Kleur"
|
1325 |
|
1326 |
-
#: templates/admin/preset-filter.php:
|
1327 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1328 |
msgid "Save Filter"
|
1329 |
msgstr "Filter opslaan"
|
1330 |
|
1331 |
-
#: templates/admin/preset-filter.php:
|
1332 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1333 |
msgid "Delete Filter"
|
1334 |
msgstr "Filter verwijderen"
|
1335 |
|
1336 |
-
#: templates/admin/preset-filters.php:
|
1337 |
msgctxt "[Admin] New filter button label"
|
1338 |
msgid "Add a new filter"
|
1339 |
msgstr "Nieuwe filter toevoegen"
|
1340 |
|
1341 |
-
#: templates/admin/preset-filters.php:
|
1342 |
msgctxt "[Admin] Add new filter in new preset page"
|
1343 |
msgid "+ Add filter"
|
1344 |
msgstr "+ Nieuwe filter toevoegen"
|
@@ -1350,12 +1345,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1350 |
msgid "See %d more filters"
|
1351 |
msgstr "Voor filters"
|
1352 |
|
1353 |
-
#: templates/admin/upgrade-note-modal.php:
|
1354 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1355 |
msgid "Use the new filter preset feature for your filters"
|
1356 |
msgstr "Gebruik de nieuwe filter pre-set functie voor je filters"
|
1357 |
|
1358 |
-
#: templates/admin/upgrade-note-modal.php:
|
1359 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1360 |
msgid ""
|
1361 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1369,7 +1364,7 @@ msgstr ""
|
|
1369 |
"de shortcode, het Gutenberg Blok of de Elementor widget."
|
1370 |
|
1371 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1372 |
-
#: templates/admin/upgrade-note-modal.php:
|
1373 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1374 |
msgid ""
|
1375 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1380,7 +1375,7 @@ msgstr ""
|
|
1380 |
"gebruiken."
|
1381 |
|
1382 |
#. translators: 1. Url to docs.
|
1383 |
-
#: templates/admin/upgrade-note-modal.php:
|
1384 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1385 |
msgid ""
|
1386 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
@@ -1389,7 +1384,7 @@ msgstr ""
|
|
1389 |
"We raden je aan om <a href=\"%1$s\">de documentatie te lezen</a> om meer te "
|
1390 |
"weten te komen over deze nieuwe optie."
|
1391 |
|
1392 |
-
#: templates/admin/upgrade-note-modal.php:
|
1393 |
#, fuzzy
|
1394 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1395 |
msgid ""
|
@@ -1404,7 +1399,7 @@ msgstr ""
|
|
1404 |
"tabel..<br/><b>Geen zorgen, gegevens zullen niet verloren gaan tijdens het "
|
1405 |
"proces.</b>"
|
1406 |
|
1407 |
-
#: templates/admin/upgrade-note-modal.php:
|
1408 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1409 |
msgid ""
|
1410 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1412,21 +1407,25 @@ msgid ""
|
|
1412 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1413 |
msgstr ""
|
1414 |
|
1415 |
-
#: templates/admin/upgrade-note-modal.php:
|
1416 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1417 |
msgid "Convert your widgets in a preset now"
|
1418 |
msgstr "Je widgets nu omzetten naar een pre-set"
|
1419 |
|
1420 |
-
#: templates/admin/upgrade-note-modal.php:
|
1421 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1422 |
msgid "No thanks"
|
1423 |
msgstr "Nee bedankt"
|
1424 |
|
1425 |
-
#: templates/filters/global/reset-filters.php:
|
1426 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1427 |
msgid "Reset filters"
|
1428 |
msgstr "Filters resetten"
|
1429 |
|
|
|
|
|
|
|
|
|
1430 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1431 |
#~ msgid "All"
|
1432 |
#~ msgstr "Alle"
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
7 |
"ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"PO-Revision-Date: 2021-02-12 13:32:05+0000\n"
|
10 |
"Language: nl\n"
|
11 |
"MIME-Version: 1.0\n"
|
14 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
"X-Generator: GlotPress/3.0.0-alpha.2\n"
|
16 |
|
17 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
18 |
msgid "Draft Preset"
|
19 |
msgstr "Concept pre-set"
|
20 |
|
21 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
22 |
+
#: includes/functions-yith-wcan.php:132
|
23 |
msgid "Term"
|
24 |
msgstr "Termijn"
|
25 |
|
26 |
+
#: includes/functions-yith-wcan.php:98
|
27 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
28 |
msgid "Color"
|
29 |
msgstr "Kleur"
|
30 |
|
31 |
+
#: includes/functions-yith-wcan.php:132
|
32 |
msgid "Labels"
|
33 |
msgstr "Labels"
|
34 |
|
35 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
36 |
msgid "Filter the list of products without reloading the page"
|
37 |
msgstr "Filter de lijst met producten, zonder te pagina opnieuw te laden"
|
38 |
|
39 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
40 |
msgid "Filters:"
|
41 |
msgstr "Filters:"
|
42 |
|
43 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
44 |
msgid "List"
|
45 |
msgstr "Lijst"
|
46 |
|
47 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
48 |
msgid "Label"
|
49 |
msgstr "Label"
|
50 |
|
51 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
52 |
msgid "Dropdown"
|
53 |
msgstr "Dropdown"
|
54 |
|
55 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
56 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
57 |
msgid "Title"
|
58 |
msgstr "Titel"
|
59 |
|
60 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
61 |
msgid "Type:"
|
62 |
msgstr "Type:"
|
63 |
|
64 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
65 |
msgid "Query Type:"
|
66 |
msgstr "Query Type:"
|
67 |
|
68 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
69 |
msgid "OR"
|
70 |
msgstr "OF"
|
71 |
|
72 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
73 |
msgid "Attribute:"
|
74 |
msgstr "Eigenschap:"
|
75 |
|
76 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
77 |
msgid "Display (default All):"
|
78 |
msgstr "Weergave (allen default):"
|
79 |
|
80 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
81 |
msgid "All (no hierarchical)"
|
82 |
msgstr "Allen (niet hiërarchisch)"
|
83 |
|
84 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
85 |
msgid "All (hierarchical)"
|
86 |
msgstr "Allen (hiërarchisch)"
|
87 |
|
88 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
89 |
msgid "Only Parent"
|
90 |
msgstr "Alleen bovenliggend"
|
91 |
|
92 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
93 |
msgid "CSS custom class"
|
94 |
msgstr "CSS custom klasse"
|
95 |
|
96 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
97 |
msgid "YITH AJAX Reset Filter"
|
98 |
msgstr "YITH AJAX Reset Filter"
|
99 |
|
100 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
101 |
msgid "Reset All Filters"
|
102 |
msgstr "Alle filters resetten"
|
103 |
|
104 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
105 |
msgid "Button Label"
|
106 |
msgstr "Labelknop"
|
107 |
|
137 |
"yithemes.com/\" target=\"_blank\">Verkrijg meer plugins voor je e-commerce "
|
138 |
"winkel op <strong>YITH</strong></a>"
|
139 |
|
140 |
+
#: includes/class-yith-wcan-admin.php:107
|
141 |
msgctxt "[Admin] Copy confirmation message"
|
142 |
msgid "Content copied to your clipboard"
|
143 |
msgstr "Inhoud gekopieerd naar je klembord"
|
144 |
|
145 |
+
#: includes/class-yith-wcan-admin.php:108
|
146 |
msgctxt "[Admin] Confirm filter delete message"
|
147 |
msgid "Are you sure you want to delete this item?"
|
148 |
msgstr "Weet je zeker dat je dit item wilt verwijderen?"
|
149 |
|
150 |
#. translators: 1. Number of items that will be added.
|
151 |
+
#: includes/class-yith-wcan-admin.php:110
|
152 |
msgctxt "[Admin] Confirm add all terms message"
|
153 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
154 |
msgstr "Weet je zeker dat je door wilt gaan? Deze operatie voegt %s items toe"
|
155 |
|
156 |
+
#: includes/class-yith-wcan-admin.php:111
|
157 |
msgctxt "[Admin] Error message"
|
158 |
msgid "\"Filter title\" is a required field"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
162 |
msgctxt "[Admin] Message shown when filter has empty title"
|
163 |
msgid "< no title >"
|
164 |
msgstr "< geen titel >"
|
165 |
|
166 |
+
#: includes/class-yith-wcan-admin.php:115
|
167 |
msgctxt "[Admin] Media library title, when selecting images"
|
168 |
msgid "Select media you want to use"
|
169 |
msgstr "Selecteer de media die je wilt gebruiken"
|
170 |
|
171 |
+
#: includes/class-yith-wcan-admin.php:116
|
172 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
173 |
msgid "Use this media"
|
174 |
msgstr "Gebruik deze media"
|
175 |
|
176 |
+
#: includes/class-yith-wcan-admin.php:184
|
177 |
msgctxt "[Admin] tab name"
|
178 |
msgid "Filter presets"
|
179 |
msgstr "Filter pre-set"
|
180 |
|
181 |
+
#: includes/class-yith-wcan-admin.php:185
|
182 |
msgctxt "[Admin] tab name"
|
183 |
msgid "General settings"
|
184 |
msgstr "Algemene instellingen"
|
185 |
|
186 |
+
#: includes/class-yith-wcan-admin.php:186
|
187 |
#, fuzzy
|
188 |
msgctxt "[Admin] tab name"
|
189 |
msgid "SEO"
|
190 |
msgstr "SEO"
|
191 |
|
192 |
+
#: includes/class-yith-wcan-admin.php:187
|
193 |
msgctxt "[Admin] tab name"
|
194 |
msgid "Premium Version"
|
195 |
msgstr "Premium versie"
|
196 |
|
197 |
+
#: includes/class-yith-wcan-admin.php:191
|
198 |
msgctxt "[Admin] tab name"
|
199 |
msgid "Legacy"
|
200 |
msgstr "Nalatenschap"
|
201 |
|
202 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
203 |
msgctxt "[Admin] Plugin description"
|
204 |
msgid ""
|
205 |
"It allows your users to find the product they are looking for as quickly as "
|
208 |
"Het laat je gebruikers het product het product dat ze zoeken, zo snel "
|
209 |
"mogelijk vinden."
|
210 |
|
211 |
+
#: includes/class-yith-wcan-admin.php:211
|
212 |
msgctxt "[HELP TAB] Video title"
|
213 |
msgid ""
|
214 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
215 |
"the shop page:</b>"
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: includes/class-yith-wcan-admin.php:329
|
219 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
220 |
msgid "item"
|
221 |
msgstr "Item"
|
222 |
|
223 |
+
#: includes/class-yith-wcan-admin.php:330
|
224 |
msgctxt "[Admin] Preset table empty message second line"
|
225 |
msgid "But don't worry, here you can create your first one!"
|
226 |
msgstr "Maar geen zorgen, je kunt hier je eerste aanmaken!"
|
227 |
|
228 |
+
#: includes/class-yith-wcan-admin.php:480
|
229 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
230 |
msgid "Clear Product Filter transients"
|
231 |
msgstr "Product Filter transients legen"
|
232 |
|
233 |
+
#: includes/class-yith-wcan-admin.php:486
|
234 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
235 |
msgid "Run filter widgets upgrade"
|
236 |
msgstr "Filter widgets upgrade uitvoeren"
|
237 |
|
238 |
+
#: includes/class-yith-wcan-admin.php:481
|
239 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
240 |
msgid "Clear"
|
241 |
msgstr "Wissen"
|
242 |
|
243 |
+
#: includes/class-yith-wcan-admin.php:487
|
244 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
245 |
msgid "Run"
|
246 |
msgstr "Uitvoeren"
|
247 |
|
248 |
+
#: includes/class-yith-wcan-admin.php:482
|
249 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
250 |
msgid ""
|
251 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
257 |
"configuratie van je product hebt gewijzigd en filters niet de verwachte "
|
258 |
"resultaten weergeven."
|
259 |
|
260 |
+
#: includes/class-yith-wcan-admin.php:488
|
261 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
262 |
msgid ""
|
263 |
"This will create a preset for any sidebar of your shop containing filter "
|
267 |
"filter widgets bevat; de preset wordt geconfigureerd om te voldoen aan de "
|
268 |
"widgets specificaties"
|
269 |
|
270 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
271 |
msgctxt "[Admin] Filter edit form"
|
272 |
msgid "Taxonomy"
|
273 |
msgstr "Taxonomie"
|
274 |
|
275 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
276 |
msgctxt "[Admin] Filter edit form"
|
277 |
msgid "Checkbox"
|
278 |
msgstr "Keuzevakje"
|
279 |
|
280 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
281 |
msgctxt "[Admin] Filter edit form"
|
282 |
msgid "Select"
|
283 |
msgstr "Selecteren"
|
284 |
|
285 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
286 |
msgctxt "[Admin] Filter edit form"
|
287 |
msgid "Text"
|
288 |
msgstr "Tekst"
|
289 |
|
290 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
291 |
msgctxt "[Admin] Filter edit form"
|
292 |
msgid "Color Swatches"
|
293 |
msgstr "Kleur swatches"
|
294 |
|
295 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
296 |
msgctxt "[Admin] Filter edit form"
|
297 |
msgid "Label"
|
298 |
msgstr "Label"
|
307 |
msgid "Enter a name to identify this filter"
|
308 |
msgstr "Naam invoeren voor deze filter"
|
309 |
|
310 |
+
#: plugin-options/filter-options.php:40
|
311 |
msgctxt "[Admin] Filter edit form"
|
312 |
msgid "Filter for"
|
313 |
msgstr "Filter voor"
|
314 |
|
315 |
+
#: plugin-options/filter-options.php:44
|
316 |
msgctxt "[Admin] Filter edit form"
|
317 |
msgid "Select the parameters you wish to filter for"
|
318 |
msgstr "Selecteer de parameters je wilt filteren voor"
|
319 |
|
320 |
+
#: plugin-options/filter-options.php:49
|
321 |
msgctxt "[Admin] Filter edit form"
|
322 |
msgid "Choose taxonomy"
|
323 |
msgstr "Kies taxonomie"
|
324 |
|
325 |
+
#: plugin-options/filter-options.php:53
|
326 |
msgctxt "[Admin] Filter edit form"
|
327 |
msgid "Select which taxonomy to use for this filter"
|
328 |
msgstr "Selecteer welke taxonomie je wilt gebruiken voor deze filter"
|
329 |
|
330 |
+
#: plugin-options/filter-options.php:58
|
331 |
msgctxt "[Admin] Filter edit form"
|
332 |
msgid "Auto-populate with all terms"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: plugin-options/filter-options.php:60
|
336 |
msgctxt "[Admin] Filter edit form"
|
337 |
msgid ""
|
338 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
341 |
"well.</span>"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: plugin-options/filter-options.php:69
|
345 |
msgctxt "[Admin] Filter edit form"
|
346 |
msgid "Choose terms"
|
347 |
msgstr "Kies termen"
|
348 |
|
349 |
+
#: plugin-options/filter-options.php:74
|
350 |
msgctxt "[Admin] Filter edit form"
|
351 |
msgid "Select which terms to use for filtering"
|
352 |
msgstr "Selecteer welke termen je wilt gebruiken voor filteren"
|
353 |
|
354 |
+
#: plugin-options/filter-options.php:78
|
355 |
msgctxt "[Admin] Filter edit form"
|
356 |
msgid "Filter type"
|
357 |
msgstr "Filter type"
|
358 |
|
359 |
+
#: plugin-options/filter-options.php:82
|
360 |
msgctxt "[Admin] Filter edit form"
|
361 |
msgid "Select the filter type for this filter"
|
362 |
msgstr "Selecteer het filter type voor deze filter"
|
363 |
|
364 |
+
#: plugin-options/filter-options.php:86
|
365 |
#, fuzzy
|
366 |
msgctxt "[Admin] Filter edit form"
|
367 |
msgid "Labels"
|
368 |
msgstr "Labels"
|
369 |
|
370 |
+
#: plugin-options/filter-options.php:89
|
371 |
#, fuzzy
|
372 |
msgctxt "[Admin] Filter edit form"
|
373 |
msgid "Show below"
|
374 |
msgstr "Resultaten weergeven"
|
375 |
|
376 |
+
#: plugin-options/filter-options.php:90
|
377 |
#, fuzzy
|
378 |
msgctxt "[Admin] Filter edit form"
|
379 |
msgid "Show on the right"
|
380 |
msgstr "Toon item telling"
|
381 |
|
382 |
+
#: plugin-options/filter-options.php:91
|
383 |
msgctxt "[Admin] Filter edit form"
|
384 |
msgid "Hide"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: plugin-options/filter-options.php:93
|
388 |
#, fuzzy
|
389 |
msgctxt "[Admin] Filter edit form"
|
390 |
msgid "Choose if and where to show the label inside your filter"
|
391 |
msgstr "Kies de stijl van de filter binnen de widgets"
|
392 |
|
393 |
+
#: plugin-options/filter-options.php:97
|
394 |
msgctxt "[Admin] Filter edit form"
|
395 |
msgid "Columns number"
|
396 |
msgstr "Kolommen nummer"
|
397 |
|
398 |
+
#: plugin-options/filter-options.php:102
|
399 |
msgctxt "[Admin] Filter edit form"
|
400 |
msgid "Set the number of items per row you want to show for this design"
|
401 |
msgstr "Kies het aantal items per rij dat je wilt tonen voor dit ontwerp"
|
402 |
|
403 |
+
#: plugin-options/filter-options.php:106
|
404 |
msgctxt "[Admin] Filter edit form"
|
405 |
msgid "Customize terms"
|
406 |
msgstr "Aangepaste termen"
|
407 |
|
408 |
+
#: plugin-options/filter-options.php:109
|
409 |
msgctxt "[Admin] Filter edit form"
|
410 |
msgid ""
|
411 |
"Configure your terms individually; system will otherwise use default labels/"
|
419 |
"this option and use the boxes below</span>"
|
420 |
msgstr ""
|
421 |
|
422 |
+
#: plugin-options/filter-options.php:119
|
423 |
#, fuzzy
|
424 |
msgctxt "[Admin] Filter edit form"
|
425 |
msgid "Terms options"
|
426 |
msgstr "Bestelling opties"
|
427 |
|
428 |
+
#: plugin-options/filter-options.php:125
|
429 |
msgctxt "[Admin] Filter edit form"
|
430 |
msgid "Show hierarchy"
|
431 |
msgstr "Toon hiërarchie "
|
432 |
|
433 |
+
#: plugin-options/filter-options.php:128
|
434 |
msgctxt "[Admin] Filter edit form"
|
435 |
msgid "No, show all terms in same level"
|
436 |
msgstr "Nee, toon alle termen in hetzelfde niveau"
|
437 |
|
438 |
+
#: plugin-options/filter-options.php:129
|
439 |
msgctxt "[Admin] Filter edit form"
|
440 |
msgid "No, show only parent terms"
|
441 |
msgstr "Nee, alleen hoofd-termen tonen"
|
442 |
|
443 |
+
#: plugin-options/filter-options.php:130
|
444 |
msgctxt "[Admin] Filter edit form"
|
445 |
msgid "Yes"
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: plugin-options/filter-options.php:132
|
449 |
msgctxt "[Admin] Filter edit form"
|
450 |
msgid "Choose how to show terms hierarchy"
|
451 |
msgstr "Bepaal hoe je de termen hiërarchie wilt tonen"
|
452 |
|
453 |
+
#: plugin-options/filter-options.php:136
|
454 |
msgctxt "[Admin] Filter edit form"
|
455 |
msgid "Allow multiple selection"
|
456 |
msgstr "Meervoudige selectie toestaan"
|
457 |
|
458 |
+
#: plugin-options/filter-options.php:138
|
459 |
msgctxt "[Admin] Filter edit form"
|
460 |
msgid "Enable if the user can select multiple terms when filtering products"
|
461 |
msgstr ""
|
462 |
"Inschakelen als de gebruiker meerdere termen can selecteren bij het filteren "
|
463 |
"van producten"
|
464 |
|
465 |
+
#: plugin-options/filter-options.php:142
|
466 |
msgctxt "[Admin] Filter edit form"
|
467 |
msgid "Multiselect relation"
|
468 |
msgstr "Multi-selecteren relatie"
|
469 |
|
470 |
+
#: plugin-options/filter-options.php:148
|
471 |
msgctxt "[Admin] Filter edit form"
|
472 |
msgid "Choose how multiple terms selection should behave"
|
473 |
msgstr "Bepaal het gedrag van meervoudige termen selectie"
|
474 |
|
475 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
476 |
msgctxt "[Admin] Filter edit form, sorting options"
|
477 |
msgid "Default sorting"
|
478 |
msgstr "Standaard sortering"
|
479 |
|
480 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
481 |
msgctxt "[Admin] Filter edit form, sorting options"
|
482 |
msgid "Sort by popularity"
|
483 |
msgstr "Sorteren op populariteit"
|
484 |
|
485 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
486 |
msgctxt "[Admin] Filter edit form, sorting options"
|
487 |
msgid "Sort by average rating"
|
488 |
msgstr "Sorteren op gemiddelde waardering"
|
489 |
|
490 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
491 |
msgctxt "[Admin] Filter edit form, sorting options"
|
492 |
msgid "Sort by latest"
|
493 |
msgstr "Sorteren op laaste"
|
494 |
|
495 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
496 |
msgctxt "[Admin] Filter edit form, sorting options"
|
497 |
msgid "Sort by price: low to high"
|
498 |
msgstr "Sorteren op prijs: laag naar hoog"
|
499 |
|
500 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
501 |
msgctxt "[Admin] Filter edit form, sorting options"
|
502 |
msgid "Sort by price: high to low"
|
503 |
msgstr "Sorteren op prijs: hoog naar laag"
|
504 |
|
505 |
+
#: includes/class-yith-wcan-filter.php:116
|
506 |
msgctxt "[Admin] Default filter title"
|
507 |
msgid "New filter"
|
508 |
msgstr "Nieuwe filter"
|
509 |
|
510 |
+
#: includes/class-yith-wcan-frontend.php:591
|
511 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
512 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
513 |
msgid "All"
|
514 |
msgstr "Alle"
|
515 |
|
516 |
+
#: includes/class-yith-wcan-frontend.php:592
|
517 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
518 |
msgid "Search..."
|
519 |
msgstr "Zoeken..."
|
520 |
|
521 |
+
#: includes/class-yith-wcan-frontend.php:593
|
522 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
523 |
msgid "No item found"
|
524 |
msgstr "Geen item gevonden"
|
525 |
|
526 |
#. translators: 1. Number of items to show.
|
527 |
+
#: includes/class-yith-wcan-frontend.php:595
|
528 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
529 |
msgid "Show %d more"
|
530 |
msgstr "Toon %d meer"
|
531 |
|
532 |
+
#: includes/class-yith-wcan-frontend.php:596
|
533 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
534 |
msgid "Close"
|
535 |
msgstr "Sluiten"
|
536 |
|
537 |
+
#: includes/class-yith-wcan-frontend.php:597
|
538 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
539 |
msgid "Save"
|
540 |
msgstr ""
|
541 |
|
542 |
+
#: includes/class-yith-wcan-frontend.php:598
|
543 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
544 |
msgid "Show results"
|
545 |
msgstr "Resultaten weergeven"
|
546 |
|
547 |
+
#: includes/class-yith-wcan-frontend.php:599
|
548 |
msgctxt ""
|
549 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
550 |
"selection"
|
551 |
msgid "Clear"
|
552 |
msgstr "Wissen"
|
553 |
|
554 |
+
#: includes/class-yith-wcan-frontend.php:600
|
555 |
msgctxt ""
|
556 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
557 |
"selection"
|
558 |
msgid "Clear All"
|
559 |
msgstr "Alles wissen"
|
560 |
|
561 |
+
#: includes/class-yith-wcan-install.php:95
|
562 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
563 |
msgid "Default preset"
|
564 |
msgstr "Standaard pre-set"
|
565 |
|
566 |
#. translators: 1. Taxonomy name.
|
567 |
+
#: includes/class-yith-wcan-install.php:285
|
568 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
569 |
msgid "Filter by %s"
|
570 |
msgstr "Filter op %s"
|
571 |
|
572 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
573 |
#, fuzzy
|
574 |
msgctxt "[Admin] Label in new preset page"
|
575 |
msgid "Default"
|
585 |
msgid "Enter a name to identify this filter preset"
|
586 |
msgstr "Naam invoeren voor deze filter pre-set"
|
587 |
|
588 |
+
#: templates/admin/preset-filters.php:22
|
589 |
msgctxt "[Admin] Label in new preset page"
|
590 |
msgid "Filters of this preset"
|
591 |
msgstr "Filters van deze pre-set"
|
592 |
|
593 |
+
#: includes/class-yith-wcan-presets.php:95
|
594 |
+
#: includes/class-yith-wcan-presets.php:100
|
595 |
msgctxt "[Admin] name of presets custom post type"
|
596 |
msgid "Filter presets"
|
597 |
msgstr "Filter pre-sets"
|
598 |
|
599 |
+
#: includes/class-yith-wcan-presets.php:96
|
600 |
msgctxt "[Admin] singular name of presets custom post type"
|
601 |
msgid "Filter preset"
|
602 |
msgstr "Filter pre-set"
|
603 |
|
604 |
+
#: includes/class-yith-wcan-presets.php:97
|
605 |
msgctxt "[Admin] add new filter preset label"
|
606 |
msgid "Add new preset"
|
607 |
msgstr "Nieuwe pre-set toevoegen"
|
608 |
|
609 |
+
#: includes/class-yith-wcan-presets.php:139
|
610 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
611 |
msgid "Convert widgets in a preset"
|
612 |
msgstr "Widgets omzetten in een pre-set"
|
613 |
|
614 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
615 |
msgctxt ""
|
616 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
617 |
"not exist"
|
619 |
msgstr "Ongeldige pre-set"
|
620 |
|
621 |
#. translators: 1. Title of original preset.
|
622 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
623 |
msgctxt "[ADMIN] Title of the cloned preset"
|
624 |
msgid "%s - Copy"
|
625 |
msgstr "%s - Kopieer"
|
626 |
|
627 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
628 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
629 |
msgid "YITH AJAX Filters Preset"
|
630 |
msgstr "YITH AJAX Filters Pre-set"
|
631 |
|
632 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
633 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
634 |
msgid "YITH AJAX Filters Reset Button"
|
635 |
msgstr "YITH AJAX Filters Reset Knop"
|
636 |
|
637 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
638 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
639 |
msgctxt "[ELEMENTOR] Default preset option"
|
640 |
msgid "Choose an option"
|
641 |
msgstr "Kies een optie"
|
642 |
|
643 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
644 |
msgctxt "[ELEMENTOR] Section title"
|
645 |
msgid "Filters"
|
646 |
msgstr "Filters"
|
647 |
|
648 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
649 |
msgctxt "[ELEMENTOR] Section title"
|
650 |
msgid "General"
|
651 |
msgstr "Algemeen"
|
652 |
|
653 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
654 |
msgctxt "[ELEMENTOR] Control label"
|
655 |
msgid "Preset"
|
656 |
msgstr "Pre-set"
|
657 |
|
658 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
659 |
msgctxt "[ELEMENTOR] Widget description"
|
660 |
msgid ""
|
661 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
663 |
"Deze widget zal de \"Filters resetten\" knop weergeven, waar deze ook "
|
664 |
"geplaatst is"
|
665 |
|
666 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
667 |
msgctxt "[ELEMENTOR] Widget description"
|
668 |
msgid ""
|
669 |
"It will allow users to reset the filer selection; it will only appear when "
|
672 |
"Het laat gebruikers de filter selectie resetten; het verschijnt alleen "
|
673 |
"wanneer er een actieve filter is."
|
674 |
|
675 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
676 |
msgctxt "[ELEMENTOR] Widget description"
|
677 |
msgid ""
|
678 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
682 |
"plaatsen, wanneer de \"Resetten knop positie' optie niet werkt voor de loop "
|
683 |
"van je producten "
|
684 |
|
685 |
+
#: includes/functions-yith-wcan.php:112
|
686 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
687 |
msgid "Color 1"
|
688 |
msgstr "Kleur 1"
|
689 |
|
690 |
+
#: includes/functions-yith-wcan.php:112
|
691 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
692 |
msgid "Color 2"
|
693 |
msgstr "Kleur 2"
|
694 |
|
695 |
+
#: includes/functions-yith-wcan.php:1026
|
696 |
msgctxt "[FRONTEND] Star rating template"
|
697 |
msgid "star"
|
698 |
msgid_plural "stars"
|
700 |
msgstr[1] "sterren"
|
701 |
|
702 |
#. translators: 1. Rating.
|
703 |
+
#: includes/functions-yith-wcan.php:1041
|
704 |
msgctxt "[FRONTEND] Star rating label"
|
705 |
msgid "Rated %s out of 5"
|
706 |
msgstr "Waardering %s van de 5"
|
707 |
|
708 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
709 |
msgctxt "[GUTENBERG]: block name"
|
710 |
msgid "YITH AJAX Filters Preset"
|
711 |
msgstr "YITH AJAX Filters Pre-set"
|
712 |
|
713 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
714 |
msgctxt "[GUTENBERG]: block name"
|
715 |
msgid "YITH Reset Filters Button"
|
716 |
msgstr "YITH Reset Filters knop"
|
717 |
|
718 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
719 |
msgctxt "[GUTENBERG]: block description"
|
720 |
msgid "Show filters from a preset"
|
721 |
msgstr "Filters tonen van een pre-set"
|
722 |
|
723 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
724 |
msgctxt "[GUTENBERG]: block description"
|
725 |
msgid ""
|
726 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
733 |
"'Filters resetten' op je pagina te plaatsen, als de optie 'Knop positie "
|
734 |
"resetten' niet werkt voor je producten loop"
|
735 |
|
736 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
737 |
msgctxt "[GUTENBERG]: attribute description"
|
738 |
msgid "Preset"
|
739 |
msgstr "Pre-set"
|
740 |
|
741 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
742 |
msgctxt "[Admin] Preset table column header"
|
743 |
msgid "Preset name"
|
744 |
msgstr "Naam pre-set"
|
745 |
|
746 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
747 |
msgctxt "[Admin] Preset table column header"
|
748 |
msgid "Shortcode"
|
749 |
msgstr "Shortcode"
|
750 |
|
751 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
752 |
msgctxt "[Admin] Preset edit action label"
|
753 |
msgid "Edit this preset"
|
754 |
msgstr "Deze pre-set bewerken"
|
755 |
|
756 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
757 |
msgctxt "[Admin] Preset clone action label"
|
758 |
msgid "Clone this preset"
|
759 |
msgstr "Deze pre-set clonen"
|
760 |
|
761 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
762 |
msgctxt "[Admin] Preset delete action label"
|
763 |
msgid "Delete this preset"
|
764 |
msgstr "Deze pre-set verwijderen"
|
765 |
|
766 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
767 |
msgctxt "[Admin] Preset delete confirm label"
|
768 |
msgid "Are you sure you want to delete this preset?"
|
769 |
msgstr "Weet je zeker dat je deze pre-set wilt verwijderen?"
|
770 |
|
771 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
772 |
msgctxt "[Admin] on-off yes"
|
773 |
msgid "YES"
|
774 |
msgstr "JA"
|
775 |
|
776 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
777 |
msgctxt "[Admin] on-off no"
|
778 |
msgid "NO"
|
779 |
msgstr "NEE"
|
780 |
|
781 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
782 |
msgctxt ""
|
783 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
784 |
msgid "filter preset"
|
785 |
msgstr "Filter pre-set"
|
786 |
|
787 |
+
#: templates/admin/preset-filters.php:31
|
788 |
msgctxt ""
|
789 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
790 |
msgid "filter"
|
791 |
msgstr "filter"
|
792 |
|
793 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
794 |
msgctxt "[Admin] New preset button label"
|
795 |
msgid "Create a new preset"
|
796 |
msgstr "Nieuwe pre-set aanmaken"
|
797 |
|
798 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
799 |
msgctxt "[ADMIN] Name of the preset widget"
|
800 |
msgid "YITH AJAX Filters Preset"
|
801 |
msgstr "YITH AJAX Filters Pre-set"
|
802 |
|
803 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
804 |
msgctxt "[ADMIN] Preset widget options"
|
805 |
msgid "Preset"
|
806 |
msgstr "Pre-set"
|
807 |
|
808 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
809 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
810 |
msgctxt "[ADMIN] Preset widget options"
|
811 |
msgid ""
|
812 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
815 |
"Ga a.u.b. naar het <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product "
|
816 |
"Filter -> Pre-sets</a> en maak je eerste pre-set aan"
|
817 |
|
818 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
819 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
820 |
msgid "YITH AJAX Product Filter"
|
821 |
msgstr "YITH AJAX Product Filter"
|
822 |
|
823 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
824 |
#, fuzzy
|
825 |
msgctxt ""
|
826 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
827 |
msgid "AND"
|
828 |
msgstr "EN"
|
829 |
|
830 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
831 |
msgctxt "[Plugin Name]"
|
832 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
833 |
msgstr ""
|
834 |
"Alle filters terugzetten die zijn ingesteld door YITH WooCommerce AJAX "
|
835 |
"Product Filter"
|
836 |
|
837 |
+
#: plugin-options/filter-options.php:145
|
838 |
#, fuzzy
|
839 |
msgctxt ""
|
840 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
842 |
msgstr ""
|
843 |
"EN - Resultaten moeten matchen met alle geselecteerde termen tegelijkertijd"
|
844 |
|
845 |
+
#: plugin-options/filter-options.php:146
|
846 |
#, fuzzy
|
847 |
msgctxt ""
|
848 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
1127 |
msgctxt "[ADMIN] Premium tab"
|
1128 |
msgid ""
|
1129 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1130 |
+
"view<br/>\n"
|
1131 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1132 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1133 |
+
"range (based on their budget availability)<br/>\n"
|
1134 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1135 |
"attributes available in your store, like color and size. For the color "
|
1136 |
"filter, you can either choose square or circular color swatches or use "
|
1137 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1138 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1139 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1140 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1141 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1142 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1143 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1144 |
+
"filter products and view only those with a discount<br/>\n"
|
1145 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1146 |
"filter products based on their needs and exclude out-of-stock products from "
|
1147 |
"the list"
|
1267 |
"easier to share)"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
+
#: templates/admin/preset-edit.php:31
|
1271 |
msgctxt "[Admin] Back link in new preset page"
|
1272 |
msgid "< back to preset list"
|
1273 |
msgstr "< terug naar pre-set lijst"
|
1274 |
|
1275 |
+
#: templates/admin/preset-edit.php:38
|
1276 |
msgctxt "[ADMIN] Title for new preset page"
|
1277 |
msgid "Edit filter preset"
|
1278 |
msgstr "Filter pre-set bewerken"
|
1279 |
|
1280 |
+
#: templates/admin/preset-edit.php:40
|
1281 |
msgctxt "[ADMIN] Title for new preset page"
|
1282 |
msgid "Add new filter preset"
|
1283 |
msgstr "Nieuwe filter pre-set toevoegen"
|
1284 |
|
1285 |
+
#: templates/admin/preset-edit.php:47
|
1286 |
msgctxt "[ADMIN] Preset save message"
|
1287 |
msgid "Preset saved correctly"
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
#: templates/admin/preset-edit.php:93
|
1291 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1292 |
msgid "Save preset"
|
1293 |
msgstr "Pre-set opslaan"
|
1294 |
|
1295 |
+
#: templates/admin/preset-empty-content.php:29
|
1296 |
msgctxt "Alt text for empty preset image"
|
1297 |
msgid "Empty preset"
|
1298 |
msgstr "Lege pre-set"
|
1299 |
|
1300 |
#. translators: 1. Missing item name.
|
1301 |
+
#: templates/admin/preset-empty-content.php:35
|
1302 |
msgctxt "[Admin] Preset table empty message"
|
1303 |
msgid "You don't have any %s yet."
|
1304 |
msgstr "Je hebt nog geen %s ingesteld."
|
1305 |
|
1306 |
+
#: templates/admin/preset-filter-term.php:30
|
1307 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1308 |
msgid "Label"
|
1309 |
msgstr "Label"
|
1310 |
|
1311 |
+
#: templates/admin/preset-filter-term.php:35
|
1312 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1313 |
msgid "Tooltip"
|
1314 |
msgstr "Tooltip"
|
1315 |
|
1316 |
+
#: templates/admin/preset-filter-term.php:41
|
1317 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1318 |
msgid "Color"
|
1319 |
msgstr "Kleur"
|
1320 |
|
1321 |
+
#: templates/admin/preset-filter.php:91
|
1322 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1323 |
msgid "Save Filter"
|
1324 |
msgstr "Filter opslaan"
|
1325 |
|
1326 |
+
#: templates/admin/preset-filter.php:92
|
1327 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1328 |
msgid "Delete Filter"
|
1329 |
msgstr "Filter verwijderen"
|
1330 |
|
1331 |
+
#: templates/admin/preset-filters.php:33
|
1332 |
msgctxt "[Admin] New filter button label"
|
1333 |
msgid "Add a new filter"
|
1334 |
msgstr "Nieuwe filter toevoegen"
|
1335 |
|
1336 |
+
#: templates/admin/preset-filters.php:57
|
1337 |
msgctxt "[Admin] Add new filter in new preset page"
|
1338 |
msgid "+ Add filter"
|
1339 |
msgstr "+ Nieuwe filter toevoegen"
|
1345 |
msgid "See %d more filters"
|
1346 |
msgstr "Voor filters"
|
1347 |
|
1348 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1349 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1350 |
msgid "Use the new filter preset feature for your filters"
|
1351 |
msgstr "Gebruik de nieuwe filter pre-set functie voor je filters"
|
1352 |
|
1353 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1354 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1355 |
msgid ""
|
1356 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1364 |
"de shortcode, het Gutenberg Blok of de Elementor widget."
|
1365 |
|
1366 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1367 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1368 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1369 |
msgid ""
|
1370 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1375 |
"gebruiken."
|
1376 |
|
1377 |
#. translators: 1. Url to docs.
|
1378 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1379 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1380 |
msgid ""
|
1381 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1384 |
"We raden je aan om <a href=\"%1$s\">de documentatie te lezen</a> om meer te "
|
1385 |
"weten te komen over deze nieuwe optie."
|
1386 |
|
1387 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1388 |
#, fuzzy
|
1389 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1390 |
msgid ""
|
1399 |
"tabel..<br/><b>Geen zorgen, gegevens zullen niet verloren gaan tijdens het "
|
1400 |
"proces.</b>"
|
1401 |
|
1402 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1403 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1404 |
msgid ""
|
1405 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1407 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1411 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1412 |
msgid "Convert your widgets in a preset now"
|
1413 |
msgstr "Je widgets nu omzetten naar een pre-set"
|
1414 |
|
1415 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1416 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1417 |
msgid "No thanks"
|
1418 |
msgstr "Nee bedankt"
|
1419 |
|
1420 |
+
#: templates/filters/global/reset-filters.php:24
|
1421 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1422 |
msgid "Reset filters"
|
1423 |
msgstr "Filters resetten"
|
1424 |
|
1425 |
+
#~ msgctxt "[Admin] Menu title"
|
1426 |
+
#~ msgid "Ajax Product Filter"
|
1427 |
+
#~ msgstr "Ajax Product Filter"
|
1428 |
+
|
1429 |
#~ msgctxt "[FRONTEND] General option for terms dropdown"
|
1430 |
#~ msgid "All"
|
1431 |
#~ msgstr "Alle"
|
Binary file
|
@@ -3,7 +3,7 @@ msgstr ""
|
|
3 |
"Project-Id-Version: YITH WooCommerce Ajax Product filter\n"
|
4 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
5 |
"ajax-product-filter\n"
|
6 |
-
"POT-Creation-Date: 2021-
|
7 |
"PO-Revision-Date: 2019-06-06 10:16+0200\n"
|
8 |
"Last-Translator: Caner Öncel <caneroncel@gmail.com>\n"
|
9 |
"Language-Team: Caner Öncel <caneroncel@gmail.com>\n"
|
@@ -21,106 +21,106 @@ msgstr ""
|
|
21 |
"X-Poedit-SearchPath-0: .\n"
|
22 |
"X-Poedit-SearchPathExcluded-0: plugin-fw\n"
|
23 |
|
24 |
-
#: includes/data-stores/class
|
25 |
msgid "Draft Preset"
|
26 |
msgstr ""
|
27 |
|
28 |
# @ yit
|
29 |
-
#: includes/functions
|
30 |
-
#: includes/functions
|
31 |
msgid "Term"
|
32 |
msgstr "Terim"
|
33 |
|
34 |
# @ yit
|
35 |
-
#: includes/functions
|
36 |
-
#: includes/widgets/class
|
37 |
msgid "Color"
|
38 |
msgstr "Renk"
|
39 |
|
40 |
# @ yit
|
41 |
-
#: includes/functions
|
42 |
msgid "Labels"
|
43 |
msgstr "Etiketler"
|
44 |
|
45 |
-
#: includes/widgets/class
|
46 |
msgid "Filter the list of products without reloading the page"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: includes/widgets/class
|
50 |
msgid "Filters:"
|
51 |
msgstr ""
|
52 |
|
53 |
# @ yit
|
54 |
-
#: includes/widgets/class
|
55 |
msgid "List"
|
56 |
msgstr "Liste"
|
57 |
|
58 |
# @ yit
|
59 |
-
#: includes/widgets/class
|
60 |
msgid "Label"
|
61 |
msgstr "Etiket"
|
62 |
|
63 |
-
#: includes/widgets/class
|
64 |
msgid "Dropdown"
|
65 |
msgstr "Açılır Menü"
|
66 |
|
67 |
# @ yit
|
68 |
-
#: includes/widgets/class
|
69 |
-
#: includes/widgets/class
|
70 |
msgid "Title"
|
71 |
msgstr "Başlık"
|
72 |
|
73 |
# @ yit
|
74 |
-
#: includes/widgets/class
|
75 |
msgid "Type:"
|
76 |
msgstr "Tür:"
|
77 |
|
78 |
# @ yit
|
79 |
-
#: includes/widgets/class
|
80 |
msgid "Query Type:"
|
81 |
msgstr "Sorgu Tipi:"
|
82 |
|
83 |
# @ yit
|
84 |
-
#: includes/widgets/class
|
85 |
msgid "OR"
|
86 |
msgstr "VEYA"
|
87 |
|
88 |
# @ yit
|
89 |
-
#: includes/widgets/class
|
90 |
msgid "Attribute:"
|
91 |
msgstr "Özellikler:"
|
92 |
|
93 |
-
#: includes/widgets/class
|
94 |
msgid "Display (default All):"
|
95 |
msgstr "Görüntüleme (Varsayılan tümü):"
|
96 |
|
97 |
-
#: includes/widgets/class
|
98 |
msgid "All (no hierarchical)"
|
99 |
msgstr "Tümü"
|
100 |
|
101 |
-
#: includes/widgets/class
|
102 |
msgid "All (hierarchical)"
|
103 |
msgstr ""
|
104 |
|
105 |
-
#: includes/widgets/class
|
106 |
msgid "Only Parent"
|
107 |
msgstr "Sadece Ebeveyn"
|
108 |
|
109 |
-
#: includes/widgets/class
|
110 |
msgid "CSS custom class"
|
111 |
msgstr ""
|
112 |
|
113 |
# @ yit
|
114 |
-
#: includes/widgets/class
|
115 |
#, fuzzy
|
116 |
msgid "YITH AJAX Reset Filter"
|
117 |
msgstr "YITH WooCommerce Ajax Navigation"
|
118 |
|
119 |
-
#: includes/widgets/class
|
120 |
msgid "Reset All Filters"
|
121 |
msgstr "Tüm Filtreleri Sıfırla"
|
122 |
|
123 |
-
#: includes/widgets/class
|
124 |
msgid "Button Label"
|
125 |
msgstr "Buton Metni"
|
126 |
|
@@ -146,120 +146,113 @@ msgid ""
|
|
146 |
"your e-commerce shop on <strong>YITH</strong></a>"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: includes/class
|
150 |
msgctxt "[Admin] Copy confirmation message"
|
151 |
msgid "Content copied to your clipboard"
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: includes/class
|
155 |
msgctxt "[Admin] Confirm filter delete message"
|
156 |
msgid "Are you sure you want to delete this item?"
|
157 |
msgstr ""
|
158 |
|
159 |
#. translators: 1. Number of items that will be added.
|
160 |
-
#: includes/class
|
161 |
msgctxt "[Admin] Confirm add all terms message"
|
162 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class
|
166 |
msgctxt "[Admin] Error message"
|
167 |
msgid "\"Filter title\" is a required field"
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: includes/class
|
171 |
msgctxt "[Admin] Message shown when filter has empty title"
|
172 |
msgid "< no title >"
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: includes/class
|
176 |
msgctxt "[Admin] Media library title, when selecting images"
|
177 |
msgid "Select media you want to use"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: includes/class
|
181 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
182 |
msgid "Use this media"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: includes/class
|
186 |
#, fuzzy
|
187 |
msgctxt "[Admin] tab name"
|
188 |
msgid "Filter presets"
|
189 |
msgstr "Filtre Listesi:"
|
190 |
|
191 |
-
#: includes/class
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "General settings"
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/class
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "SEO"
|
199 |
msgstr ""
|
200 |
|
201 |
-
#: includes/class
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Premium Version"
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: includes/class
|
207 |
msgctxt "[Admin] tab name"
|
208 |
msgid "Legacy"
|
209 |
msgstr ""
|
210 |
|
211 |
-
|
212 |
-
#: includes/class.yith-wcan-admin.php:198
|
213 |
-
#, fuzzy
|
214 |
-
msgctxt "[Admin] Menu title"
|
215 |
-
msgid "Ajax Product Filter"
|
216 |
-
msgstr "YITH WooCommerce Ajax Navigation"
|
217 |
-
|
218 |
-
#: includes/class.yith-wcan-admin.php:199
|
219 |
msgctxt "[Admin] Plugin description"
|
220 |
msgid ""
|
221 |
"It allows your users to find the product they are looking for as quickly as "
|
222 |
"possible."
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/class
|
226 |
msgctxt "[HELP TAB] Video title"
|
227 |
msgid ""
|
228 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
229 |
"the shop page:</b>"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: includes/class
|
233 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
234 |
msgid "item"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: includes/class
|
238 |
msgctxt "[Admin] Preset table empty message second line"
|
239 |
msgid "But don't worry, here you can create your first one!"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: includes/class
|
243 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
244 |
msgid "Clear Product Filter transients"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: includes/class
|
248 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
249 |
msgid "Run filter widgets upgrade"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/class
|
253 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
254 |
msgid "Clear"
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/class
|
258 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
259 |
msgid "Run"
|
260 |
msgstr ""
|
261 |
|
262 |
-
#: includes/class
|
263 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
264 |
msgid ""
|
265 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -267,42 +260,42 @@ msgid ""
|
|
267 |
"and filters do not display the expected results."
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: includes/class
|
271 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
272 |
msgid ""
|
273 |
"This will create a preset for any sidebar of your shop containing filter "
|
274 |
"widgets; preset will be configured to match widgets specifications"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/class
|
278 |
msgctxt "[Admin] Filter edit form"
|
279 |
msgid "Taxonomy"
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: includes/class
|
283 |
msgctxt "[Admin] Filter edit form"
|
284 |
msgid "Checkbox"
|
285 |
msgstr ""
|
286 |
|
287 |
# @ yit
|
288 |
-
#: includes/class
|
289 |
#, fuzzy
|
290 |
msgctxt "[Admin] Filter edit form"
|
291 |
msgid "Select"
|
292 |
msgstr "Bir tarih seçin"
|
293 |
|
294 |
-
#: includes/class
|
295 |
msgctxt "[Admin] Filter edit form"
|
296 |
msgid "Text"
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: includes/class
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Color Swatches"
|
302 |
msgstr ""
|
303 |
|
304 |
# @ yit
|
305 |
-
#: includes/class
|
306 |
#, fuzzy
|
307 |
msgctxt "[Admin] Filter edit form"
|
308 |
msgid "Label"
|
@@ -318,33 +311,33 @@ msgctxt "[Admin] Filter edit form"
|
|
318 |
msgid "Enter a name to identify this filter"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: plugin-options/filter-options.php:
|
322 |
#, fuzzy
|
323 |
msgctxt "[Admin] Filter edit form"
|
324 |
msgid "Filter for"
|
325 |
msgstr "Filtre Listesi:"
|
326 |
|
327 |
-
#: plugin-options/filter-options.php:
|
328 |
msgctxt "[Admin] Filter edit form"
|
329 |
msgid "Select the parameters you wish to filter for"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: plugin-options/filter-options.php:
|
333 |
msgctxt "[Admin] Filter edit form"
|
334 |
msgid "Choose taxonomy"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: plugin-options/filter-options.php:
|
338 |
msgctxt "[Admin] Filter edit form"
|
339 |
msgid "Select which taxonomy to use for this filter"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: plugin-options/filter-options.php:
|
343 |
msgctxt "[Admin] Filter edit form"
|
344 |
msgid "Auto-populate with all terms"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: plugin-options/filter-options.php:
|
348 |
msgctxt "[Admin] Filter edit form"
|
349 |
msgid ""
|
350 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -353,70 +346,70 @@ msgid ""
|
|
353 |
"well.</span>"
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: plugin-options/filter-options.php:
|
357 |
msgctxt "[Admin] Filter edit form"
|
358 |
msgid "Choose terms"
|
359 |
msgstr ""
|
360 |
|
361 |
-
#: plugin-options/filter-options.php:
|
362 |
msgctxt "[Admin] Filter edit form"
|
363 |
msgid "Select which terms to use for filtering"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: plugin-options/filter-options.php:
|
367 |
#, fuzzy
|
368 |
msgctxt "[Admin] Filter edit form"
|
369 |
msgid "Filter type"
|
370 |
msgstr "Filtre Listesi:"
|
371 |
|
372 |
-
#: plugin-options/filter-options.php:
|
373 |
msgctxt "[Admin] Filter edit form"
|
374 |
msgid "Select the filter type for this filter"
|
375 |
msgstr ""
|
376 |
|
377 |
# @ yit
|
378 |
-
#: plugin-options/filter-options.php:
|
379 |
#, fuzzy
|
380 |
msgctxt "[Admin] Filter edit form"
|
381 |
msgid "Labels"
|
382 |
msgstr "Etiketler"
|
383 |
|
384 |
-
#: plugin-options/filter-options.php:
|
385 |
msgctxt "[Admin] Filter edit form"
|
386 |
msgid "Show below"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: plugin-options/filter-options.php:
|
390 |
msgctxt "[Admin] Filter edit form"
|
391 |
msgid "Show on the right"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: plugin-options/filter-options.php:
|
395 |
msgctxt "[Admin] Filter edit form"
|
396 |
msgid "Hide"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: plugin-options/filter-options.php:
|
400 |
msgctxt "[Admin] Filter edit form"
|
401 |
msgid "Choose if and where to show the label inside your filter"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: plugin-options/filter-options.php:
|
405 |
msgctxt "[Admin] Filter edit form"
|
406 |
msgid "Columns number"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: plugin-options/filter-options.php:
|
410 |
msgctxt "[Admin] Filter edit form"
|
411 |
msgid "Set the number of items per row you want to show for this design"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: plugin-options/filter-options.php:
|
415 |
msgctxt "[Admin] Filter edit form"
|
416 |
msgid "Customize terms"
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: plugin-options/filter-options.php:
|
420 |
msgctxt "[Admin] Filter edit form"
|
421 |
msgid ""
|
422 |
"Configure your terms individually; system will otherwise use default labels/"
|
@@ -430,155 +423,155 @@ msgid ""
|
|
430 |
"this option and use the boxes below</span>"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: plugin-options/filter-options.php:
|
434 |
msgctxt "[Admin] Filter edit form"
|
435 |
msgid "Terms options"
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: plugin-options/filter-options.php:
|
439 |
msgctxt "[Admin] Filter edit form"
|
440 |
msgid "Show hierarchy"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: plugin-options/filter-options.php:
|
444 |
msgctxt "[Admin] Filter edit form"
|
445 |
msgid "No, show all terms in same level"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: plugin-options/filter-options.php:
|
449 |
msgctxt "[Admin] Filter edit form"
|
450 |
msgid "No, show only parent terms"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: plugin-options/filter-options.php:
|
454 |
msgctxt "[Admin] Filter edit form"
|
455 |
msgid "Yes"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: plugin-options/filter-options.php:
|
459 |
msgctxt "[Admin] Filter edit form"
|
460 |
msgid "Choose how to show terms hierarchy"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: plugin-options/filter-options.php:
|
464 |
msgctxt "[Admin] Filter edit form"
|
465 |
msgid "Allow multiple selection"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: plugin-options/filter-options.php:
|
469 |
msgctxt "[Admin] Filter edit form"
|
470 |
msgid "Enable if the user can select multiple terms when filtering products"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: plugin-options/filter-options.php:
|
474 |
msgctxt "[Admin] Filter edit form"
|
475 |
msgid "Multiselect relation"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: plugin-options/filter-options.php:
|
479 |
msgctxt "[Admin] Filter edit form"
|
480 |
msgid "Choose how multiple terms selection should behave"
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/class
|
484 |
msgctxt "[Admin] Filter edit form, sorting options"
|
485 |
msgid "Default sorting"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: includes/class
|
489 |
msgctxt "[Admin] Filter edit form, sorting options"
|
490 |
msgid "Sort by popularity"
|
491 |
msgstr ""
|
492 |
|
493 |
-
#: includes/class
|
494 |
msgctxt "[Admin] Filter edit form, sorting options"
|
495 |
msgid "Sort by average rating"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: includes/class
|
499 |
msgctxt "[Admin] Filter edit form, sorting options"
|
500 |
msgid "Sort by latest"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/class
|
504 |
msgctxt "[Admin] Filter edit form, sorting options"
|
505 |
msgid "Sort by price: low to high"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: includes/class
|
509 |
msgctxt "[Admin] Filter edit form, sorting options"
|
510 |
msgid "Sort by price: high to low"
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: includes/class
|
514 |
msgctxt "[Admin] Default filter title"
|
515 |
msgid "New filter"
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: includes/class
|
519 |
-
#: includes/filters/class
|
520 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
521 |
msgid "All"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: includes/class
|
525 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
526 |
msgid "Search..."
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: includes/class
|
530 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
531 |
msgid "No item found"
|
532 |
msgstr ""
|
533 |
|
534 |
#. translators: 1. Number of items to show.
|
535 |
-
#: includes/class
|
536 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
537 |
msgid "Show %d more"
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: includes/class
|
541 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
542 |
msgid "Close"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: includes/class
|
546 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
547 |
msgid "Save"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: includes/class
|
551 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
552 |
msgid "Show results"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: includes/class
|
556 |
msgctxt ""
|
557 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
558 |
"selection"
|
559 |
msgid "Clear"
|
560 |
msgstr ""
|
561 |
|
562 |
-
#: includes/class
|
563 |
msgctxt ""
|
564 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
565 |
"selection"
|
566 |
msgid "Clear All"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: includes/class
|
570 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
571 |
msgid "Default preset"
|
572 |
msgstr ""
|
573 |
|
574 |
#. translators: 1. Taxonomy name.
|
575 |
-
#: includes/class
|
576 |
#, fuzzy
|
577 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
578 |
msgid "Filter by %s"
|
579 |
msgstr "Filtre Listesi:"
|
580 |
|
581 |
-
#: includes/class
|
582 |
msgctxt "[Admin] Label in new preset page"
|
583 |
msgid "Default"
|
584 |
msgstr ""
|
@@ -593,36 +586,36 @@ msgctxt "[Admin] Label in new preset page"
|
|
593 |
msgid "Enter a name to identify this filter preset"
|
594 |
msgstr ""
|
595 |
|
596 |
-
#: templates/admin/preset-filters.php:
|
597 |
#, fuzzy
|
598 |
msgctxt "[Admin] Label in new preset page"
|
599 |
msgid "Filters of this preset"
|
600 |
msgstr "Filtre Listesi:"
|
601 |
|
602 |
-
#: includes/class
|
603 |
-
#: includes/class
|
604 |
#, fuzzy
|
605 |
msgctxt "[Admin] name of presets custom post type"
|
606 |
msgid "Filter presets"
|
607 |
msgstr "Filtre Listesi:"
|
608 |
|
609 |
-
#: includes/class
|
610 |
#, fuzzy
|
611 |
msgctxt "[Admin] singular name of presets custom post type"
|
612 |
msgid "Filter preset"
|
613 |
msgstr "Filtre Listesi:"
|
614 |
|
615 |
-
#: includes/class
|
616 |
msgctxt "[Admin] add new filter preset label"
|
617 |
msgid "Add new preset"
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: includes/class
|
621 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
622 |
msgid "Convert widgets in a preset"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: includes/data-stores/class
|
626 |
msgctxt ""
|
627 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
628 |
"not exist"
|
@@ -630,74 +623,74 @@ msgid "Invalid preset."
|
|
630 |
msgstr ""
|
631 |
|
632 |
#. translators: 1. Title of original preset.
|
633 |
-
#: includes/data-stores/class
|
634 |
msgctxt "[ADMIN] Title of the cloned preset"
|
635 |
msgid "%s - Copy"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: includes/elementor/class
|
639 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
640 |
msgid "YITH AJAX Filters Preset"
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: includes/elementor/class
|
644 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
645 |
msgid "YITH AJAX Filters Reset Button"
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: includes/elementor/class
|
649 |
-
#: includes/shortcodes/class
|
650 |
msgctxt "[ELEMENTOR] Default preset option"
|
651 |
msgid "Choose an option"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: includes/elementor/class
|
655 |
#, fuzzy
|
656 |
msgctxt "[ELEMENTOR] Section title"
|
657 |
msgid "Filters"
|
658 |
msgstr "Filtre Listesi:"
|
659 |
|
660 |
-
#: includes/elementor/class
|
661 |
msgctxt "[ELEMENTOR] Section title"
|
662 |
msgid "General"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: includes/elementor/class
|
666 |
msgctxt "[ELEMENTOR] Control label"
|
667 |
msgid "Preset"
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: includes/elementor/class
|
671 |
msgctxt "[ELEMENTOR] Widget description"
|
672 |
msgid ""
|
673 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
674 |
msgstr ""
|
675 |
|
676 |
-
#: includes/elementor/class
|
677 |
msgctxt "[ELEMENTOR] Widget description"
|
678 |
msgid ""
|
679 |
"It will allow users to reset the filer selection; it will only appear when "
|
680 |
"there is an active filter."
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: includes/elementor/class
|
684 |
msgctxt "[ELEMENTOR] Widget description"
|
685 |
msgid ""
|
686 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
687 |
"when \"Reset button position\" option won't work for your product's loop"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: includes/functions
|
691 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
692 |
msgid "Color 1"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/functions
|
696 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
697 |
msgid "Color 2"
|
698 |
msgstr ""
|
699 |
|
700 |
-
#: includes/functions
|
701 |
msgctxt "[FRONTEND] Star rating template"
|
702 |
msgid "star"
|
703 |
msgid_plural "stars"
|
@@ -705,29 +698,29 @@ msgstr[0] ""
|
|
705 |
msgstr[1] ""
|
706 |
|
707 |
#. translators: 1. Rating.
|
708 |
-
#: includes/functions
|
709 |
msgctxt "[FRONTEND] Star rating label"
|
710 |
msgid "Rated %s out of 5"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: includes/shortcodes/class
|
714 |
msgctxt "[GUTENBERG]: block name"
|
715 |
msgid "YITH AJAX Filters Preset"
|
716 |
msgstr ""
|
717 |
|
718 |
# @ yit
|
719 |
-
#: includes/shortcodes/class
|
720 |
#, fuzzy
|
721 |
msgctxt "[GUTENBERG]: block name"
|
722 |
msgid "YITH Reset Filters Button"
|
723 |
msgstr "YITH WooCommerce Ajax Navigation"
|
724 |
|
725 |
-
#: includes/shortcodes/class
|
726 |
msgctxt "[GUTENBERG]: block description"
|
727 |
msgid "Show filters from a preset"
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: includes/shortcodes/class
|
731 |
msgctxt "[GUTENBERG]: block description"
|
732 |
msgid ""
|
733 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
@@ -736,81 +729,81 @@ msgid ""
|
|
736 |
"product's loop"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/shortcodes/class
|
740 |
msgctxt "[GUTENBERG]: attribute description"
|
741 |
msgid "Preset"
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: includes/tables/class
|
745 |
msgctxt "[Admin] Preset table column header"
|
746 |
msgid "Preset name"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: includes/tables/class
|
750 |
msgctxt "[Admin] Preset table column header"
|
751 |
msgid "Shortcode"
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: includes/tables/class
|
755 |
msgctxt "[Admin] Preset edit action label"
|
756 |
msgid "Edit this preset"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/tables/class
|
760 |
msgctxt "[Admin] Preset clone action label"
|
761 |
msgid "Clone this preset"
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: includes/tables/class
|
765 |
msgctxt "[Admin] Preset delete action label"
|
766 |
msgid "Delete this preset"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: includes/tables/class
|
770 |
msgctxt "[Admin] Preset delete confirm label"
|
771 |
msgid "Are you sure you want to delete this preset?"
|
772 |
msgstr ""
|
773 |
|
774 |
-
#: includes/tables/class
|
775 |
msgctxt "[Admin] on-off yes"
|
776 |
msgid "YES"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/tables/class
|
780 |
msgctxt "[Admin] on-off no"
|
781 |
msgid "NO"
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: includes/tables/class
|
785 |
#, fuzzy
|
786 |
msgctxt ""
|
787 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
788 |
msgid "filter preset"
|
789 |
msgstr "Filtre Listesi:"
|
790 |
|
791 |
-
#: templates/admin/preset-filters.php:
|
792 |
msgctxt ""
|
793 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
794 |
msgid "filter"
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: includes/tables/class
|
798 |
msgctxt "[Admin] New preset button label"
|
799 |
msgid "Create a new preset"
|
800 |
msgstr ""
|
801 |
|
802 |
-
#: includes/widgets/class
|
803 |
msgctxt "[ADMIN] Name of the preset widget"
|
804 |
msgid "YITH AJAX Filters Preset"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: includes/widgets/class
|
808 |
msgctxt "[ADMIN] Preset widget options"
|
809 |
msgid "Preset"
|
810 |
msgstr ""
|
811 |
|
812 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
813 |
-
#: includes/widgets/class
|
814 |
msgctxt "[ADMIN] Preset widget options"
|
815 |
msgid ""
|
816 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
@@ -818,14 +811,14 @@ msgid ""
|
|
818 |
msgstr ""
|
819 |
|
820 |
# @ yit
|
821 |
-
#: includes/widgets/class
|
822 |
#, fuzzy
|
823 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
824 |
msgid "YITH AJAX Product Filter"
|
825 |
msgstr "YITH WooCommerce Ajax Navigation"
|
826 |
|
827 |
# @ yit
|
828 |
-
#: includes/widgets/class
|
829 |
#, fuzzy
|
830 |
msgctxt ""
|
831 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
@@ -833,20 +826,20 @@ msgid "AND"
|
|
833 |
msgstr "VE"
|
834 |
|
835 |
# @ yit
|
836 |
-
#: includes/widgets/class
|
837 |
#, fuzzy
|
838 |
msgctxt "[Plugin Name]"
|
839 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
840 |
msgstr ""
|
841 |
"YITH WooCommerce Ajax Navigation için ayarlanmış tüm filtreleri sıfırlayın"
|
842 |
|
843 |
-
#: plugin-options/filter-options.php:
|
844 |
msgctxt ""
|
845 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
846 |
msgid "AND - Results need to match all selected terms at the same time"
|
847 |
msgstr ""
|
848 |
|
849 |
-
#: plugin-options/filter-options.php:
|
850 |
msgctxt ""
|
851 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
852 |
msgid "OR - Results need to match at least one of the selected terms"
|
@@ -1113,21 +1106,21 @@ msgstr ""
|
|
1113 |
msgctxt "[ADMIN] Premium tab"
|
1114 |
msgid ""
|
1115 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1116 |
-
"view<br/>\
|
1117 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1118 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1119 |
-
"range (based on their budget availability)<br/>\
|
1120 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1121 |
"attributes available in your store, like color and size. For the color "
|
1122 |
"filter, you can either choose square or circular color swatches or use "
|
1123 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1124 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1125 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1126 |
-
"concentrate only on high-rated ones)<br/>\
|
1127 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1128 |
-
"on plugin, you can also filter products by specific brands<br/>\
|
1129 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1130 |
-
"filter products and view only those with a discount<br/>\
|
1131 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1132 |
"filter products based on their needs and exclude out-of-stock products from "
|
1133 |
"the list"
|
@@ -1243,78 +1236,78 @@ msgid ""
|
|
1243 |
"easier to share)"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: templates/admin/preset-edit.php:
|
1247 |
msgctxt "[Admin] Back link in new preset page"
|
1248 |
msgid "< back to preset list"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: templates/admin/preset-edit.php:
|
1252 |
msgctxt "[ADMIN] Title for new preset page"
|
1253 |
msgid "Edit filter preset"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#: templates/admin/preset-edit.php:
|
1257 |
msgctxt "[ADMIN] Title for new preset page"
|
1258 |
msgid "Add new filter preset"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
#: templates/admin/preset-edit.php:
|
1262 |
msgctxt "[ADMIN] Preset save message"
|
1263 |
msgid "Preset saved correctly"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: templates/admin/preset-edit.php:
|
1267 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1268 |
msgid "Save preset"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: templates/admin/preset-empty-content.php:
|
1272 |
msgctxt "Alt text for empty preset image"
|
1273 |
msgid "Empty preset"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
#. translators: 1. Missing item name.
|
1277 |
-
#: templates/admin/preset-empty-content.php:
|
1278 |
msgctxt "[Admin] Preset table empty message"
|
1279 |
msgid "You don't have any %s yet."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
# @ yit
|
1283 |
-
#: templates/admin/preset-filter-term.php:
|
1284 |
#, fuzzy
|
1285 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1286 |
msgid "Label"
|
1287 |
msgstr "Etiket"
|
1288 |
|
1289 |
-
#: templates/admin/preset-filter-term.php:
|
1290 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1291 |
msgid "Tooltip"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
# @ yit
|
1295 |
-
#: templates/admin/preset-filter-term.php:
|
1296 |
#, fuzzy
|
1297 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1298 |
msgid "Color"
|
1299 |
msgstr "Renk"
|
1300 |
|
1301 |
-
#: templates/admin/preset-filter.php:
|
1302 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1303 |
msgid "Save Filter"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: templates/admin/preset-filter.php:
|
1307 |
#, fuzzy
|
1308 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1309 |
msgid "Delete Filter"
|
1310 |
msgstr "Tüm Filtreleri Sıfırla"
|
1311 |
|
1312 |
-
#: templates/admin/preset-filters.php:
|
1313 |
msgctxt "[Admin] New filter button label"
|
1314 |
msgid "Add a new filter"
|
1315 |
msgstr ""
|
1316 |
|
1317 |
-
#: templates/admin/preset-filters.php:
|
1318 |
msgctxt "[Admin] Add new filter in new preset page"
|
1319 |
msgid "+ Add filter"
|
1320 |
msgstr ""
|
@@ -1326,12 +1319,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1326 |
msgid "See %d more filters"
|
1327 |
msgstr "Tüm Filtreleri Sıfırla"
|
1328 |
|
1329 |
-
#: templates/admin/upgrade-note-modal.php:
|
1330 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1331 |
msgid "Use the new filter preset feature for your filters"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: templates/admin/upgrade-note-modal.php:
|
1335 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1336 |
msgid ""
|
1337 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1341,7 +1334,7 @@ msgid ""
|
|
1341 |
msgstr ""
|
1342 |
|
1343 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1344 |
-
#: templates/admin/upgrade-note-modal.php:
|
1345 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1346 |
msgid ""
|
1347 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
@@ -1349,14 +1342,14 @@ msgid ""
|
|
1349 |
msgstr ""
|
1350 |
|
1351 |
#. translators: 1. Url to docs.
|
1352 |
-
#: templates/admin/upgrade-note-modal.php:
|
1353 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1354 |
msgid ""
|
1355 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1356 |
"to use this new feature."
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#: templates/admin/upgrade-note-modal.php:
|
1360 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1361 |
msgid ""
|
1362 |
"We offer a tool to automatically convert the widget filters of your shop in "
|
@@ -1365,7 +1358,7 @@ msgid ""
|
|
1365 |
"will be lost during the process.</b>"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: templates/admin/upgrade-note-modal.php:
|
1369 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1370 |
msgid ""
|
1371 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1373,22 +1366,28 @@ msgid ""
|
|
1373 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#: templates/admin/upgrade-note-modal.php:
|
1377 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1378 |
msgid "Convert your widgets in a preset now"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: templates/admin/upgrade-note-modal.php:
|
1382 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1383 |
msgid "No thanks"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: templates/filters/global/reset-filters.php:
|
1387 |
#, fuzzy
|
1388 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1389 |
msgid "Reset filters"
|
1390 |
msgstr "Tüm Filtreleri Sıfırla"
|
1391 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1392 |
# @ yit
|
1393 |
#, fuzzy
|
1394 |
#~ msgid "YITH WooCommerce Ajax Product Filter"
|
3 |
"Project-Id-Version: YITH WooCommerce Ajax Product filter\n"
|
4 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
|
5 |
"ajax-product-filter\n"
|
6 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
7 |
"PO-Revision-Date: 2019-06-06 10:16+0200\n"
|
8 |
"Last-Translator: Caner Öncel <caneroncel@gmail.com>\n"
|
9 |
"Language-Team: Caner Öncel <caneroncel@gmail.com>\n"
|
21 |
"X-Poedit-SearchPath-0: .\n"
|
22 |
"X-Poedit-SearchPathExcluded-0: plugin-fw\n"
|
23 |
|
24 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
25 |
msgid "Draft Preset"
|
26 |
msgstr ""
|
27 |
|
28 |
# @ yit
|
29 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
30 |
+
#: includes/functions-yith-wcan.php:132
|
31 |
msgid "Term"
|
32 |
msgstr "Terim"
|
33 |
|
34 |
# @ yit
|
35 |
+
#: includes/functions-yith-wcan.php:98
|
36 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
37 |
msgid "Color"
|
38 |
msgstr "Renk"
|
39 |
|
40 |
# @ yit
|
41 |
+
#: includes/functions-yith-wcan.php:132
|
42 |
msgid "Labels"
|
43 |
msgstr "Etiketler"
|
44 |
|
45 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
46 |
msgid "Filter the list of products without reloading the page"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
50 |
msgid "Filters:"
|
51 |
msgstr ""
|
52 |
|
53 |
# @ yit
|
54 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
55 |
msgid "List"
|
56 |
msgstr "Liste"
|
57 |
|
58 |
# @ yit
|
59 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
60 |
msgid "Label"
|
61 |
msgstr "Etiket"
|
62 |
|
63 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
64 |
msgid "Dropdown"
|
65 |
msgstr "Açılır Menü"
|
66 |
|
67 |
# @ yit
|
68 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
69 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
70 |
msgid "Title"
|
71 |
msgstr "Başlık"
|
72 |
|
73 |
# @ yit
|
74 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
75 |
msgid "Type:"
|
76 |
msgstr "Tür:"
|
77 |
|
78 |
# @ yit
|
79 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
80 |
msgid "Query Type:"
|
81 |
msgstr "Sorgu Tipi:"
|
82 |
|
83 |
# @ yit
|
84 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
85 |
msgid "OR"
|
86 |
msgstr "VEYA"
|
87 |
|
88 |
# @ yit
|
89 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
90 |
msgid "Attribute:"
|
91 |
msgstr "Özellikler:"
|
92 |
|
93 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
94 |
msgid "Display (default All):"
|
95 |
msgstr "Görüntüleme (Varsayılan tümü):"
|
96 |
|
97 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
98 |
msgid "All (no hierarchical)"
|
99 |
msgstr "Tümü"
|
100 |
|
101 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
102 |
msgid "All (hierarchical)"
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
106 |
msgid "Only Parent"
|
107 |
msgstr "Sadece Ebeveyn"
|
108 |
|
109 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
110 |
msgid "CSS custom class"
|
111 |
msgstr ""
|
112 |
|
113 |
# @ yit
|
114 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
115 |
#, fuzzy
|
116 |
msgid "YITH AJAX Reset Filter"
|
117 |
msgstr "YITH WooCommerce Ajax Navigation"
|
118 |
|
119 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
120 |
msgid "Reset All Filters"
|
121 |
msgstr "Tüm Filtreleri Sıfırla"
|
122 |
|
123 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
124 |
msgid "Button Label"
|
125 |
msgstr "Buton Metni"
|
126 |
|
146 |
"your e-commerce shop on <strong>YITH</strong></a>"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: includes/class-yith-wcan-admin.php:107
|
150 |
msgctxt "[Admin] Copy confirmation message"
|
151 |
msgid "Content copied to your clipboard"
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: includes/class-yith-wcan-admin.php:108
|
155 |
msgctxt "[Admin] Confirm filter delete message"
|
156 |
msgid "Are you sure you want to delete this item?"
|
157 |
msgstr ""
|
158 |
|
159 |
#. translators: 1. Number of items that will be added.
|
160 |
+
#: includes/class-yith-wcan-admin.php:110
|
161 |
msgctxt "[Admin] Confirm add all terms message"
|
162 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-yith-wcan-admin.php:111
|
166 |
msgctxt "[Admin] Error message"
|
167 |
msgid "\"Filter title\" is a required field"
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
171 |
msgctxt "[Admin] Message shown when filter has empty title"
|
172 |
msgid "< no title >"
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: includes/class-yith-wcan-admin.php:115
|
176 |
msgctxt "[Admin] Media library title, when selecting images"
|
177 |
msgid "Select media you want to use"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: includes/class-yith-wcan-admin.php:116
|
181 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
182 |
msgid "Use this media"
|
183 |
msgstr ""
|
184 |
|
185 |
+
#: includes/class-yith-wcan-admin.php:184
|
186 |
#, fuzzy
|
187 |
msgctxt "[Admin] tab name"
|
188 |
msgid "Filter presets"
|
189 |
msgstr "Filtre Listesi:"
|
190 |
|
191 |
+
#: includes/class-yith-wcan-admin.php:185
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "General settings"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/class-yith-wcan-admin.php:186
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "SEO"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: includes/class-yith-wcan-admin.php:187
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Premium Version"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/class-yith-wcan-admin.php:191
|
207 |
msgctxt "[Admin] tab name"
|
208 |
msgid "Legacy"
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
msgctxt "[Admin] Plugin description"
|
213 |
msgid ""
|
214 |
"It allows your users to find the product they are looking for as quickly as "
|
215 |
"possible."
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: includes/class-yith-wcan-admin.php:211
|
219 |
msgctxt "[HELP TAB] Video title"
|
220 |
msgid ""
|
221 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
222 |
"the shop page:</b>"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: includes/class-yith-wcan-admin.php:329
|
226 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
227 |
msgid "item"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: includes/class-yith-wcan-admin.php:330
|
231 |
msgctxt "[Admin] Preset table empty message second line"
|
232 |
msgid "But don't worry, here you can create your first one!"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: includes/class-yith-wcan-admin.php:480
|
236 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
237 |
msgid "Clear Product Filter transients"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: includes/class-yith-wcan-admin.php:486
|
241 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
242 |
msgid "Run filter widgets upgrade"
|
243 |
msgstr ""
|
244 |
|
245 |
+
#: includes/class-yith-wcan-admin.php:481
|
246 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
247 |
msgid "Clear"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: includes/class-yith-wcan-admin.php:487
|
251 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
252 |
msgid "Run"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: includes/class-yith-wcan-admin.php:482
|
256 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
257 |
msgid ""
|
258 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
260 |
"and filters do not display the expected results."
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: includes/class-yith-wcan-admin.php:488
|
264 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
265 |
msgid ""
|
266 |
"This will create a preset for any sidebar of your shop containing filter "
|
267 |
"widgets; preset will be configured to match widgets specifications"
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
271 |
msgctxt "[Admin] Filter edit form"
|
272 |
msgid "Taxonomy"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
276 |
msgctxt "[Admin] Filter edit form"
|
277 |
msgid "Checkbox"
|
278 |
msgstr ""
|
279 |
|
280 |
# @ yit
|
281 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
282 |
#, fuzzy
|
283 |
msgctxt "[Admin] Filter edit form"
|
284 |
msgid "Select"
|
285 |
msgstr "Bir tarih seçin"
|
286 |
|
287 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
288 |
msgctxt "[Admin] Filter edit form"
|
289 |
msgid "Text"
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
293 |
msgctxt "[Admin] Filter edit form"
|
294 |
msgid "Color Swatches"
|
295 |
msgstr ""
|
296 |
|
297 |
# @ yit
|
298 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
299 |
#, fuzzy
|
300 |
msgctxt "[Admin] Filter edit form"
|
301 |
msgid "Label"
|
311 |
msgid "Enter a name to identify this filter"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: plugin-options/filter-options.php:40
|
315 |
#, fuzzy
|
316 |
msgctxt "[Admin] Filter edit form"
|
317 |
msgid "Filter for"
|
318 |
msgstr "Filtre Listesi:"
|
319 |
|
320 |
+
#: plugin-options/filter-options.php:44
|
321 |
msgctxt "[Admin] Filter edit form"
|
322 |
msgid "Select the parameters you wish to filter for"
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: plugin-options/filter-options.php:49
|
326 |
msgctxt "[Admin] Filter edit form"
|
327 |
msgid "Choose taxonomy"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: plugin-options/filter-options.php:53
|
331 |
msgctxt "[Admin] Filter edit form"
|
332 |
msgid "Select which taxonomy to use for this filter"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: plugin-options/filter-options.php:58
|
336 |
msgctxt "[Admin] Filter edit form"
|
337 |
msgid "Auto-populate with all terms"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: plugin-options/filter-options.php:60
|
341 |
msgctxt "[Admin] Filter edit form"
|
342 |
msgid ""
|
343 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
346 |
"well.</span>"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: plugin-options/filter-options.php:69
|
350 |
msgctxt "[Admin] Filter edit form"
|
351 |
msgid "Choose terms"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: plugin-options/filter-options.php:74
|
355 |
msgctxt "[Admin] Filter edit form"
|
356 |
msgid "Select which terms to use for filtering"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: plugin-options/filter-options.php:78
|
360 |
#, fuzzy
|
361 |
msgctxt "[Admin] Filter edit form"
|
362 |
msgid "Filter type"
|
363 |
msgstr "Filtre Listesi:"
|
364 |
|
365 |
+
#: plugin-options/filter-options.php:82
|
366 |
msgctxt "[Admin] Filter edit form"
|
367 |
msgid "Select the filter type for this filter"
|
368 |
msgstr ""
|
369 |
|
370 |
# @ yit
|
371 |
+
#: plugin-options/filter-options.php:86
|
372 |
#, fuzzy
|
373 |
msgctxt "[Admin] Filter edit form"
|
374 |
msgid "Labels"
|
375 |
msgstr "Etiketler"
|
376 |
|
377 |
+
#: plugin-options/filter-options.php:89
|
378 |
msgctxt "[Admin] Filter edit form"
|
379 |
msgid "Show below"
|
380 |
msgstr ""
|
381 |
|
382 |
+
#: plugin-options/filter-options.php:90
|
383 |
msgctxt "[Admin] Filter edit form"
|
384 |
msgid "Show on the right"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: plugin-options/filter-options.php:91
|
388 |
msgctxt "[Admin] Filter edit form"
|
389 |
msgid "Hide"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: plugin-options/filter-options.php:93
|
393 |
msgctxt "[Admin] Filter edit form"
|
394 |
msgid "Choose if and where to show the label inside your filter"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: plugin-options/filter-options.php:97
|
398 |
msgctxt "[Admin] Filter edit form"
|
399 |
msgid "Columns number"
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: plugin-options/filter-options.php:102
|
403 |
msgctxt "[Admin] Filter edit form"
|
404 |
msgid "Set the number of items per row you want to show for this design"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: plugin-options/filter-options.php:106
|
408 |
msgctxt "[Admin] Filter edit form"
|
409 |
msgid "Customize terms"
|
410 |
msgstr ""
|
411 |
|
412 |
+
#: plugin-options/filter-options.php:109
|
413 |
msgctxt "[Admin] Filter edit form"
|
414 |
msgid ""
|
415 |
"Configure your terms individually; system will otherwise use default labels/"
|
423 |
"this option and use the boxes below</span>"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: plugin-options/filter-options.php:119
|
427 |
msgctxt "[Admin] Filter edit form"
|
428 |
msgid "Terms options"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: plugin-options/filter-options.php:125
|
432 |
msgctxt "[Admin] Filter edit form"
|
433 |
msgid "Show hierarchy"
|
434 |
msgstr ""
|
435 |
|
436 |
+
#: plugin-options/filter-options.php:128
|
437 |
msgctxt "[Admin] Filter edit form"
|
438 |
msgid "No, show all terms in same level"
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: plugin-options/filter-options.php:129
|
442 |
msgctxt "[Admin] Filter edit form"
|
443 |
msgid "No, show only parent terms"
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: plugin-options/filter-options.php:130
|
447 |
msgctxt "[Admin] Filter edit form"
|
448 |
msgid "Yes"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: plugin-options/filter-options.php:132
|
452 |
msgctxt "[Admin] Filter edit form"
|
453 |
msgid "Choose how to show terms hierarchy"
|
454 |
msgstr ""
|
455 |
|
456 |
+
#: plugin-options/filter-options.php:136
|
457 |
msgctxt "[Admin] Filter edit form"
|
458 |
msgid "Allow multiple selection"
|
459 |
msgstr ""
|
460 |
|
461 |
+
#: plugin-options/filter-options.php:138
|
462 |
msgctxt "[Admin] Filter edit form"
|
463 |
msgid "Enable if the user can select multiple terms when filtering products"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: plugin-options/filter-options.php:142
|
467 |
msgctxt "[Admin] Filter edit form"
|
468 |
msgid "Multiselect relation"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: plugin-options/filter-options.php:148
|
472 |
msgctxt "[Admin] Filter edit form"
|
473 |
msgid "Choose how multiple terms selection should behave"
|
474 |
msgstr ""
|
475 |
|
476 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
477 |
msgctxt "[Admin] Filter edit form, sorting options"
|
478 |
msgid "Default sorting"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
482 |
msgctxt "[Admin] Filter edit form, sorting options"
|
483 |
msgid "Sort by popularity"
|
484 |
msgstr ""
|
485 |
|
486 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
487 |
msgctxt "[Admin] Filter edit form, sorting options"
|
488 |
msgid "Sort by average rating"
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
492 |
msgctxt "[Admin] Filter edit form, sorting options"
|
493 |
msgid "Sort by latest"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
497 |
msgctxt "[Admin] Filter edit form, sorting options"
|
498 |
msgid "Sort by price: low to high"
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
502 |
msgctxt "[Admin] Filter edit form, sorting options"
|
503 |
msgid "Sort by price: high to low"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: includes/class-yith-wcan-filter.php:116
|
507 |
msgctxt "[Admin] Default filter title"
|
508 |
msgid "New filter"
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/class-yith-wcan-frontend.php:591
|
512 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
513 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
514 |
msgid "All"
|
515 |
msgstr ""
|
516 |
|
517 |
+
#: includes/class-yith-wcan-frontend.php:592
|
518 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
519 |
msgid "Search..."
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: includes/class-yith-wcan-frontend.php:593
|
523 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
524 |
msgid "No item found"
|
525 |
msgstr ""
|
526 |
|
527 |
#. translators: 1. Number of items to show.
|
528 |
+
#: includes/class-yith-wcan-frontend.php:595
|
529 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
530 |
msgid "Show %d more"
|
531 |
msgstr ""
|
532 |
|
533 |
+
#: includes/class-yith-wcan-frontend.php:596
|
534 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
535 |
msgid "Close"
|
536 |
msgstr ""
|
537 |
|
538 |
+
#: includes/class-yith-wcan-frontend.php:597
|
539 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
540 |
msgid "Save"
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: includes/class-yith-wcan-frontend.php:598
|
544 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
545 |
msgid "Show results"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/class-yith-wcan-frontend.php:599
|
549 |
msgctxt ""
|
550 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
551 |
"selection"
|
552 |
msgid "Clear"
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: includes/class-yith-wcan-frontend.php:600
|
556 |
msgctxt ""
|
557 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
558 |
"selection"
|
559 |
msgid "Clear All"
|
560 |
msgstr ""
|
561 |
|
562 |
+
#: includes/class-yith-wcan-install.php:95
|
563 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
564 |
msgid "Default preset"
|
565 |
msgstr ""
|
566 |
|
567 |
#. translators: 1. Taxonomy name.
|
568 |
+
#: includes/class-yith-wcan-install.php:285
|
569 |
#, fuzzy
|
570 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
571 |
msgid "Filter by %s"
|
572 |
msgstr "Filtre Listesi:"
|
573 |
|
574 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
575 |
msgctxt "[Admin] Label in new preset page"
|
576 |
msgid "Default"
|
577 |
msgstr ""
|
586 |
msgid "Enter a name to identify this filter preset"
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: templates/admin/preset-filters.php:22
|
590 |
#, fuzzy
|
591 |
msgctxt "[Admin] Label in new preset page"
|
592 |
msgid "Filters of this preset"
|
593 |
msgstr "Filtre Listesi:"
|
594 |
|
595 |
+
#: includes/class-yith-wcan-presets.php:95
|
596 |
+
#: includes/class-yith-wcan-presets.php:100
|
597 |
#, fuzzy
|
598 |
msgctxt "[Admin] name of presets custom post type"
|
599 |
msgid "Filter presets"
|
600 |
msgstr "Filtre Listesi:"
|
601 |
|
602 |
+
#: includes/class-yith-wcan-presets.php:96
|
603 |
#, fuzzy
|
604 |
msgctxt "[Admin] singular name of presets custom post type"
|
605 |
msgid "Filter preset"
|
606 |
msgstr "Filtre Listesi:"
|
607 |
|
608 |
+
#: includes/class-yith-wcan-presets.php:97
|
609 |
msgctxt "[Admin] add new filter preset label"
|
610 |
msgid "Add new preset"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: includes/class-yith-wcan-presets.php:139
|
614 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
615 |
msgid "Convert widgets in a preset"
|
616 |
msgstr ""
|
617 |
|
618 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
619 |
msgctxt ""
|
620 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
621 |
"not exist"
|
623 |
msgstr ""
|
624 |
|
625 |
#. translators: 1. Title of original preset.
|
626 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
627 |
msgctxt "[ADMIN] Title of the cloned preset"
|
628 |
msgid "%s - Copy"
|
629 |
msgstr ""
|
630 |
|
631 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
632 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
633 |
msgid "YITH AJAX Filters Preset"
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
637 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
638 |
msgid "YITH AJAX Filters Reset Button"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
642 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
643 |
msgctxt "[ELEMENTOR] Default preset option"
|
644 |
msgid "Choose an option"
|
645 |
msgstr ""
|
646 |
|
647 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
648 |
#, fuzzy
|
649 |
msgctxt "[ELEMENTOR] Section title"
|
650 |
msgid "Filters"
|
651 |
msgstr "Filtre Listesi:"
|
652 |
|
653 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
654 |
msgctxt "[ELEMENTOR] Section title"
|
655 |
msgid "General"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
659 |
msgctxt "[ELEMENTOR] Control label"
|
660 |
msgid "Preset"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
664 |
msgctxt "[ELEMENTOR] Widget description"
|
665 |
msgid ""
|
666 |
"This widget will display \"Filters reset\" button, wherever it is placed"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
670 |
msgctxt "[ELEMENTOR] Widget description"
|
671 |
msgid ""
|
672 |
"It will allow users to reset the filer selection; it will only appear when "
|
673 |
"there is an active filter."
|
674 |
msgstr ""
|
675 |
|
676 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
677 |
msgctxt "[ELEMENTOR] Widget description"
|
678 |
msgid ""
|
679 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
680 |
"when \"Reset button position\" option won't work for your product's loop"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: includes/functions-yith-wcan.php:112
|
684 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
685 |
msgid "Color 1"
|
686 |
msgstr ""
|
687 |
|
688 |
+
#: includes/functions-yith-wcan.php:112
|
689 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
690 |
msgid "Color 2"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: includes/functions-yith-wcan.php:1026
|
694 |
msgctxt "[FRONTEND] Star rating template"
|
695 |
msgid "star"
|
696 |
msgid_plural "stars"
|
698 |
msgstr[1] ""
|
699 |
|
700 |
#. translators: 1. Rating.
|
701 |
+
#: includes/functions-yith-wcan.php:1041
|
702 |
msgctxt "[FRONTEND] Star rating label"
|
703 |
msgid "Rated %s out of 5"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
707 |
msgctxt "[GUTENBERG]: block name"
|
708 |
msgid "YITH AJAX Filters Preset"
|
709 |
msgstr ""
|
710 |
|
711 |
# @ yit
|
712 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
713 |
#, fuzzy
|
714 |
msgctxt "[GUTENBERG]: block name"
|
715 |
msgid "YITH Reset Filters Button"
|
716 |
msgstr "YITH WooCommerce Ajax Navigation"
|
717 |
|
718 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
719 |
msgctxt "[GUTENBERG]: block description"
|
720 |
msgid "Show filters from a preset"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
724 |
msgctxt "[GUTENBERG]: block description"
|
725 |
msgid ""
|
726 |
"Show reset filters button, when a filter is applied and button is enabled in "
|
729 |
"product's loop"
|
730 |
msgstr ""
|
731 |
|
732 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
733 |
msgctxt "[GUTENBERG]: attribute description"
|
734 |
msgid "Preset"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
738 |
msgctxt "[Admin] Preset table column header"
|
739 |
msgid "Preset name"
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
743 |
msgctxt "[Admin] Preset table column header"
|
744 |
msgid "Shortcode"
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
748 |
msgctxt "[Admin] Preset edit action label"
|
749 |
msgid "Edit this preset"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
753 |
msgctxt "[Admin] Preset clone action label"
|
754 |
msgid "Clone this preset"
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
758 |
msgctxt "[Admin] Preset delete action label"
|
759 |
msgid "Delete this preset"
|
760 |
msgstr ""
|
761 |
|
762 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
763 |
msgctxt "[Admin] Preset delete confirm label"
|
764 |
msgid "Are you sure you want to delete this preset?"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
768 |
msgctxt "[Admin] on-off yes"
|
769 |
msgid "YES"
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
773 |
msgctxt "[Admin] on-off no"
|
774 |
msgid "NO"
|
775 |
msgstr ""
|
776 |
|
777 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
778 |
#, fuzzy
|
779 |
msgctxt ""
|
780 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
781 |
msgid "filter preset"
|
782 |
msgstr "Filtre Listesi:"
|
783 |
|
784 |
+
#: templates/admin/preset-filters.php:31
|
785 |
msgctxt ""
|
786 |
"[Admin] Name of the item missing, shown in preset-empty-content template"
|
787 |
msgid "filter"
|
788 |
msgstr ""
|
789 |
|
790 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
791 |
msgctxt "[Admin] New preset button label"
|
792 |
msgid "Create a new preset"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
796 |
msgctxt "[ADMIN] Name of the preset widget"
|
797 |
msgid "YITH AJAX Filters Preset"
|
798 |
msgstr ""
|
799 |
|
800 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
801 |
msgctxt "[ADMIN] Preset widget options"
|
802 |
msgid "Preset"
|
803 |
msgstr ""
|
804 |
|
805 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
806 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
807 |
msgctxt "[ADMIN] Preset widget options"
|
808 |
msgid ""
|
809 |
"Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
|
811 |
msgstr ""
|
812 |
|
813 |
# @ yit
|
814 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
815 |
#, fuzzy
|
816 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
817 |
msgid "YITH AJAX Product Filter"
|
818 |
msgstr "YITH WooCommerce Ajax Navigation"
|
819 |
|
820 |
# @ yit
|
821 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
822 |
#, fuzzy
|
823 |
msgctxt ""
|
824 |
"[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
826 |
msgstr "VE"
|
827 |
|
828 |
# @ yit
|
829 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
830 |
#, fuzzy
|
831 |
msgctxt "[Plugin Name]"
|
832 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
833 |
msgstr ""
|
834 |
"YITH WooCommerce Ajax Navigation için ayarlanmış tüm filtreleri sıfırlayın"
|
835 |
|
836 |
+
#: plugin-options/filter-options.php:145
|
837 |
msgctxt ""
|
838 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
839 |
msgid "AND - Results need to match all selected terms at the same time"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: plugin-options/filter-options.php:146
|
843 |
msgctxt ""
|
844 |
"[Admin] Filter edit form; logical operator that affects query behaviour"
|
845 |
msgid "OR - Results need to match at least one of the selected terms"
|
1106 |
msgctxt "[ADMIN] Premium tab"
|
1107 |
msgid ""
|
1108 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1109 |
+
"view<br/>\n"
|
1110 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1111 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1112 |
+
"range (based on their budget availability)<br/>\n"
|
1113 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1114 |
"attributes available in your store, like color and size. For the color "
|
1115 |
"filter, you can either choose square or circular color swatches or use "
|
1116 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1117 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1118 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1119 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1120 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
|
1121 |
+
"on plugin, you can also filter products by specific brands<br/>\n"
|
1122 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1123 |
+
"filter products and view only those with a discount<br/>\n"
|
1124 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1125 |
"filter products based on their needs and exclude out-of-stock products from "
|
1126 |
"the list"
|
1236 |
"easier to share)"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: templates/admin/preset-edit.php:31
|
1240 |
msgctxt "[Admin] Back link in new preset page"
|
1241 |
msgid "< back to preset list"
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: templates/admin/preset-edit.php:38
|
1245 |
msgctxt "[ADMIN] Title for new preset page"
|
1246 |
msgid "Edit filter preset"
|
1247 |
msgstr ""
|
1248 |
|
1249 |
+
#: templates/admin/preset-edit.php:40
|
1250 |
msgctxt "[ADMIN] Title for new preset page"
|
1251 |
msgid "Add new filter preset"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: templates/admin/preset-edit.php:47
|
1255 |
msgctxt "[ADMIN] Preset save message"
|
1256 |
msgid "Preset saved correctly"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
+
#: templates/admin/preset-edit.php:93
|
1260 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1261 |
msgid "Save preset"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: templates/admin/preset-empty-content.php:29
|
1265 |
msgctxt "Alt text for empty preset image"
|
1266 |
msgid "Empty preset"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
#. translators: 1. Missing item name.
|
1270 |
+
#: templates/admin/preset-empty-content.php:35
|
1271 |
msgctxt "[Admin] Preset table empty message"
|
1272 |
msgid "You don't have any %s yet."
|
1273 |
msgstr ""
|
1274 |
|
1275 |
# @ yit
|
1276 |
+
#: templates/admin/preset-filter-term.php:30
|
1277 |
#, fuzzy
|
1278 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1279 |
msgid "Label"
|
1280 |
msgstr "Etiket"
|
1281 |
|
1282 |
+
#: templates/admin/preset-filter-term.php:35
|
1283 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1284 |
msgid "Tooltip"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
# @ yit
|
1288 |
+
#: templates/admin/preset-filter-term.php:41
|
1289 |
#, fuzzy
|
1290 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1291 |
msgid "Color"
|
1292 |
msgstr "Renk"
|
1293 |
|
1294 |
+
#: templates/admin/preset-filter.php:91
|
1295 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1296 |
msgid "Save Filter"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: templates/admin/preset-filter.php:92
|
1300 |
#, fuzzy
|
1301 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1302 |
msgid "Delete Filter"
|
1303 |
msgstr "Tüm Filtreleri Sıfırla"
|
1304 |
|
1305 |
+
#: templates/admin/preset-filters.php:33
|
1306 |
msgctxt "[Admin] New filter button label"
|
1307 |
msgid "Add a new filter"
|
1308 |
msgstr ""
|
1309 |
|
1310 |
+
#: templates/admin/preset-filters.php:57
|
1311 |
msgctxt "[Admin] Add new filter in new preset page"
|
1312 |
msgid "+ Add filter"
|
1313 |
msgstr ""
|
1319 |
msgid "See %d more filters"
|
1320 |
msgstr "Tüm Filtreleri Sıfırla"
|
1321 |
|
1322 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1323 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1324 |
msgid "Use the new filter preset feature for your filters"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1328 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1329 |
msgid ""
|
1330 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1334 |
msgstr ""
|
1335 |
|
1336 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1337 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1338 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1339 |
msgid ""
|
1340 |
"We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
#. translators: 1. Url to docs.
|
1345 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1346 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1347 |
msgid ""
|
1348 |
"We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
|
1349 |
"to use this new feature."
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1353 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1354 |
msgid ""
|
1355 |
"We offer a tool to automatically convert the widget filters of your shop in "
|
1358 |
"will be lost during the process.</b>"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1362 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1363 |
msgid ""
|
1364 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1366 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1370 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1371 |
msgid "Convert your widgets in a preset now"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1375 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1376 |
msgid "No thanks"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: templates/filters/global/reset-filters.php:24
|
1380 |
#, fuzzy
|
1381 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1382 |
msgid "Reset filters"
|
1383 |
msgstr "Tüm Filtreleri Sıfırla"
|
1384 |
|
1385 |
+
# @ yit
|
1386 |
+
#, fuzzy
|
1387 |
+
#~ msgctxt "[Admin] Menu title"
|
1388 |
+
#~ msgid "Ajax Product Filter"
|
1389 |
+
#~ msgstr "YITH WooCommerce Ajax Navigation"
|
1390 |
+
|
1391 |
# @ yit
|
1392 |
#, fuzzy
|
1393 |
#~ msgid "YITH WooCommerce Ajax Product Filter"
|
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Navigation\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://wordpress.org/support/plugin/yith-woocommerce-ajax-product-filter\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -29,94 +29,94 @@ msgstr ""
|
|
29 |
"X-Poedit-SearchPathExcluded-2: node_modules\n"
|
30 |
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
31 |
|
32 |
-
#: includes/data-stores/class
|
33 |
msgid "Draft Preset"
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: includes/functions
|
37 |
-
#: includes/functions
|
38 |
msgid "Term"
|
39 |
msgstr ""
|
40 |
|
41 |
-
#: includes/functions
|
42 |
-
#: includes/widgets/class
|
43 |
msgid "Color"
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: includes/functions
|
47 |
msgid "Labels"
|
48 |
msgstr ""
|
49 |
|
50 |
-
#: includes/widgets/class
|
51 |
msgid "Filter the list of products without reloading the page"
|
52 |
msgstr ""
|
53 |
|
54 |
-
#: includes/widgets/class
|
55 |
msgid "Filters:"
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: includes/widgets/class
|
59 |
msgid "List"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: includes/widgets/class
|
63 |
msgid "Label"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: includes/widgets/class
|
67 |
msgid "Dropdown"
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: includes/widgets/class
|
71 |
-
#: includes/widgets/class
|
72 |
msgid "Title"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: includes/widgets/class
|
76 |
msgid "Type:"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes/widgets/class
|
80 |
msgid "Query Type:"
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: includes/widgets/class
|
84 |
msgid "OR"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: includes/widgets/class
|
88 |
msgid "Attribute:"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: includes/widgets/class
|
92 |
msgid "Display (default All):"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/widgets/class
|
96 |
msgid "All (no hierarchical)"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: includes/widgets/class
|
100 |
msgid "All (hierarchical)"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: includes/widgets/class
|
104 |
msgid "Only Parent"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: includes/widgets/class
|
108 |
msgid "CSS custom class"
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: includes/widgets/class
|
112 |
msgid "YITH AJAX Reset Filter"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: includes/widgets/class
|
116 |
msgid "Reset All Filters"
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: includes/widgets/class
|
120 |
msgid "Button Label"
|
121 |
msgstr ""
|
122 |
|
@@ -142,117 +142,112 @@ msgid ""
|
|
142 |
"your e-commerce shop on <strong>YITH</strong></a>"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: includes/class
|
146 |
msgctxt "[Admin] Copy confirmation message"
|
147 |
msgid "Content copied to your clipboard"
|
148 |
msgstr ""
|
149 |
|
150 |
-
#: includes/class
|
151 |
msgctxt "[Admin] Confirm filter delete message"
|
152 |
msgid "Are you sure you want to delete this item?"
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: includes/class
|
156 |
#. translators: 1. Number of items that will be added.
|
157 |
msgctxt "[Admin] Confirm add all terms message"
|
158 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: includes/class
|
162 |
msgctxt "[Admin] Error message"
|
163 |
msgid "\"Filter title\" is a required field"
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: includes/class
|
167 |
msgctxt "[Admin] Message shown when filter has empty title"
|
168 |
msgid "< no title >"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: includes/class
|
172 |
msgctxt "[Admin] Media library title, when selecting images"
|
173 |
msgid "Select media you want to use"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: includes/class
|
177 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
178 |
msgid "Use this media"
|
179 |
msgstr ""
|
180 |
|
181 |
-
#: includes/class
|
182 |
msgctxt "[Admin] tab name"
|
183 |
msgid "Filter presets"
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: includes/class
|
187 |
msgctxt "[Admin] tab name"
|
188 |
msgid "General settings"
|
189 |
msgstr ""
|
190 |
|
191 |
-
#: includes/class
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "SEO"
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/class
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "Premium Version"
|
199 |
msgstr ""
|
200 |
|
201 |
-
#: includes/class
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Legacy"
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: includes/class
|
207 |
-
msgctxt "[Admin] Menu title"
|
208 |
-
msgid "Ajax Product Filter"
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
#: includes/class.yith-wcan-admin.php:199
|
212 |
msgctxt "[Admin] Plugin description"
|
213 |
msgid ""
|
214 |
"It allows your users to find the product they are looking for as quickly as "
|
215 |
"possible."
|
216 |
msgstr ""
|
217 |
|
218 |
-
#: includes/class
|
219 |
msgctxt "[HELP TAB] Video title"
|
220 |
msgid ""
|
221 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
222 |
"the shop page:</b>"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/class
|
226 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
227 |
msgid "item"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: includes/class
|
231 |
msgctxt "[Admin] Preset table empty message second line"
|
232 |
msgid "But don't worry, here you can create your first one!"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: includes/class
|
236 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
237 |
msgid "Clear Product Filter transients"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: includes/class
|
241 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
242 |
msgid "Run filter widgets upgrade"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: includes/class
|
246 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
247 |
msgid "Clear"
|
248 |
msgstr ""
|
249 |
|
250 |
-
#: includes/class
|
251 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
252 |
msgid "Run"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: includes/class
|
256 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
257 |
msgid ""
|
258 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
@@ -260,39 +255,39 @@ msgid ""
|
|
260 |
"configuration, and filters do not display the expected results."
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: includes/class
|
264 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
265 |
msgid ""
|
266 |
"This will create a preset for any sidebar of your shop containing filter "
|
267 |
"widgets; preset will be configured to match widgets specifications"
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: includes/class
|
271 |
msgctxt "[Admin] Filter edit form"
|
272 |
msgid "Taxonomy"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: includes/class
|
276 |
msgctxt "[Admin] Filter edit form"
|
277 |
msgid "Checkbox"
|
278 |
msgstr ""
|
279 |
|
280 |
-
#: includes/class
|
281 |
msgctxt "[Admin] Filter edit form"
|
282 |
msgid "Select"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/class
|
286 |
msgctxt "[Admin] Filter edit form"
|
287 |
msgid "Text"
|
288 |
msgstr ""
|
289 |
|
290 |
-
#: includes/class
|
291 |
msgctxt "[Admin] Filter edit form"
|
292 |
msgid "Color Swatches"
|
293 |
msgstr ""
|
294 |
|
295 |
-
#: includes/class
|
296 |
msgctxt "[Admin] Filter edit form"
|
297 |
msgid "Label"
|
298 |
msgstr ""
|
@@ -307,32 +302,32 @@ msgctxt "[Admin] Filter edit form"
|
|
307 |
msgid "Enter a name to identify this filter"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: plugin-options/filter-options.php:
|
311 |
msgctxt "[Admin] Filter edit form"
|
312 |
msgid "Filter for"
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: plugin-options/filter-options.php:
|
316 |
msgctxt "[Admin] Filter edit form"
|
317 |
msgid "Select the parameters you wish to filter for"
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: plugin-options/filter-options.php:
|
321 |
msgctxt "[Admin] Filter edit form"
|
322 |
msgid "Choose taxonomy"
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: plugin-options/filter-options.php:
|
326 |
msgctxt "[Admin] Filter edit form"
|
327 |
msgid "Select which taxonomy to use for this filter"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: plugin-options/filter-options.php:
|
331 |
msgctxt "[Admin] Filter edit form"
|
332 |
msgid "Auto-populate with all terms"
|
333 |
msgstr ""
|
334 |
|
335 |
-
#: plugin-options/filter-options.php:
|
336 |
msgctxt "[Admin] Filter edit form"
|
337 |
msgid ""
|
338 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
@@ -341,67 +336,67 @@ msgid ""
|
|
341 |
"as well.</span>"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: plugin-options/filter-options.php:
|
345 |
msgctxt "[Admin] Filter edit form"
|
346 |
msgid "Choose terms"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: plugin-options/filter-options.php:
|
350 |
msgctxt "[Admin] Filter edit form"
|
351 |
msgid "Select which terms to use for filtering"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: plugin-options/filter-options.php:
|
355 |
msgctxt "[Admin] Filter edit form"
|
356 |
msgid "Filter type"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: plugin-options/filter-options.php:
|
360 |
msgctxt "[Admin] Filter edit form"
|
361 |
msgid "Select the filter type for this filter"
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: plugin-options/filter-options.php:
|
365 |
msgctxt "[Admin] Filter edit form"
|
366 |
msgid "Labels"
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: plugin-options/filter-options.php:
|
370 |
msgctxt "[Admin] Filter edit form"
|
371 |
msgid "Show below"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: plugin-options/filter-options.php:
|
375 |
msgctxt "[Admin] Filter edit form"
|
376 |
msgid "Show on the right"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: plugin-options/filter-options.php:
|
380 |
msgctxt "[Admin] Filter edit form"
|
381 |
msgid "Hide"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: plugin-options/filter-options.php:
|
385 |
msgctxt "[Admin] Filter edit form"
|
386 |
msgid "Choose if and where to show the label inside your filter"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: plugin-options/filter-options.php:
|
390 |
msgctxt "[Admin] Filter edit form"
|
391 |
msgid "Columns number"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: plugin-options/filter-options.php:
|
395 |
msgctxt "[Admin] Filter edit form"
|
396 |
msgid "Set the number of items per row you want to show for this design"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: plugin-options/filter-options.php:
|
400 |
msgctxt "[Admin] Filter edit form"
|
401 |
msgid "Customize terms"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: plugin-options/filter-options.php:
|
405 |
msgctxt "[Admin] Filter edit form"
|
406 |
msgid ""
|
407 |
"Configure your terms individually; system will otherwise use default "
|
@@ -415,154 +410,154 @@ msgid ""
|
|
415 |
"this option and use the boxes below</span>"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: plugin-options/filter-options.php:
|
419 |
msgctxt "[Admin] Filter edit form"
|
420 |
msgid "Terms options"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: plugin-options/filter-options.php:
|
424 |
msgctxt "[Admin] Filter edit form"
|
425 |
msgid "Show hierarchy"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: plugin-options/filter-options.php:
|
429 |
msgctxt "[Admin] Filter edit form"
|
430 |
msgid "No, show all terms in same level"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: plugin-options/filter-options.php:
|
434 |
msgctxt "[Admin] Filter edit form"
|
435 |
msgid "No, show only parent terms"
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: plugin-options/filter-options.php:
|
439 |
msgctxt "[Admin] Filter edit form"
|
440 |
msgid "Yes"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: plugin-options/filter-options.php:
|
444 |
msgctxt "[Admin] Filter edit form"
|
445 |
msgid "Choose how to show terms hierarchy"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: plugin-options/filter-options.php:
|
449 |
msgctxt "[Admin] Filter edit form"
|
450 |
msgid "Allow multiple selection"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: plugin-options/filter-options.php:
|
454 |
msgctxt "[Admin] Filter edit form"
|
455 |
msgid "Enable if the user can select multiple terms when filtering products"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: plugin-options/filter-options.php:
|
459 |
msgctxt "[Admin] Filter edit form"
|
460 |
msgid "Multiselect relation"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: plugin-options/filter-options.php:
|
464 |
msgctxt "[Admin] Filter edit form"
|
465 |
msgid "Choose how multiple terms selection should behave"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: includes/class
|
469 |
msgctxt "[Admin] Filter edit form, sorting options"
|
470 |
msgid "Default sorting"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: includes/class
|
474 |
msgctxt "[Admin] Filter edit form, sorting options"
|
475 |
msgid "Sort by popularity"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: includes/class
|
479 |
msgctxt "[Admin] Filter edit form, sorting options"
|
480 |
msgid "Sort by average rating"
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/class
|
484 |
msgctxt "[Admin] Filter edit form, sorting options"
|
485 |
msgid "Sort by latest"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: includes/class
|
489 |
msgctxt "[Admin] Filter edit form, sorting options"
|
490 |
msgid "Sort by price: low to high"
|
491 |
msgstr ""
|
492 |
|
493 |
-
#: includes/class
|
494 |
msgctxt "[Admin] Filter edit form, sorting options"
|
495 |
msgid "Sort by price: high to low"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: includes/class
|
499 |
msgctxt "[Admin] Default filter title"
|
500 |
msgid "New filter"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/class
|
504 |
-
#: includes/filters/class
|
505 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
506 |
msgid "All"
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: includes/class
|
510 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
511 |
msgid "Search..."
|
512 |
msgstr ""
|
513 |
|
514 |
-
#: includes/class
|
515 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
516 |
msgid "No item found"
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: includes/class
|
520 |
#. translators: 1. Number of items to show.
|
521 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
522 |
msgid "Show %d more"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: includes/class
|
526 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
527 |
msgid "Close"
|
528 |
msgstr ""
|
529 |
|
530 |
-
#: includes/class
|
531 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
532 |
msgid "Save"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: includes/class
|
536 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
537 |
msgid "Show results"
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: includes/class
|
541 |
msgctxt ""
|
542 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
543 |
"selection"
|
544 |
msgid "Clear"
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: includes/class
|
548 |
msgctxt ""
|
549 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
550 |
"selection"
|
551 |
msgid "Clear All"
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: includes/class
|
555 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
556 |
msgid "Default preset"
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: includes/class
|
560 |
#. translators: 1. Taxonomy name.
|
561 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
562 |
msgid "Filter by %s"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: includes/class
|
566 |
msgctxt "[Admin] Label in new preset page"
|
567 |
msgid "Default"
|
568 |
msgstr ""
|
@@ -577,134 +572,134 @@ msgctxt "[Admin] Label in new preset page"
|
|
577 |
msgid "Enter a name to identify this filter preset"
|
578 |
msgstr ""
|
579 |
|
580 |
-
#: templates/admin/preset-filters.php:
|
581 |
msgctxt "[Admin] Label in new preset page"
|
582 |
msgid "Filters of this preset"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: includes/class
|
586 |
-
#: includes/class
|
587 |
msgctxt "[Admin] name of presets custom post type"
|
588 |
msgid "Filter presets"
|
589 |
msgstr ""
|
590 |
|
591 |
-
#: includes/class
|
592 |
msgctxt "[Admin] singular name of presets custom post type"
|
593 |
msgid "Filter preset"
|
594 |
msgstr ""
|
595 |
|
596 |
-
#: includes/class
|
597 |
msgctxt "[Admin] add new filter preset label"
|
598 |
msgid "Add new preset"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: includes/class
|
602 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
603 |
msgid "Convert widgets in a preset"
|
604 |
msgstr ""
|
605 |
|
606 |
-
#: includes/data-stores/class
|
607 |
msgctxt ""
|
608 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
609 |
"not exist"
|
610 |
msgid "Invalid preset."
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: includes/data-stores/class
|
614 |
#. translators: 1. Title of original preset.
|
615 |
msgctxt "[ADMIN] Title of the cloned preset"
|
616 |
msgid "%s - Copy"
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: includes/elementor/class
|
620 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
621 |
msgid "YITH AJAX Filters Preset"
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: includes/elementor/class
|
625 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
626 |
msgid "YITH AJAX Filters Reset Button"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: includes/elementor/class
|
630 |
-
#: includes/shortcodes/class
|
631 |
msgctxt "[ELEMENTOR] Default preset option"
|
632 |
msgid "Choose an option"
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: includes/elementor/class
|
636 |
msgctxt "[ELEMENTOR] Section title"
|
637 |
msgid "Filters"
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: includes/elementor/class
|
641 |
msgctxt "[ELEMENTOR] Section title"
|
642 |
msgid "General"
|
643 |
msgstr ""
|
644 |
|
645 |
-
#: includes/elementor/class
|
646 |
msgctxt "[ELEMENTOR] Control label"
|
647 |
msgid "Preset"
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: includes/elementor/class
|
651 |
msgctxt "[ELEMENTOR] Widget description"
|
652 |
msgid "This widget will display \"Filters reset\" button, wherever it is placed"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/elementor/class
|
656 |
msgctxt "[ELEMENTOR] Widget description"
|
657 |
msgid ""
|
658 |
"It will allow users to reset the filer selection; it will only appear when "
|
659 |
"there is an active filter."
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: includes/elementor/class
|
663 |
msgctxt "[ELEMENTOR] Widget description"
|
664 |
msgid ""
|
665 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
666 |
"when \"Reset button position\" option won't work for your product's loop"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: includes/functions
|
670 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
671 |
msgid "Color 1"
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: includes/functions
|
675 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
676 |
msgid "Color 2"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/functions
|
680 |
msgctxt "[FRONTEND] Star rating template"
|
681 |
msgid "star"
|
682 |
msgid_plural "stars"
|
683 |
msgstr[0] ""
|
684 |
msgstr[1] ""
|
685 |
|
686 |
-
#: includes/functions
|
687 |
#. translators: 1. Rating.
|
688 |
msgctxt "[FRONTEND] Star rating label"
|
689 |
msgid "Rated %s out of 5"
|
690 |
msgstr ""
|
691 |
|
692 |
-
#: includes/shortcodes/class
|
693 |
msgctxt "[GUTENBERG]: block name"
|
694 |
msgid "YITH AJAX Filters Preset"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: includes/shortcodes/class
|
698 |
msgctxt "[GUTENBERG]: block name"
|
699 |
msgid "YITH Reset Filters Button"
|
700 |
msgstr ""
|
701 |
|
702 |
-
#: includes/shortcodes/class
|
703 |
msgctxt "[GUTENBERG]: block description"
|
704 |
msgid "Show filters from a preset"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/shortcodes/class
|
708 |
msgctxt "[GUTENBERG]: block description"
|
709 |
msgid ""
|
710 |
"Show reset filters button, when a filter is applied and button is enabled "
|
@@ -713,77 +708,77 @@ msgid ""
|
|
713 |
"for your product's loop"
|
714 |
msgstr ""
|
715 |
|
716 |
-
#: includes/shortcodes/class
|
717 |
msgctxt "[GUTENBERG]: attribute description"
|
718 |
msgid "Preset"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: includes/tables/class
|
722 |
msgctxt "[Admin] Preset table column header"
|
723 |
msgid "Preset name"
|
724 |
msgstr ""
|
725 |
|
726 |
-
#: includes/tables/class
|
727 |
msgctxt "[Admin] Preset table column header"
|
728 |
msgid "Shortcode"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/tables/class
|
732 |
msgctxt "[Admin] Preset edit action label"
|
733 |
msgid "Edit this preset"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: includes/tables/class
|
737 |
msgctxt "[Admin] Preset clone action label"
|
738 |
msgid "Clone this preset"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: includes/tables/class
|
742 |
msgctxt "[Admin] Preset delete action label"
|
743 |
msgid "Delete this preset"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: includes/tables/class
|
747 |
msgctxt "[Admin] Preset delete confirm label"
|
748 |
msgid "Are you sure you want to delete this preset?"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/tables/class
|
752 |
msgctxt "[Admin] on-off yes"
|
753 |
msgid "YES"
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: includes/tables/class
|
757 |
msgctxt "[Admin] on-off no"
|
758 |
msgid "NO"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: includes/tables/class
|
762 |
msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
|
763 |
msgid "filter preset"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: templates/admin/preset-filters.php:
|
767 |
msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
|
768 |
msgid "filter"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/tables/class
|
772 |
msgctxt "[Admin] New preset button label"
|
773 |
msgid "Create a new preset"
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: includes/widgets/class
|
777 |
msgctxt "[ADMIN] Name of the preset widget"
|
778 |
msgid "YITH AJAX Filters Preset"
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: includes/widgets/class
|
782 |
msgctxt "[ADMIN] Preset widget options"
|
783 |
msgid "Preset"
|
784 |
msgstr ""
|
785 |
|
786 |
-
#: includes/widgets/class
|
787 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
788 |
msgctxt "[ADMIN] Preset widget options"
|
789 |
msgid ""
|
@@ -791,27 +786,27 @@ msgid ""
|
|
791 |
"Presets</a> and create your first preset"
|
792 |
msgstr ""
|
793 |
|
794 |
-
#: includes/widgets/class
|
795 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
796 |
msgid "YITH AJAX Product Filter"
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/widgets/class
|
800 |
msgctxt "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
801 |
msgid "AND"
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: includes/widgets/class
|
805 |
msgctxt "[Plugin Name]"
|
806 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: plugin-options/filter-options.php:
|
810 |
msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
|
811 |
msgid "AND - Results need to match all selected terms at the same time"
|
812 |
msgstr ""
|
813 |
|
814 |
-
#: plugin-options/filter-options.php:
|
815 |
msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
|
816 |
msgid "OR - Results need to match at least one of the selected terms"
|
817 |
msgstr ""
|
@@ -1072,21 +1067,21 @@ msgstr ""
|
|
1072 |
msgctxt "[ADMIN] Premium tab"
|
1073 |
msgid ""
|
1074 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1075 |
-
"view<br/>\
|
1076 |
-
"<b>Filter by tag</b>: to let users filter products by tag<br/>\
|
1077 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1078 |
-
"range (based on their budget availability)<br/>\
|
1079 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1080 |
"attributes available in your store, like color and size. For the color "
|
1081 |
"filter, you can either choose square or circular color swatches or use "
|
1082 |
-
"custom images to recall a specific pattern, shade or fabric texture<br/>\
|
1083 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1084 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1085 |
-
"concentrate only on high-rated ones)<br/>\
|
1086 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands "
|
1087 |
-
"Add-on plugin, you can also filter products by specific brands<br/>\
|
1088 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1089 |
-
"filter products and view only those with a discount<br/>\
|
1090 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1091 |
"filter products based on their needs and exclude out-of-stock products from "
|
1092 |
"the list"
|
@@ -1201,73 +1196,73 @@ msgid ""
|
|
1201 |
"easier to share)"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: templates/admin/preset-edit.php:
|
1205 |
msgctxt "[Admin] Back link in new preset page"
|
1206 |
msgid "< back to preset list"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: templates/admin/preset-edit.php:
|
1210 |
msgctxt "[ADMIN] Title for new preset page"
|
1211 |
msgid "Edit filter preset"
|
1212 |
msgstr ""
|
1213 |
|
1214 |
-
#: templates/admin/preset-edit.php:
|
1215 |
msgctxt "[ADMIN] Title for new preset page"
|
1216 |
msgid "Add new filter preset"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: templates/admin/preset-edit.php:
|
1220 |
msgctxt "[ADMIN] Preset save message"
|
1221 |
msgid "Preset saved correctly"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: templates/admin/preset-edit.php:
|
1225 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1226 |
msgid "Save preset"
|
1227 |
msgstr ""
|
1228 |
|
1229 |
-
#: templates/admin/preset-empty-content.php:
|
1230 |
msgctxt "Alt text for empty preset image"
|
1231 |
msgid "Empty preset"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
-
#: templates/admin/preset-empty-content.php:
|
1235 |
#. translators: 1. Missing item name.
|
1236 |
msgctxt "[Admin] Preset table empty message"
|
1237 |
msgid "You don't have any %s yet."
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#: templates/admin/preset-filter-term.php:
|
1241 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1242 |
msgid "Label"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: templates/admin/preset-filter-term.php:
|
1246 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1247 |
msgid "Tooltip"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: templates/admin/preset-filter-term.php:
|
1251 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1252 |
msgid "Color"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: templates/admin/preset-filter.php:
|
1256 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1257 |
msgid "Save Filter"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
-
#: templates/admin/preset-filter.php:
|
1261 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1262 |
msgid "Delete Filter"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
-
#: templates/admin/preset-filters.php:
|
1266 |
msgctxt "[Admin] New filter button label"
|
1267 |
msgid "Add a new filter"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: templates/admin/preset-filters.php:
|
1271 |
msgctxt "[Admin] Add new filter in new preset page"
|
1272 |
msgid "+ Add filter"
|
1273 |
msgstr ""
|
@@ -1278,12 +1273,12 @@ msgctxt "[Admin] Add new filter in new preset page"
|
|
1278 |
msgid "See %d more filters"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: templates/admin/upgrade-note-modal.php:
|
1282 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1283 |
msgid "Use the new filter preset feature for your filters"
|
1284 |
msgstr ""
|
1285 |
|
1286 |
-
#: templates/admin/upgrade-note-modal.php:
|
1287 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1288 |
msgid ""
|
1289 |
"From the version 4.0 we built a powerful system that allows you to create "
|
@@ -1292,7 +1287,7 @@ msgid ""
|
|
1292 |
"block or the Elementor widget."
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: templates/admin/upgrade-note-modal.php:
|
1296 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1297 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1298 |
msgid ""
|
@@ -1301,7 +1296,7 @@ msgid ""
|
|
1301 |
"feature."
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: templates/admin/upgrade-note-modal.php:
|
1305 |
#. translators: 1. Url to docs.
|
1306 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1307 |
msgid ""
|
@@ -1309,7 +1304,7 @@ msgid ""
|
|
1309 |
"to use this new feature."
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: templates/admin/upgrade-note-modal.php:
|
1313 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1314 |
msgid ""
|
1315 |
"We offer a tool to automatically convert the widget filters of your shop in "
|
@@ -1318,7 +1313,7 @@ msgid ""
|
|
1318 |
"will be lost during the process.</b>"
|
1319 |
msgstr ""
|
1320 |
|
1321 |
-
#: templates/admin/upgrade-note-modal.php:
|
1322 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1323 |
msgid ""
|
1324 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
@@ -1326,17 +1321,17 @@ msgid ""
|
|
1326 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: templates/admin/upgrade-note-modal.php:
|
1330 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1331 |
msgid "Convert your widgets in a preset now"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: templates/admin/upgrade-note-modal.php:
|
1335 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1336 |
msgid "No thanks"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: templates/filters/global/reset-filters.php:
|
1340 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1341 |
msgid "Reset filters"
|
1342 |
msgstr ""
|
5 |
"Project-Id-Version: YITH WooCommerce Ajax Navigation\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://wordpress.org/support/plugin/yith-woocommerce-ajax-product-filter\n"
|
8 |
+
"POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
29 |
"X-Poedit-SearchPathExcluded-2: node_modules\n"
|
30 |
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
31 |
|
32 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:57
|
33 |
msgid "Draft Preset"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
|
37 |
+
#: includes/functions-yith-wcan.php:132
|
38 |
msgid "Term"
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: includes/functions-yith-wcan.php:98
|
42 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:438
|
43 |
msgid "Color"
|
44 |
msgstr ""
|
45 |
|
46 |
+
#: includes/functions-yith-wcan.php:132
|
47 |
msgid "Labels"
|
48 |
msgstr ""
|
49 |
|
50 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:46
|
51 |
msgid "Filter the list of products without reloading the page"
|
52 |
msgstr ""
|
53 |
|
54 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:205
|
55 |
msgid "Filters:"
|
56 |
msgstr ""
|
57 |
|
58 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:437
|
59 |
msgid "List"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:439
|
63 |
msgid "Label"
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:440
|
67 |
msgid "Dropdown"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:447
|
71 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
|
72 |
msgid "Title"
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:453
|
76 |
msgid "Type:"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:464
|
80 |
msgid "Query Type:"
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:467
|
84 |
msgid "OR"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:472
|
88 |
msgid "Attribute:"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:479
|
92 |
msgid "Display (default All):"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:481
|
96 |
msgid "All (no hierarchical)"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:482
|
100 |
msgid "All (hierarchical)"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:483
|
104 |
msgid "Only Parent"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:490
|
108 |
msgid "CSS custom class"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
|
112 |
msgid "YITH AJAX Reset Filter"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
|
116 |
msgid "Reset All Filters"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
|
120 |
msgid "Button Label"
|
121 |
msgstr ""
|
122 |
|
142 |
"your e-commerce shop on <strong>YITH</strong></a>"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: includes/class-yith-wcan-admin.php:107
|
146 |
msgctxt "[Admin] Copy confirmation message"
|
147 |
msgid "Content copied to your clipboard"
|
148 |
msgstr ""
|
149 |
|
150 |
+
#: includes/class-yith-wcan-admin.php:108
|
151 |
msgctxt "[Admin] Confirm filter delete message"
|
152 |
msgid "Are you sure you want to delete this item?"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: includes/class-yith-wcan-admin.php:110
|
156 |
#. translators: 1. Number of items that will be added.
|
157 |
msgctxt "[Admin] Confirm add all terms message"
|
158 |
msgid "Are you sure you want to proceed? This operation will add %s items"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: includes/class-yith-wcan-admin.php:111
|
162 |
msgctxt "[Admin] Error message"
|
163 |
msgid "\"Filter title\" is a required field"
|
164 |
msgstr ""
|
165 |
|
166 |
+
#: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
|
167 |
msgctxt "[Admin] Message shown when filter has empty title"
|
168 |
msgid "< no title >"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: includes/class-yith-wcan-admin.php:115
|
172 |
msgctxt "[Admin] Media library title, when selecting images"
|
173 |
msgid "Select media you want to use"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: includes/class-yith-wcan-admin.php:116
|
177 |
msgctxt "[Admin] Media library confirm button, when selecting images"
|
178 |
msgid "Use this media"
|
179 |
msgstr ""
|
180 |
|
181 |
+
#: includes/class-yith-wcan-admin.php:184
|
182 |
msgctxt "[Admin] tab name"
|
183 |
msgid "Filter presets"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: includes/class-yith-wcan-admin.php:185
|
187 |
msgctxt "[Admin] tab name"
|
188 |
msgid "General settings"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: includes/class-yith-wcan-admin.php:186
|
192 |
msgctxt "[Admin] tab name"
|
193 |
msgid "SEO"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/class-yith-wcan-admin.php:187
|
197 |
msgctxt "[Admin] tab name"
|
198 |
msgid "Premium Version"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: includes/class-yith-wcan-admin.php:191
|
202 |
msgctxt "[Admin] tab name"
|
203 |
msgid "Legacy"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/class-yith-wcan-admin.php:199
|
|
|
|
|
|
|
|
|
|
|
207 |
msgctxt "[Admin] Plugin description"
|
208 |
msgid ""
|
209 |
"It allows your users to find the product they are looking for as quickly as "
|
210 |
"possible."
|
211 |
msgstr ""
|
212 |
|
213 |
+
#: includes/class-yith-wcan-admin.php:211
|
214 |
msgctxt "[HELP TAB] Video title"
|
215 |
msgid ""
|
216 |
"Check this video to learn how to <b>create a filter preset and show it on "
|
217 |
"the shop page:</b>"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/class-yith-wcan-admin.php:329
|
221 |
msgctxt "[Admin] Generic item name, in \"You have no x yet\""
|
222 |
msgid "item"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: includes/class-yith-wcan-admin.php:330
|
226 |
msgctxt "[Admin] Preset table empty message second line"
|
227 |
msgid "But don't worry, here you can create your first one!"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: includes/class-yith-wcan-admin.php:480
|
231 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
232 |
msgid "Clear Product Filter transients"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: includes/class-yith-wcan-admin.php:486
|
236 |
msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
|
237 |
msgid "Run filter widgets upgrade"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: includes/class-yith-wcan-admin.php:481
|
241 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
242 |
msgid "Clear"
|
243 |
msgstr ""
|
244 |
|
245 |
+
#: includes/class-yith-wcan-admin.php:487
|
246 |
msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
|
247 |
msgid "Run"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: includes/class-yith-wcan-admin.php:482
|
251 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
252 |
msgid ""
|
253 |
"This will clear all transients related to the YITH WooCommerce AJAX Product "
|
255 |
"configuration, and filters do not display the expected results."
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: includes/class-yith-wcan-admin.php:488
|
259 |
msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
|
260 |
msgid ""
|
261 |
"This will create a preset for any sidebar of your shop containing filter "
|
262 |
"widgets; preset will be configured to match widgets specifications"
|
263 |
msgstr ""
|
264 |
|
265 |
+
#: includes/class-yith-wcan-filter-factory.php:72
|
266 |
msgctxt "[Admin] Filter edit form"
|
267 |
msgid "Taxonomy"
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: includes/class-yith-wcan-filter-factory.php:86
|
271 |
msgctxt "[Admin] Filter edit form"
|
272 |
msgid "Checkbox"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: includes/class-yith-wcan-filter-factory.php:87
|
276 |
msgctxt "[Admin] Filter edit form"
|
277 |
msgid "Select"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: includes/class-yith-wcan-filter-factory.php:88
|
281 |
msgctxt "[Admin] Filter edit form"
|
282 |
msgid "Text"
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: includes/class-yith-wcan-filter-factory.php:89
|
286 |
msgctxt "[Admin] Filter edit form"
|
287 |
msgid "Color Swatches"
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: includes/class-yith-wcan-filter-factory.php:90
|
291 |
msgctxt "[Admin] Filter edit form"
|
292 |
msgid "Label"
|
293 |
msgstr ""
|
302 |
msgid "Enter a name to identify this filter"
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: plugin-options/filter-options.php:40
|
306 |
msgctxt "[Admin] Filter edit form"
|
307 |
msgid "Filter for"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: plugin-options/filter-options.php:44
|
311 |
msgctxt "[Admin] Filter edit form"
|
312 |
msgid "Select the parameters you wish to filter for"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: plugin-options/filter-options.php:49
|
316 |
msgctxt "[Admin] Filter edit form"
|
317 |
msgid "Choose taxonomy"
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: plugin-options/filter-options.php:53
|
321 |
msgctxt "[Admin] Filter edit form"
|
322 |
msgid "Select which taxonomy to use for this filter"
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: plugin-options/filter-options.php:58
|
326 |
msgctxt "[Admin] Filter edit form"
|
327 |
msgid "Auto-populate with all terms"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: plugin-options/filter-options.php:60
|
331 |
msgctxt "[Admin] Filter edit form"
|
332 |
msgid ""
|
333 |
"Populate this filter with all existing terms of the selected taxonomy.\n"
|
336 |
"as well.</span>"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: plugin-options/filter-options.php:69
|
340 |
msgctxt "[Admin] Filter edit form"
|
341 |
msgid "Choose terms"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: plugin-options/filter-options.php:74
|
345 |
msgctxt "[Admin] Filter edit form"
|
346 |
msgid "Select which terms to use for filtering"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: plugin-options/filter-options.php:78
|
350 |
msgctxt "[Admin] Filter edit form"
|
351 |
msgid "Filter type"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: plugin-options/filter-options.php:82
|
355 |
msgctxt "[Admin] Filter edit form"
|
356 |
msgid "Select the filter type for this filter"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: plugin-options/filter-options.php:86
|
360 |
msgctxt "[Admin] Filter edit form"
|
361 |
msgid "Labels"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: plugin-options/filter-options.php:89
|
365 |
msgctxt "[Admin] Filter edit form"
|
366 |
msgid "Show below"
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: plugin-options/filter-options.php:90
|
370 |
msgctxt "[Admin] Filter edit form"
|
371 |
msgid "Show on the right"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: plugin-options/filter-options.php:91
|
375 |
msgctxt "[Admin] Filter edit form"
|
376 |
msgid "Hide"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: plugin-options/filter-options.php:93
|
380 |
msgctxt "[Admin] Filter edit form"
|
381 |
msgid "Choose if and where to show the label inside your filter"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: plugin-options/filter-options.php:97
|
385 |
msgctxt "[Admin] Filter edit form"
|
386 |
msgid "Columns number"
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: plugin-options/filter-options.php:102
|
390 |
msgctxt "[Admin] Filter edit form"
|
391 |
msgid "Set the number of items per row you want to show for this design"
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: plugin-options/filter-options.php:106
|
395 |
msgctxt "[Admin] Filter edit form"
|
396 |
msgid "Customize terms"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: plugin-options/filter-options.php:109
|
400 |
msgctxt "[Admin] Filter edit form"
|
401 |
msgid ""
|
402 |
"Configure your terms individually; system will otherwise use default "
|
410 |
"this option and use the boxes below</span>"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: plugin-options/filter-options.php:119
|
414 |
msgctxt "[Admin] Filter edit form"
|
415 |
msgid "Terms options"
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: plugin-options/filter-options.php:125
|
419 |
msgctxt "[Admin] Filter edit form"
|
420 |
msgid "Show hierarchy"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: plugin-options/filter-options.php:128
|
424 |
msgctxt "[Admin] Filter edit form"
|
425 |
msgid "No, show all terms in same level"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: plugin-options/filter-options.php:129
|
429 |
msgctxt "[Admin] Filter edit form"
|
430 |
msgid "No, show only parent terms"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: plugin-options/filter-options.php:130
|
434 |
msgctxt "[Admin] Filter edit form"
|
435 |
msgid "Yes"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: plugin-options/filter-options.php:132
|
439 |
msgctxt "[Admin] Filter edit form"
|
440 |
msgid "Choose how to show terms hierarchy"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: plugin-options/filter-options.php:136
|
444 |
msgctxt "[Admin] Filter edit form"
|
445 |
msgid "Allow multiple selection"
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: plugin-options/filter-options.php:138
|
449 |
msgctxt "[Admin] Filter edit form"
|
450 |
msgid "Enable if the user can select multiple terms when filtering products"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: plugin-options/filter-options.php:142
|
454 |
msgctxt "[Admin] Filter edit form"
|
455 |
msgid "Multiselect relation"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: plugin-options/filter-options.php:148
|
459 |
msgctxt "[Admin] Filter edit form"
|
460 |
msgid "Choose how multiple terms selection should behave"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: includes/class-yith-wcan-filter-factory.php:104
|
464 |
msgctxt "[Admin] Filter edit form, sorting options"
|
465 |
msgid "Default sorting"
|
466 |
msgstr ""
|
467 |
|
468 |
+
#: includes/class-yith-wcan-filter-factory.php:105
|
469 |
msgctxt "[Admin] Filter edit form, sorting options"
|
470 |
msgid "Sort by popularity"
|
471 |
msgstr ""
|
472 |
|
473 |
+
#: includes/class-yith-wcan-filter-factory.php:106
|
474 |
msgctxt "[Admin] Filter edit form, sorting options"
|
475 |
msgid "Sort by average rating"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: includes/class-yith-wcan-filter-factory.php:107
|
479 |
msgctxt "[Admin] Filter edit form, sorting options"
|
480 |
msgid "Sort by latest"
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: includes/class-yith-wcan-filter-factory.php:108
|
484 |
msgctxt "[Admin] Filter edit form, sorting options"
|
485 |
msgid "Sort by price: low to high"
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: includes/class-yith-wcan-filter-factory.php:109
|
489 |
msgctxt "[Admin] Filter edit form, sorting options"
|
490 |
msgid "Sort by price: high to low"
|
491 |
msgstr ""
|
492 |
|
493 |
+
#: includes/class-yith-wcan-filter.php:116
|
494 |
msgctxt "[Admin] Default filter title"
|
495 |
msgid "New filter"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: includes/class-yith-wcan-frontend.php:591
|
499 |
+
#: includes/filters/class-yith-wcan-filter-tax.php:62
|
500 |
msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
|
501 |
msgid "All"
|
502 |
msgstr ""
|
503 |
|
504 |
+
#: includes/class-yith-wcan-frontend.php:592
|
505 |
msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
|
506 |
msgid "Search..."
|
507 |
msgstr ""
|
508 |
|
509 |
+
#: includes/class-yith-wcan-frontend.php:593
|
510 |
msgctxt "[FRONTEND] Empty items list in the dropdown"
|
511 |
msgid "No item found"
|
512 |
msgstr ""
|
513 |
|
514 |
+
#: includes/class-yith-wcan-frontend.php:595
|
515 |
#. translators: 1. Number of items to show.
|
516 |
msgctxt "[FRONTEND] Show more link on terms dropdown"
|
517 |
msgid "Show %d more"
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/class-yith-wcan-frontend.php:596
|
521 |
msgctxt "[FRONTEND] Alt text for modal close button on mobile"
|
522 |
msgid "Close"
|
523 |
msgstr ""
|
524 |
|
525 |
+
#: includes/class-yith-wcan-frontend.php:597
|
526 |
msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
|
527 |
msgid "Save"
|
528 |
msgstr ""
|
529 |
|
530 |
+
#: includes/class-yith-wcan-frontend.php:598
|
531 |
msgctxt "[FRONTEND] Label for filter button, on mobile modal"
|
532 |
msgid "Show results"
|
533 |
msgstr ""
|
534 |
|
535 |
+
#: includes/class-yith-wcan-frontend.php:599
|
536 |
msgctxt ""
|
537 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
538 |
"selection"
|
539 |
msgid "Clear"
|
540 |
msgstr ""
|
541 |
|
542 |
+
#: includes/class-yith-wcan-frontend.php:600
|
543 |
msgctxt ""
|
544 |
"[FRONTEND] Label for clear selection link, that appears above filter after "
|
545 |
"selection"
|
546 |
msgid "Clear All"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: includes/class-yith-wcan-install.php:95
|
550 |
msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
|
551 |
msgid "Default preset"
|
552 |
msgstr ""
|
553 |
|
554 |
+
#: includes/class-yith-wcan-install.php:285
|
555 |
#. translators: 1. Taxonomy name.
|
556 |
msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
|
557 |
msgid "Filter by %s"
|
558 |
msgstr ""
|
559 |
|
560 |
+
#: includes/class-yith-wcan-preset-factory.php:112
|
561 |
msgctxt "[Admin] Label in new preset page"
|
562 |
msgid "Default"
|
563 |
msgstr ""
|
572 |
msgid "Enter a name to identify this filter preset"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: templates/admin/preset-filters.php:22
|
576 |
msgctxt "[Admin] Label in new preset page"
|
577 |
msgid "Filters of this preset"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: includes/class-yith-wcan-presets.php:95
|
581 |
+
#: includes/class-yith-wcan-presets.php:100
|
582 |
msgctxt "[Admin] name of presets custom post type"
|
583 |
msgid "Filter presets"
|
584 |
msgstr ""
|
585 |
|
586 |
+
#: includes/class-yith-wcan-presets.php:96
|
587 |
msgctxt "[Admin] singular name of presets custom post type"
|
588 |
msgid "Filter preset"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: includes/class-yith-wcan-presets.php:97
|
592 |
msgctxt "[Admin] add new filter preset label"
|
593 |
msgid "Add new preset"
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: includes/class-yith-wcan-presets.php:139
|
597 |
msgctxt "[ADMIN] Convert widgets tools, in preset tab"
|
598 |
msgid "Convert widgets in a preset"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:108
|
602 |
msgctxt ""
|
603 |
"[Generic] Error that happens when trying to read a filter preset that does "
|
604 |
"not exist"
|
605 |
msgid "Invalid preset."
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: includes/data-stores/class-yith-wcan-preset-data-store.php:235
|
609 |
#. translators: 1. Title of original preset.
|
610 |
msgctxt "[ADMIN] Title of the cloned preset"
|
611 |
msgid "%s - Copy"
|
612 |
msgstr ""
|
613 |
|
614 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:48
|
615 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
616 |
msgid "YITH AJAX Filters Preset"
|
617 |
msgstr ""
|
618 |
|
619 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
|
620 |
msgctxt "[ADMIN] Name of the preset elementor widget"
|
621 |
msgid "YITH AJAX Filters Reset Button"
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:89
|
625 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
|
626 |
msgctxt "[ELEMENTOR] Default preset option"
|
627 |
msgid "Choose an option"
|
628 |
msgstr ""
|
629 |
|
630 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:97
|
631 |
msgctxt "[ELEMENTOR] Section title"
|
632 |
msgid "Filters"
|
633 |
msgstr ""
|
634 |
|
635 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
|
636 |
msgctxt "[ELEMENTOR] Section title"
|
637 |
msgid "General"
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: includes/elementor/class-yith-wcan-elementor-filters.php:105
|
641 |
msgctxt "[ELEMENTOR] Control label"
|
642 |
msgid "Preset"
|
643 |
msgstr ""
|
644 |
|
645 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
|
646 |
msgctxt "[ELEMENTOR] Widget description"
|
647 |
msgid "This widget will display \"Filters reset\" button, wherever it is placed"
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
|
651 |
msgctxt "[ELEMENTOR] Widget description"
|
652 |
msgid ""
|
653 |
"It will allow users to reset the filer selection; it will only appear when "
|
654 |
"there is an active filter."
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
|
658 |
msgctxt "[ELEMENTOR] Widget description"
|
659 |
msgid ""
|
660 |
"You can use this block to place \"Reset filters\" button inside your page, "
|
661 |
"when \"Reset button position\" option won't work for your product's loop"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: includes/functions-yith-wcan.php:112
|
665 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
666 |
msgid "Color 1"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: includes/functions-yith-wcan.php:112
|
670 |
msgctxt "For multicolor: I.E. white and red T-Shirt"
|
671 |
msgid "Color 2"
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: includes/functions-yith-wcan.php:1026
|
675 |
msgctxt "[FRONTEND] Star rating template"
|
676 |
msgid "star"
|
677 |
msgid_plural "stars"
|
678 |
msgstr[0] ""
|
679 |
msgstr[1] ""
|
680 |
|
681 |
+
#: includes/functions-yith-wcan.php:1041
|
682 |
#. translators: 1. Rating.
|
683 |
msgctxt "[FRONTEND] Star rating label"
|
684 |
msgid "Rated %s out of 5"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
|
688 |
msgctxt "[GUTENBERG]: block name"
|
689 |
msgid "YITH AJAX Filters Preset"
|
690 |
msgstr ""
|
691 |
|
692 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
|
693 |
msgctxt "[GUTENBERG]: block name"
|
694 |
msgid "YITH Reset Filters Button"
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
|
698 |
msgctxt "[GUTENBERG]: block description"
|
699 |
msgid "Show filters from a preset"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
|
703 |
msgctxt "[GUTENBERG]: block description"
|
704 |
msgid ""
|
705 |
"Show reset filters button, when a filter is applied and button is enabled "
|
708 |
"for your product's loop"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
|
712 |
msgctxt "[GUTENBERG]: attribute description"
|
713 |
msgid "Preset"
|
714 |
msgstr ""
|
715 |
|
716 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:116
|
717 |
msgctxt "[Admin] Preset table column header"
|
718 |
msgid "Preset name"
|
719 |
msgstr ""
|
720 |
|
721 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:117
|
722 |
msgctxt "[Admin] Preset table column header"
|
723 |
msgid "Shortcode"
|
724 |
msgstr ""
|
725 |
|
726 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:135
|
727 |
msgctxt "[Admin] Preset edit action label"
|
728 |
msgid "Edit this preset"
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:148
|
732 |
msgctxt "[Admin] Preset clone action label"
|
733 |
msgid "Clone this preset"
|
734 |
msgstr ""
|
735 |
|
736 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:161
|
737 |
msgctxt "[Admin] Preset delete action label"
|
738 |
msgid "Delete this preset"
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:162
|
742 |
msgctxt "[Admin] Preset delete confirm label"
|
743 |
msgid "Are you sure you want to delete this preset?"
|
744 |
msgstr ""
|
745 |
|
746 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
747 |
msgctxt "[Admin] on-off yes"
|
748 |
msgid "YES"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:175
|
752 |
msgctxt "[Admin] on-off no"
|
753 |
msgid "NO"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:195
|
757 |
msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
|
758 |
msgid "filter preset"
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: templates/admin/preset-filters.php:31
|
762 |
msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
|
763 |
msgid "filter"
|
764 |
msgstr ""
|
765 |
|
766 |
+
#: includes/tables/class-yith-wcan-filter-presets-table.php:196
|
767 |
msgctxt "[Admin] New preset button label"
|
768 |
msgid "Create a new preset"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:34
|
772 |
msgctxt "[ADMIN] Name of the preset widget"
|
773 |
msgid "YITH AJAX Filters Preset"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:52
|
777 |
msgctxt "[ADMIN] Preset widget options"
|
778 |
msgid "Preset"
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: includes/widgets/class-yith-wcan-filters-widget.php:65
|
782 |
#. translators: 1. Url to Ajax Product filter admin panel.
|
783 |
msgctxt "[ADMIN] Preset widget options"
|
784 |
msgid ""
|
786 |
"Presets</a> and create your first preset"
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:53
|
790 |
msgctxt "[Plugin Name] Admin: Widget Title"
|
791 |
msgid "YITH AJAX Product Filter"
|
792 |
msgstr ""
|
793 |
|
794 |
+
#: includes/widgets/class-yith-wcan-navigation-widget.php:466
|
795 |
msgctxt "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
|
796 |
msgid "AND"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
|
800 |
msgctxt "[Plugin Name]"
|
801 |
msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: plugin-options/filter-options.php:145
|
805 |
msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
|
806 |
msgid "AND - Results need to match all selected terms at the same time"
|
807 |
msgstr ""
|
808 |
|
809 |
+
#: plugin-options/filter-options.php:146
|
810 |
msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
|
811 |
msgid "OR - Results need to match at least one of the selected terms"
|
812 |
msgstr ""
|
1067 |
msgctxt "[ADMIN] Premium tab"
|
1068 |
msgid ""
|
1069 |
"<b>Filter by category</b>: to let users choose which product category to "
|
1070 |
+
"view<br/>\n"
|
1071 |
+
"<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
|
1072 |
"<b>Filter by price</b>: to let users filter products by a specific price "
|
1073 |
+
"range (based on their budget availability)<br/>\n"
|
1074 |
"<b>Filter by color and size</b>: you can create filters for all the "
|
1075 |
"attributes available in your store, like color and size. For the color "
|
1076 |
"filter, you can either choose square or circular color swatches or use "
|
1077 |
+
"custom images to recall a specific pattern, shade or fabric texture<br/>\n"
|
1078 |
"<b>Filter by rating</b>: to let your users filter products based on other "
|
1079 |
"customers’ reviews (most e-buyers want to skip low-rated products and "
|
1080 |
+
"concentrate only on high-rated ones)<br/>\n"
|
1081 |
"<b>Filter by brand</b>: thanks to the integration with our YITH Brands "
|
1082 |
+
"Add-on plugin, you can also filter products by specific brands<br/>\n"
|
1083 |
"<b>Show only on-sale products</b>: thanks to this option, your users can "
|
1084 |
+
"filter products and view only those with a discount<br/>\n"
|
1085 |
"<b>Show only in-stock products</b>: thanks to this option, your users can "
|
1086 |
"filter products based on their needs and exclude out-of-stock products from "
|
1087 |
"the list"
|
1196 |
"easier to share)"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
+
#: templates/admin/preset-edit.php:31
|
1200 |
msgctxt "[Admin] Back link in new preset page"
|
1201 |
msgid "< back to preset list"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: templates/admin/preset-edit.php:38
|
1205 |
msgctxt "[ADMIN] Title for new preset page"
|
1206 |
msgid "Edit filter preset"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
+
#: templates/admin/preset-edit.php:40
|
1210 |
msgctxt "[ADMIN] Title for new preset page"
|
1211 |
msgid "Add new filter preset"
|
1212 |
msgstr ""
|
1213 |
|
1214 |
+
#: templates/admin/preset-edit.php:47
|
1215 |
msgctxt "[ADMIN] Preset save message"
|
1216 |
msgid "Preset saved correctly"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: templates/admin/preset-edit.php:93
|
1220 |
msgctxt "[Admin] Preset save button, in new/edit preset page"
|
1221 |
msgid "Save preset"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
+
#: templates/admin/preset-empty-content.php:29
|
1225 |
msgctxt "Alt text for empty preset image"
|
1226 |
msgid "Empty preset"
|
1227 |
msgstr ""
|
1228 |
|
1229 |
+
#: templates/admin/preset-empty-content.php:35
|
1230 |
#. translators: 1. Missing item name.
|
1231 |
msgctxt "[Admin] Preset table empty message"
|
1232 |
msgid "You don't have any %s yet."
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: templates/admin/preset-filter-term.php:30
|
1236 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1237 |
msgid "Label"
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: templates/admin/preset-filter-term.php:35
|
1241 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1242 |
msgid "Tooltip"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
+
#: templates/admin/preset-filter-term.php:41
|
1246 |
msgctxt "[Admin] Term edit field label (preset edit page)"
|
1247 |
msgid "Color"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: templates/admin/preset-filter.php:91
|
1251 |
msgctxt "[Admin] Save filter button, in new/edit preset page"
|
1252 |
msgid "Save Filter"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
+
#: templates/admin/preset-filter.php:92
|
1256 |
msgctxt "[Admin] Delete filter button, in new/edit preset page"
|
1257 |
msgid "Delete Filter"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: templates/admin/preset-filters.php:33
|
1261 |
msgctxt "[Admin] New filter button label"
|
1262 |
msgid "Add a new filter"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
+
#: templates/admin/preset-filters.php:57
|
1266 |
msgctxt "[Admin] Add new filter in new preset page"
|
1267 |
msgid "+ Add filter"
|
1268 |
msgstr ""
|
1273 |
msgid "See %d more filters"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: templates/admin/upgrade-note-modal.php:33
|
1277 |
msgctxt "[ADMIN] Upgrade note modal title"
|
1278 |
msgid "Use the new filter preset feature for your filters"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: templates/admin/upgrade-note-modal.php:38
|
1282 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1283 |
msgid ""
|
1284 |
"From the version 4.0 we built a powerful system that allows you to create "
|
1287 |
"block or the Elementor widget."
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
#: templates/admin/upgrade-note-modal.php:51
|
1291 |
#. translators: 1. Url to demo video. 2. Url to docs.
|
1292 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1293 |
msgid ""
|
1296 |
"feature."
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: templates/admin/upgrade-note-modal.php:64
|
1300 |
#. translators: 1. Url to docs.
|
1301 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1302 |
msgid ""
|
1304 |
"to use this new feature."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: templates/admin/upgrade-note-modal.php:78
|
1308 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1309 |
msgid ""
|
1310 |
"We offer a tool to automatically convert the widget filters of your shop in "
|
1313 |
"will be lost during the process.</b>"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: templates/admin/upgrade-note-modal.php:89
|
1317 |
msgctxt "[ADMIN] Upgrade note modal content"
|
1318 |
msgid ""
|
1319 |
"After converting the widgets into presets, go to <b>WordPress Dashboard -> "
|
1321 |
"Filter Preset</b>, selecting the appropriate preset for current sidebar."
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: templates/admin/upgrade-note-modal.php:98
|
1325 |
msgctxt "[ADMIN] Upgrade note modal button label"
|
1326 |
msgid "Convert your widgets in a preset now"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
+
#: templates/admin/upgrade-note-modal.php:99
|
1330 |
msgctxt "[ADMIN] Upgrade note modal dismiss label"
|
1331 |
msgid "No thanks"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
+
#: templates/filters/global/reset-filters.php:24
|
1335 |
msgctxt "[FRONTEND] Reset button for preset shortcode"
|
1336 |
msgid "Reset filters"
|
1337 |
msgstr ""
|
@@ -176,10 +176,10 @@
|
|
176 |
}
|
177 |
|
178 |
.metaboxes-tab span.description.inline {
|
179 |
-
display
|
180 |
-
line-height
|
181 |
-
width
|
182 |
-
margin
|
183 |
}
|
184 |
|
185 |
.metaboxes-tab .slider label {
|
@@ -254,8 +254,8 @@
|
|
254 |
}
|
255 |
|
256 |
.metaboxes-tab.yith-plugin-ui input[type=number] {
|
257 |
-
width :
|
258 |
-
min-width :
|
259 |
}
|
260 |
|
261 |
.metaboxes-tab.yith-plugin-ui p {
|
176 |
}
|
177 |
|
178 |
.metaboxes-tab span.description.inline {
|
179 |
+
display : inline-block;
|
180 |
+
line-height : 23px;
|
181 |
+
width : auto;
|
182 |
+
margin : 0;
|
183 |
}
|
184 |
|
185 |
.metaboxes-tab .slider label {
|
254 |
}
|
255 |
|
256 |
.metaboxes-tab.yith-plugin-ui input[type=number] {
|
257 |
+
width : 70px;
|
258 |
+
min-width : 70px;
|
259 |
}
|
260 |
|
261 |
.metaboxes-tab.yith-plugin-ui p {
|
@@ -88,7 +88,7 @@
|
|
88 |
}
|
89 |
|
90 |
.yith-plugin-fw-panel-help-tab-content {
|
91 |
-
background-color : #
|
92 |
border-radius : 15px;
|
93 |
max-width : 1100px;
|
94 |
margin : 0 auto;
|
@@ -96,7 +96,7 @@
|
|
96 |
}
|
97 |
|
98 |
.yith-plugin-fw-panel-help-tab-content p,
|
99 |
-
.yith-plugin-fw-panel-help-tab-content a{
|
100 |
font-size : 16px;
|
101 |
}
|
102 |
|
@@ -125,8 +125,8 @@
|
|
125 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-actions,
|
126 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles,
|
127 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
|
128 |
-
box-sizing
|
129 |
-
white-space
|
130 |
}
|
131 |
|
132 |
.yith-plugin-fw-panel-help-tab-content h2.yith-plugin-fw-panel-help-tab-title {
|
@@ -139,7 +139,7 @@
|
|
139 |
}
|
140 |
|
141 |
.yith-plugin-fw-panel-help-tab-content h3 {
|
142 |
-
color : #
|
143 |
font-size : 15px;
|
144 |
}
|
145 |
|
@@ -150,7 +150,7 @@
|
|
150 |
}
|
151 |
|
152 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video {
|
153 |
-
text-align: center;
|
154 |
}
|
155 |
|
156 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video p.video-description {
|
@@ -181,7 +181,7 @@
|
|
181 |
display : block;
|
182 |
background-color : #fff;
|
183 |
border-radius : 5px;
|
184 |
-
box-shadow : 0 0 15px 5px rgba(174,201,207,0.3);
|
185 |
transition : all .2s ease;
|
186 |
}
|
187 |
|
@@ -192,7 +192,7 @@
|
|
192 |
}
|
193 |
|
194 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions:not( .full-width ) {
|
195 |
-
padding-top : 65px!important;
|
196 |
}
|
197 |
|
198 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li {
|
@@ -201,17 +201,17 @@
|
|
201 |
|
202 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li > a {
|
203 |
display : block;
|
204 |
-
padding : 15px 20px 15px 75px!important;
|
205 |
text-decoration : none;
|
206 |
}
|
207 |
|
208 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li:hover {
|
209 |
-
box-shadow : 0 0 15px 5px rgba(177,220,228,0.6);
|
210 |
transform : scale(1.04);
|
211 |
}
|
212 |
|
213 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li a:before {
|
214 |
-
color : #
|
215 |
float : left;
|
216 |
font-family : 'yith-icon';
|
217 |
font-size : 36px;
|
@@ -238,7 +238,7 @@
|
|
238 |
}
|
239 |
|
240 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 a {
|
241 |
-
color : #
|
242 |
text-decoration : none;
|
243 |
}
|
244 |
|
@@ -262,7 +262,7 @@
|
|
262 |
|
263 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3:before {
|
264 |
content : '';
|
265 |
-
background : #
|
266 |
display : block;
|
267 |
height : 100%;
|
268 |
left : -40px;
|
@@ -273,7 +273,7 @@
|
|
273 |
}
|
274 |
|
275 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles a.button {
|
276 |
-
font-size: 16px;
|
277 |
}
|
278 |
|
279 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list {
|
@@ -286,33 +286,33 @@
|
|
286 |
}
|
287 |
|
288 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li:before {
|
289 |
-
content: '-';
|
290 |
}
|
291 |
|
292 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list a {
|
293 |
text-decoration : none;
|
294 |
}
|
295 |
|
296 |
-
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket > .box-with-shadow{
|
297 |
-
padding: 30px!important;
|
298 |
}
|
299 |
|
300 |
-
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket h3{
|
301 |
-
color : #
|
302 |
font-size : 18px;
|
303 |
margin : 0 0 15px;
|
304 |
}
|
305 |
|
306 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket p {
|
307 |
-
margin-bottom: 35px;
|
308 |
}
|
309 |
|
310 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket .button {
|
311 |
-
border-radius
|
312 |
-
display
|
313 |
-
font-size
|
314 |
-
padding
|
315 |
-
text-align
|
316 |
}
|
317 |
|
318 |
/**
|
@@ -842,7 +842,7 @@
|
|
842 |
margin-right : 0;
|
843 |
background-color : #f1f1f1;
|
844 |
color : #336374;
|
845 |
-
font-size :
|
846 |
padding : 8px 20px 9px;
|
847 |
border : 0;
|
848 |
}
|
@@ -1010,7 +1010,7 @@ button#yith-plugin-fw-float-save-button {
|
|
1010 |
}
|
1011 |
|
1012 |
.ywtenv-is-sandbox button#yith-plugin-fw-float-save-button {
|
1013 |
-
bottom: 100px;
|
1014 |
}
|
1015 |
|
1016 |
button#yith-plugin-fw-float-save-button.visible {
|
@@ -1033,6 +1033,17 @@ button#yith-plugin-fw-float-save-button.green {
|
|
1033 |
transition : all 0.8s linear;
|
1034 |
}
|
1035 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
/* === Responsive === */
|
1037 |
|
1038 |
@media (max-width : 767px) {
|
@@ -1043,20 +1054,20 @@ button#yith-plugin-fw-float-save-button.green {
|
|
1043 |
|
1044 |
}
|
1045 |
|
1046 |
-
@media (max-width: 992px) {
|
1047 |
.yith-plugin-fw-panel-help-tab-content .row {
|
1048 |
-
white-space: normal;
|
1049 |
-
margin-bottom: 0;
|
1050 |
}
|
1051 |
|
1052 |
.yith-plugin-fw-panel-help-tab-content .row .column-left,
|
1053 |
.yith-plugin-fw-panel-help-tab-content .row .column-right {
|
1054 |
-
width
|
1055 |
-
margin-bottom: 50px;
|
1056 |
}
|
1057 |
|
1058 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions {
|
1059 |
-
padding-top: 0!important;
|
1060 |
}
|
1061 |
}
|
1062 |
|
88 |
}
|
89 |
|
90 |
.yith-plugin-fw-panel-help-tab-content {
|
91 |
+
background-color : #f4f4f4;
|
92 |
border-radius : 15px;
|
93 |
max-width : 1100px;
|
94 |
margin : 0 auto;
|
96 |
}
|
97 |
|
98 |
.yith-plugin-fw-panel-help-tab-content p,
|
99 |
+
.yith-plugin-fw-panel-help-tab-content a {
|
100 |
font-size : 16px;
|
101 |
}
|
102 |
|
125 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-actions,
|
126 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles,
|
127 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
|
128 |
+
box-sizing : border-box;
|
129 |
+
white-space : normal;
|
130 |
}
|
131 |
|
132 |
.yith-plugin-fw-panel-help-tab-content h2.yith-plugin-fw-panel-help-tab-title {
|
139 |
}
|
140 |
|
141 |
.yith-plugin-fw-panel-help-tab-content h3 {
|
142 |
+
color : #03689f;
|
143 |
font-size : 15px;
|
144 |
}
|
145 |
|
150 |
}
|
151 |
|
152 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video {
|
153 |
+
text-align : center;
|
154 |
}
|
155 |
|
156 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video p.video-description {
|
181 |
display : block;
|
182 |
background-color : #fff;
|
183 |
border-radius : 5px;
|
184 |
+
box-shadow : 0 0 15px 5px rgba(174, 201, 207, 0.3);
|
185 |
transition : all .2s ease;
|
186 |
}
|
187 |
|
192 |
}
|
193 |
|
194 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions:not( .full-width ) {
|
195 |
+
padding-top : 65px !important;
|
196 |
}
|
197 |
|
198 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li {
|
201 |
|
202 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li > a {
|
203 |
display : block;
|
204 |
+
padding : 15px 20px 15px 75px !important;
|
205 |
text-decoration : none;
|
206 |
}
|
207 |
|
208 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li:hover {
|
209 |
+
box-shadow : 0 0 15px 5px rgba(177, 220, 228, 0.6);
|
210 |
transform : scale(1.04);
|
211 |
}
|
212 |
|
213 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li a:before {
|
214 |
+
color : #03689f;
|
215 |
float : left;
|
216 |
font-family : 'yith-icon';
|
217 |
font-size : 36px;
|
238 |
}
|
239 |
|
240 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 a {
|
241 |
+
color : #03689f;
|
242 |
text-decoration : none;
|
243 |
}
|
244 |
|
262 |
|
263 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3:before {
|
264 |
content : '';
|
265 |
+
background : #03689f;
|
266 |
display : block;
|
267 |
height : 100%;
|
268 |
left : -40px;
|
273 |
}
|
274 |
|
275 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles a.button {
|
276 |
+
font-size : 16px;
|
277 |
}
|
278 |
|
279 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list {
|
286 |
}
|
287 |
|
288 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li:before {
|
289 |
+
content : '-';
|
290 |
}
|
291 |
|
292 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list a {
|
293 |
text-decoration : none;
|
294 |
}
|
295 |
|
296 |
+
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket > .box-with-shadow {
|
297 |
+
padding : 30px !important;
|
298 |
}
|
299 |
|
300 |
+
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket h3 {
|
301 |
+
color : #b90a0a;
|
302 |
font-size : 18px;
|
303 |
margin : 0 0 15px;
|
304 |
}
|
305 |
|
306 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket p {
|
307 |
+
margin-bottom : 35px;
|
308 |
}
|
309 |
|
310 |
.yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket .button {
|
311 |
+
border-radius : 7px;
|
312 |
+
display : block;
|
313 |
+
font-size : 15px;
|
314 |
+
padding : 7px 15px;
|
315 |
+
text-align : center;
|
316 |
}
|
317 |
|
318 |
/**
|
842 |
margin-right : 0;
|
843 |
background-color : #f1f1f1;
|
844 |
color : #336374;
|
845 |
+
font-size : 12px;
|
846 |
padding : 8px 20px 9px;
|
847 |
border : 0;
|
848 |
}
|
1010 |
}
|
1011 |
|
1012 |
.ywtenv-is-sandbox button#yith-plugin-fw-float-save-button {
|
1013 |
+
bottom : 100px;
|
1014 |
}
|
1015 |
|
1016 |
button#yith-plugin-fw-float-save-button.visible {
|
1033 |
transition : all 0.8s linear;
|
1034 |
}
|
1035 |
|
1036 |
+
.rtl button#yith-plugin-fw-float-save-button {
|
1037 |
+
right : auto;
|
1038 |
+
left : 70px;
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
.rtl button#yith-plugin-fw-float-save-button i {
|
1042 |
+
margin-left : 8px;
|
1043 |
+
margin-right : 0;
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
|
1047 |
/* === Responsive === */
|
1048 |
|
1049 |
@media (max-width : 767px) {
|
1054 |
|
1055 |
}
|
1056 |
|
1057 |
+
@media (max-width : 992px) {
|
1058 |
.yith-plugin-fw-panel-help-tab-content .row {
|
1059 |
+
white-space : normal;
|
1060 |
+
margin-bottom : 0;
|
1061 |
}
|
1062 |
|
1063 |
.yith-plugin-fw-panel-help-tab-content .row .column-left,
|
1064 |
.yith-plugin-fw-panel-help-tab-content .row .column-right {
|
1065 |
+
width : 100%;
|
1066 |
+
margin-bottom : 50px;
|
1067 |
}
|
1068 |
|
1069 |
.yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions {
|
1070 |
+
padding-top : 0 !important;
|
1071 |
}
|
1072 |
}
|
1073 |
|
@@ -71,6 +71,12 @@
|
|
71 |
line-height : 1;
|
72 |
}
|
73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
.woocommerce .yith-plugin-fw table.form-table input[type=text].wp-color-picker,
|
75 |
.woocommerce .yith-plugin-fw table.form-table input[type=text].yith-plugin-fw-colorpicker,
|
76 |
.yith-plugin-fw input[type=text].wp-color-picker,
|
@@ -535,8 +541,8 @@ YITH UI
|
|
535 |
.yith-plugin-ui .nav-tab {
|
536 |
background-color : #336374;
|
537 |
color : #fff;
|
538 |
-
font-size :
|
539 |
-
padding : 7px
|
540 |
border : 0;
|
541 |
margin : 0 4px 0 0;
|
542 |
transition : background-color 0.3s linear;
|
@@ -730,6 +736,27 @@ YITH UI
|
|
730 |
color : #716269;
|
731 |
}
|
732 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
733 |
.yith-plugin-ui textarea:not(.wp-editor-area),
|
734 |
.woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table textarea:not(.wp-editor-area) {
|
735 |
height : auto;
|
@@ -1962,11 +1989,11 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
|
|
1962 |
}
|
1963 |
|
1964 |
.yith-plugin-ui .yith-plugin-fw-image-dimensions label {
|
1965 |
-
display
|
1966 |
-
font-size
|
1967 |
-
font-weight
|
1968 |
-
text-transform
|
1969 |
-
margin
|
1970 |
}
|
1971 |
|
1972 |
/**
|
71 |
line-height : 1;
|
72 |
}
|
73 |
|
74 |
+
.yith-plugin-fw input[type=number],
|
75 |
+
.woocommerce .yith-plugin-fw table.form-table input[type=number] {
|
76 |
+
width : 70px;
|
77 |
+
min-width : 70px;
|
78 |
+
}
|
79 |
+
|
80 |
.woocommerce .yith-plugin-fw table.form-table input[type=text].wp-color-picker,
|
81 |
.woocommerce .yith-plugin-fw table.form-table input[type=text].yith-plugin-fw-colorpicker,
|
82 |
.yith-plugin-fw input[type=text].wp-color-picker,
|
541 |
.yith-plugin-ui .nav-tab {
|
542 |
background-color : #336374;
|
543 |
color : #fff;
|
544 |
+
font-size : 13px;
|
545 |
+
padding : 7px 15px;
|
546 |
border : 0;
|
547 |
margin : 0 4px 0 0;
|
548 |
transition : background-color 0.3s linear;
|
736 |
color : #716269;
|
737 |
}
|
738 |
|
739 |
+
|
740 |
+
.yith-plugin-ui input::-webkit-input-placeholder {
|
741 |
+
color : #999999;
|
742 |
+
}
|
743 |
+
|
744 |
+
.yith-plugin-ui input:-ms-input-placeholder {
|
745 |
+
color : #999999;
|
746 |
+
}
|
747 |
+
|
748 |
+
.yith-plugin-ui input::-ms-input-placeholder {
|
749 |
+
color : #999999;
|
750 |
+
}
|
751 |
+
|
752 |
+
.yith-plugin-ui input::placeholder {
|
753 |
+
color : #999999;
|
754 |
+
}
|
755 |
+
|
756 |
+
.woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=number] {
|
757 |
+
min-width : 70px;
|
758 |
+
}
|
759 |
+
|
760 |
.yith-plugin-ui textarea:not(.wp-editor-area),
|
761 |
.woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table textarea:not(.wp-editor-area) {
|
762 |
height : auto;
|
1989 |
}
|
1990 |
|
1991 |
.yith-plugin-ui .yith-plugin-fw-image-dimensions label {
|
1992 |
+
display : block;
|
1993 |
+
font-size : 11px;
|
1994 |
+
font-weight : 600;
|
1995 |
+
text-transform : uppercase;
|
1996 |
+
margin : 0 0 10px 0;
|
1997 |
}
|
1998 |
|
1999 |
/**
|
@@ -29,6 +29,12 @@
|
|
29 |
--yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
|
30 |
--yith-outline-border-hover: #007ba3;
|
31 |
--yith-outline-focus: #dfeef2;
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
--yith-accent: #98aa36;
|
33 |
--yith-light-bg: #f0f6fb;
|
34 |
--yith-light-border-color: #d7e3e7;
|
@@ -322,13 +328,25 @@
|
|
322 |
.yith-plugin-ui #doaction,
|
323 |
.yith-plugin-ui #doaction2,
|
324 |
.yith-plugin-ui #post-query-submit,
|
|
|
325 |
.yith-plugin-ui #search-submit,
|
326 |
.yith-plugin-ui .button.filter-button, .wp-core-ui .yith-plugin-ui .button.action,
|
327 |
.wp-core-ui .yith-plugin-ui #doaction,
|
328 |
.wp-core-ui .yith-plugin-ui #doaction2,
|
329 |
.wp-core-ui .yith-plugin-ui #post-query-submit,
|
|
|
330 |
.wp-core-ui .yith-plugin-ui #search-submit,
|
331 |
.wp-core-ui .yith-plugin-ui .button.filter-button {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
332 |
background: var(--yith-outline-bg);
|
333 |
border: 1px solid var(--yith-outline-border);
|
334 |
color: var(--yith-outline-text);
|
@@ -343,11 +361,30 @@
|
|
343 |
.yith-plugin-ui #doaction:focus,
|
344 |
.yith-plugin-ui #doaction2:focus,
|
345 |
.yith-plugin-ui #post-query-submit:focus,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
346 |
.yith-plugin-ui #search-submit:focus,
|
347 |
.yith-plugin-ui .button.filter-button:focus, .wp-core-ui .yith-plugin-ui .button.action:focus,
|
348 |
.wp-core-ui .yith-plugin-ui #doaction:focus,
|
349 |
.wp-core-ui .yith-plugin-ui #doaction2:focus,
|
350 |
.wp-core-ui .yith-plugin-ui #post-query-submit:focus,
|
|
|
351 |
.wp-core-ui .yith-plugin-ui #search-submit:focus,
|
352 |
.wp-core-ui .yith-plugin-ui .button.filter-button:focus {
|
353 |
background: var(--yith-outline-bg);
|
@@ -363,6 +400,8 @@
|
|
363 |
.yith-plugin-ui #doaction2:active,
|
364 |
.yith-plugin-ui #post-query-submit:hover,
|
365 |
.yith-plugin-ui #post-query-submit:active,
|
|
|
|
|
366 |
.yith-plugin-ui #search-submit:hover,
|
367 |
.yith-plugin-ui #search-submit:active,
|
368 |
.yith-plugin-ui .button.filter-button:hover,
|
@@ -373,6 +412,8 @@
|
|
373 |
.wp-core-ui .yith-plugin-ui #doaction2:active,
|
374 |
.wp-core-ui .yith-plugin-ui #post-query-submit:hover,
|
375 |
.wp-core-ui .yith-plugin-ui #post-query-submit:active,
|
|
|
|
|
376 |
.wp-core-ui .yith-plugin-ui #search-submit:hover,
|
377 |
.wp-core-ui .yith-plugin-ui #search-submit:active,
|
378 |
.wp-core-ui .yith-plugin-ui .button.filter-button:hover,
|
@@ -382,6 +423,25 @@
|
|
382 |
color: var(--yith-outline-text);
|
383 |
}
|
384 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
385 |
.yith-plugin-ui .tablenav .tablenav-pages .button,
|
386 |
.yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan, .wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .button,
|
387 |
.wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan {
|
@@ -1240,7 +1300,6 @@ table.yith-plugin-fw__boxed-table tbody tr {
|
|
1240 |
|
1241 |
table.yith-plugin-fw__boxed-table tbody tr th, table.yith-plugin-fw__boxed-table tbody tr td {
|
1242 |
background: transparent;
|
1243 |
-
border-radius: 5px;
|
1244 |
vertical-align: middle;
|
1245 |
padding: 25px 0 25px 25px;
|
1246 |
}
|
@@ -1249,6 +1308,17 @@ table.yith-plugin-fw__boxed-table tbody tr td:last-child {
|
|
1249 |
padding-right: 25px;
|
1250 |
}
|
1251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1252 |
table.yith-plugin-fw__boxed-table tbody tr:hover {
|
1253 |
background: var(--yith-table-row-highlight);
|
1254 |
}
|
@@ -1454,7 +1524,6 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
|
|
1454 |
|
1455 |
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td {
|
1456 |
background: transparent;
|
1457 |
-
border-radius: 5px;
|
1458 |
vertical-align: middle;
|
1459 |
padding: 25px 0 25px 25px;
|
1460 |
}
|
@@ -1463,6 +1532,19 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
|
|
1463 |
padding-right: 25px;
|
1464 |
}
|
1465 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1466 |
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover {
|
1467 |
background: var(--yith-table-row-highlight);
|
1468 |
}
|
29 |
--yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
|
30 |
--yith-outline-border-hover: #007ba3;
|
31 |
--yith-outline-focus: #dfeef2;
|
32 |
+
--yith-delete-outline-text: #c41d04;
|
33 |
+
--yith-delete-outline-border: #c41d04;
|
34 |
+
--yith-delete-outline-bg: rgba(205, 157, 157, 0);
|
35 |
+
--yith-delete-outline-bg-hover: rgba(232, 184, 184, 0.15);
|
36 |
+
--yith-delete-outline-border-hover: #db2b11;
|
37 |
+
--yith-delete-outline-focus: #ffe9e7;
|
38 |
--yith-accent: #98aa36;
|
39 |
--yith-light-bg: #f0f6fb;
|
40 |
--yith-light-border-color: #d7e3e7;
|
328 |
.yith-plugin-ui #doaction,
|
329 |
.yith-plugin-ui #doaction2,
|
330 |
.yith-plugin-ui #post-query-submit,
|
331 |
+
.yith-plugin-ui #posts-filter #delete_all,
|
332 |
.yith-plugin-ui #search-submit,
|
333 |
.yith-plugin-ui .button.filter-button, .wp-core-ui .yith-plugin-ui .button.action,
|
334 |
.wp-core-ui .yith-plugin-ui #doaction,
|
335 |
.wp-core-ui .yith-plugin-ui #doaction2,
|
336 |
.wp-core-ui .yith-plugin-ui #post-query-submit,
|
337 |
+
.wp-core-ui .yith-plugin-ui #posts-filter #delete_all,
|
338 |
.wp-core-ui .yith-plugin-ui #search-submit,
|
339 |
.wp-core-ui .yith-plugin-ui .button.filter-button {
|
340 |
+
display: inline-block;
|
341 |
+
height: auto;
|
342 |
+
line-height: 30px;
|
343 |
+
border-radius: 4px;
|
344 |
+
padding: 0 17px;
|
345 |
+
font-weight: 600;
|
346 |
+
cursor: pointer;
|
347 |
+
transition: all .3s ease-in-out;
|
348 |
+
text-decoration: none;
|
349 |
+
white-space: nowrap;
|
350 |
background: var(--yith-outline-bg);
|
351 |
border: 1px solid var(--yith-outline-border);
|
352 |
color: var(--yith-outline-text);
|
361 |
.yith-plugin-ui #doaction:focus,
|
362 |
.yith-plugin-ui #doaction2:focus,
|
363 |
.yith-plugin-ui #post-query-submit:focus,
|
364 |
+
.yith-plugin-ui #posts-filter #delete_all:focus,
|
365 |
+
.yith-plugin-ui #search-submit:focus,
|
366 |
+
.yith-plugin-ui .button.filter-button:focus, .wp-core-ui .yith-plugin-ui .button.action:focus,
|
367 |
+
.wp-core-ui .yith-plugin-ui #doaction:focus,
|
368 |
+
.wp-core-ui .yith-plugin-ui #doaction2:focus,
|
369 |
+
.wp-core-ui .yith-plugin-ui #post-query-submit:focus,
|
370 |
+
.wp-core-ui .yith-plugin-ui #posts-filter #delete_all:focus,
|
371 |
+
.wp-core-ui .yith-plugin-ui #search-submit:focus,
|
372 |
+
.wp-core-ui .yith-plugin-ui .button.filter-button:focus {
|
373 |
+
outline: none;
|
374 |
+
box-shadow: none;
|
375 |
+
}
|
376 |
+
|
377 |
+
.yith-plugin-ui .button.action:focus,
|
378 |
+
.yith-plugin-ui #doaction:focus,
|
379 |
+
.yith-plugin-ui #doaction2:focus,
|
380 |
+
.yith-plugin-ui #post-query-submit:focus,
|
381 |
+
.yith-plugin-ui #posts-filter #delete_all:focus,
|
382 |
.yith-plugin-ui #search-submit:focus,
|
383 |
.yith-plugin-ui .button.filter-button:focus, .wp-core-ui .yith-plugin-ui .button.action:focus,
|
384 |
.wp-core-ui .yith-plugin-ui #doaction:focus,
|
385 |
.wp-core-ui .yith-plugin-ui #doaction2:focus,
|
386 |
.wp-core-ui .yith-plugin-ui #post-query-submit:focus,
|
387 |
+
.wp-core-ui .yith-plugin-ui #posts-filter #delete_all:focus,
|
388 |
.wp-core-ui .yith-plugin-ui #search-submit:focus,
|
389 |
.wp-core-ui .yith-plugin-ui .button.filter-button:focus {
|
390 |
background: var(--yith-outline-bg);
|
400 |
.yith-plugin-ui #doaction2:active,
|
401 |
.yith-plugin-ui #post-query-submit:hover,
|
402 |
.yith-plugin-ui #post-query-submit:active,
|
403 |
+
.yith-plugin-ui #posts-filter #delete_all:hover,
|
404 |
+
.yith-plugin-ui #posts-filter #delete_all:active,
|
405 |
.yith-plugin-ui #search-submit:hover,
|
406 |
.yith-plugin-ui #search-submit:active,
|
407 |
.yith-plugin-ui .button.filter-button:hover,
|
412 |
.wp-core-ui .yith-plugin-ui #doaction2:active,
|
413 |
.wp-core-ui .yith-plugin-ui #post-query-submit:hover,
|
414 |
.wp-core-ui .yith-plugin-ui #post-query-submit:active,
|
415 |
+
.wp-core-ui .yith-plugin-ui #posts-filter #delete_all:hover,
|
416 |
+
.wp-core-ui .yith-plugin-ui #posts-filter #delete_all:active,
|
417 |
.wp-core-ui .yith-plugin-ui #search-submit:hover,
|
418 |
.wp-core-ui .yith-plugin-ui #search-submit:active,
|
419 |
.wp-core-ui .yith-plugin-ui .button.filter-button:hover,
|
423 |
color: var(--yith-outline-text);
|
424 |
}
|
425 |
|
426 |
+
.yith-plugin-ui #posts-filter #delete_all, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all {
|
427 |
+
background: var(--yith-delete-outline-bg);
|
428 |
+
border: 1px solid var(--yith-delete-outline-border);
|
429 |
+
color: var(--yith-delete-outline-text);
|
430 |
+
}
|
431 |
+
|
432 |
+
.yith-plugin-ui #posts-filter #delete_all:focus, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:focus {
|
433 |
+
background: var(--yith-delete-outline-bg);
|
434 |
+
border: 1px solid var(--yith-delete-outline-border);
|
435 |
+
color: var(--yith-delete-outline-text);
|
436 |
+
box-shadow: 0 0 0 3px var(--yith-delete-outline-focus);
|
437 |
+
}
|
438 |
+
|
439 |
+
.yith-plugin-ui #posts-filter #delete_all:hover, .yith-plugin-ui #posts-filter #delete_all:active, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:hover, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:active {
|
440 |
+
background: var(--yith-delete-outline-bg-hover);
|
441 |
+
border-color: var(--yith-delete-outline-border-hover);
|
442 |
+
color: var(--yith-delete-outline-text);
|
443 |
+
}
|
444 |
+
|
445 |
.yith-plugin-ui .tablenav .tablenav-pages .button,
|
446 |
.yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan, .wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .button,
|
447 |
.wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan {
|
1300 |
|
1301 |
table.yith-plugin-fw__boxed-table tbody tr th, table.yith-plugin-fw__boxed-table tbody tr td {
|
1302 |
background: transparent;
|
|
|
1303 |
vertical-align: middle;
|
1304 |
padding: 25px 0 25px 25px;
|
1305 |
}
|
1308 |
padding-right: 25px;
|
1309 |
}
|
1310 |
|
1311 |
+
table.yith-plugin-fw__boxed-table tbody tr th:first-child,
|
1312 |
+
table.yith-plugin-fw__boxed-table tbody tr td:first-child {
|
1313 |
+
border-radius: 5px 0 0 5px;
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
table.yith-plugin-fw__boxed-table tbody tr th:last-child,
|
1317 |
+
table.yith-plugin-fw__boxed-table tbody tr td:last-child {
|
1318 |
+
padding-right: 25px;
|
1319 |
+
border-radius: 0 5px 5px 0;
|
1320 |
+
}
|
1321 |
+
|
1322 |
table.yith-plugin-fw__boxed-table tbody tr:hover {
|
1323 |
background: var(--yith-table-row-highlight);
|
1324 |
}
|
1524 |
|
1525 |
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td {
|
1526 |
background: transparent;
|
|
|
1527 |
vertical-align: middle;
|
1528 |
padding: 25px 0 25px 25px;
|
1529 |
}
|
1532 |
padding-right: 25px;
|
1533 |
}
|
1534 |
|
1535 |
+
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:first-child,
|
1536 |
+
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:first-child, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:first-child,
|
1537 |
+
.yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:first-child {
|
1538 |
+
border-radius: 5px 0 0 5px;
|
1539 |
+
}
|
1540 |
+
|
1541 |
+
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:last-child,
|
1542 |
+
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:last-child, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:last-child,
|
1543 |
+
.yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:last-child {
|
1544 |
+
padding-right: 25px;
|
1545 |
+
border-radius: 0 5px 5px 0;
|
1546 |
+
}
|
1547 |
+
|
1548 |
.yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover {
|
1549 |
background: var(--yith-table-row-highlight);
|
1550 |
}
|
@@ -42,12 +42,14 @@ jQuery( function ( $ ) {
|
|
42 |
case 'trash':
|
43 |
confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title;
|
44 |
confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message;
|
|
|
45 |
confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button;
|
46 |
confirmOptions.confirmButtonType = 'delete';
|
47 |
break;
|
48 |
case 'delete':
|
49 |
confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title;
|
50 |
confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message;
|
|
|
51 |
confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button;
|
52 |
confirmOptions.confirmButtonType = 'delete';
|
53 |
break;
|
42 |
case 'trash':
|
43 |
confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title;
|
44 |
confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message;
|
45 |
+
confirmOptions.cancelButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_cancel_button;
|
46 |
confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button;
|
47 |
confirmOptions.confirmButtonType = 'delete';
|
48 |
break;
|
49 |
case 'delete':
|
50 |
confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title;
|
51 |
confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message;
|
52 |
+
confirmOptions.cancelButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_cancel_button;
|
53 |
confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button;
|
54 |
confirmOptions.confirmButtonType = 'delete';
|
55 |
break;
|
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(e){var
|
1 |
+
jQuery(function(e){var t=e(".yith-plugin-fw-wp-page-wrapper"),i=e("div.updated, div.error, div.notice").not("#message"),n=e("div#message.updated");if(e(".yith-plugin-fw-wp-page-wrapper .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper"),i.addClass("inline"),t.length&&t.prepend(i),n.length&&(n.addClass("yith-plugin-fw-animate__appear-from-top").show(),n.on("click",".notice-dismiss",function(e){e.stopPropagation(),n.removeClass("yith-plugin-fw-animate__appear-from-top").slideUp(200)})),yith_plugin_fw_wp_pages.bulk_delete_confirmation_enabled){var a=!1;e(document).on("click","#doaction, #doaction2",function(t){var i=e(this),n=i.siblings("#bulk-action-selector-top, #bulk-action-selector-bottom");if("yith"in window&&"ui"in yith)if(a)a=!1;else{var _={};if(e("#the-list .check-column input[type=checkbox]:checked").length){switch(n.val()){case"trash":_.title=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title,_.message=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message,_.cancelButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_cancel_button,_.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button,_.confirmButtonType="delete";break;case"delete":_.title=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title,_.message=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message,_.cancelButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_cancel_button,_.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button,_.confirmButtonType="delete"}e.isEmptyObject(_)||(t.preventDefault(),_.closeAfterConfirm=!1,_.onConfirm=function(){a=!0,i.trigger("click")},yith.ui.confirm(_))}}})}});
|
@@ -130,69 +130,6 @@ jQuery( function ( $ ) {
|
|
130 |
}
|
131 |
} );
|
132 |
|
133 |
-
// Customer Search
|
134 |
-
$( '.yith-page-search' ).filter( ':not(.enhanced)' ).each( function () {
|
135 |
-
var default_data = {
|
136 |
-
action : $( this ).data( 'action' ),
|
137 |
-
security : yith_framework_enhanced_select_params.search_pages_nonce
|
138 |
-
},
|
139 |
-
current_data = $.extend( default_data, $( this ).data() ),
|
140 |
-
select2_args = {
|
141 |
-
allowClear : $( this ).data( 'allow_clear' ) ? true : false,
|
142 |
-
placeholder : $( this ).data( 'placeholder' ),
|
143 |
-
minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3',
|
144 |
-
escapeMarkup : function ( m ) {
|
145 |
-
return m;
|
146 |
-
},
|
147 |
-
ajax : {
|
148 |
-
url : ajaxurl,
|
149 |
-
dataType : 'json',
|
150 |
-
quietMillis : 250,
|
151 |
-
data : function ( params ) {
|
152 |
-
var default_data_to_return = {
|
153 |
-
term: params.term
|
154 |
-
};
|
155 |
-
|
156 |
-
return $.extend( default_data_to_return, current_data );
|
157 |
-
},
|
158 |
-
processResults: function ( data ) {
|
159 |
-
var terms = [];
|
160 |
-
if ( data ) {
|
161 |
-
$.each( data, function ( id, text ) {
|
162 |
-
text = $.trim( text.replace( /\(.*\)/, '' ) ); // Remove page ID.
|
163 |
-
terms.push( { id: id, text: text } );
|
164 |
-
} );
|
165 |
-
}
|
166 |
-
return {
|
167 |
-
results: terms
|
168 |
-
};
|
169 |
-
},
|
170 |
-
cache : true
|
171 |
-
}
|
172 |
-
};
|
173 |
-
|
174 |
-
$( this ).select2( select2_args ).addClass( 'enhanced' );
|
175 |
-
|
176 |
-
if ( $( this ).data( 'sortable' ) ) {
|
177 |
-
var $select = $( this );
|
178 |
-
var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' );
|
179 |
-
|
180 |
-
$list.sortable( {
|
181 |
-
placeholder : 'ui-state-highlight select2-selection__choice',
|
182 |
-
forcePlaceholderSize: true,
|
183 |
-
items : 'li:not(.select2-search__field)',
|
184 |
-
tolerance : 'pointer',
|
185 |
-
stop : function () {
|
186 |
-
$( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function () {
|
187 |
-
var id = $( this ).data( 'data' ).id;
|
188 |
-
var option = $select.find( 'option[value="' + id + '"]' )[ 0 ];
|
189 |
-
$select.prepend( option );
|
190 |
-
} );
|
191 |
-
}
|
192 |
-
} );
|
193 |
-
}
|
194 |
-
} );
|
195 |
-
|
196 |
// TERM SEARCH
|
197 |
$( '.yith-term-search' ).filter( ':not(.enhanced)' ).each( function () {
|
198 |
var default_data = {
|
130 |
}
|
131 |
} );
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
// TERM SEARCH
|
134 |
$( '.yith-term-search' ).filter( ':not(.enhanced)' ).each( function () {
|
135 |
var default_data = {
|
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(e){"use strict";e(document.body).on("yith-framework-enhanced-select-init",function(){e(".yith-post-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_posts",security:yith_framework_enhanced_select_params.search_posts_nonce,post_type:"post"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),
|
1 |
+
jQuery(function(e){"use strict";e(document.body).on("yith-framework-enhanced-select-init",function(){e(".yith-post-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_posts",security:yith_framework_enhanced_select_params.search_posts_nonce,post_type:"post"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),s=e(this).next(".select2-container").find("ul.select2-selection__rendered");s.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(s.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-customer-search").filter(":not(.enhanced)").each(function(){var t={action:"woocommerce_json_search_customers",security:yith_framework_enhanced_select_params.search_customers_nonce},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),s=e(this).next(".select2-container").find("ul.select2-selection__rendered");s.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(s.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-term-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_terms",security:yith_framework_enhanced_select_params.search_terms_nonce,taxonomy:"category"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),s=e(this).next(".select2-container").find("ul.select2-selection__rendered");s.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(s.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}})}).trigger("yith-framework-enhanced-select-init")});
|
@@ -1,28 +1,254 @@
|
|
1 |
/* globals yith_framework_fw_fields, wp */
|
2 |
( function ( $ ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
var yith_fields_init = function () {
|
4 |
-
var $datepicker
|
5 |
-
$colorpicker
|
6 |
-
$
|
7 |
-
|
8 |
-
|
9 |
-
imgUrlHandler : '.yith-plugin-fw-upload-img-url',
|
10 |
-
resetButtonHandler : '.yith-plugin-fw-upload-button-reset',
|
11 |
-
imgUrl : $( '.yith-plugin-fw-upload-img-url' )
|
12 |
-
},
|
13 |
-
$wpAddMedia = $( '.add_media' ),
|
14 |
-
$imageGallery = {
|
15 |
-
rootSelector : '.yith-plugin-fw-image-gallery',
|
16 |
-
buttonSelector: '.yith-plugin-fw-image-gallery .image-gallery-button',
|
17 |
-
sliderWrapper : $( '.yith-plugin-fw-image-gallery ul.slides-wrapper' )
|
18 |
-
},
|
19 |
-
$sidebars = $( '.yith-plugin-fw-sidebar-layout' ),
|
20 |
-
$slider = $( '.yith-plugin-fw-slider-container .ui-slider-horizontal' ),
|
21 |
-
$icons = $( '.yit-icons-manager-wrapper' ),
|
22 |
-
$checkgroup = $( ".yith-plugin-ui td.forminp-checkbox" );
|
23 |
|
24 |
/* Datepicker */
|
25 |
$datepicker.each( function () {
|
|
|
|
|
26 |
var currentDatePicker = $( this ),
|
27 |
args = currentDatePicker.data(),
|
28 |
icon = currentDatePicker.next( '.yith-icon-calendar' );
|
@@ -45,19 +271,22 @@
|
|
45 |
} );
|
46 |
|
47 |
/* Colorpicker */
|
48 |
-
$colorpicker.wpColorPicker( {
|
49 |
-
palettes: false,
|
50 |
-
width : 200,
|
51 |
-
mode : 'hsl',
|
52 |
-
clear : function () {
|
53 |
-
var input = $( this );
|
54 |
-
input.val( input.data( 'default-color' ) );
|
55 |
-
input.change();
|
56 |
-
}
|
57 |
-
} );
|
58 |
-
|
59 |
-
|
60 |
$colorpicker.each( function () {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
var select_label = $( this ).data( 'variations-label' ),
|
62 |
wrap_main1 = $( this ).closest( '.yith-plugin-fw-colorpicker-field-wrapper' ),
|
63 |
wrap_main2 = $( this ).closest( '.yith-single-colorpicker' ),
|
@@ -69,206 +298,22 @@
|
|
69 |
|
70 |
if ( !wrap1.find( '.wp-picker-default-custom' ).length ) {
|
71 |
var button = $( '<span/>' ).attr( {
|
72 |
-
class:
|
73 |
} );
|
74 |
wrap1.find( '.wp-picker-default' ).wrap( button );
|
75 |
}
|
76 |
|
77 |
if ( !wrap2.find( '.wp-picker-default-custom' ).length ) {
|
78 |
var button = $( '<span/>' ).attr( {
|
79 |
-
class:
|
80 |
} );
|
81 |
wrap2.find( '.wp-picker-default' ).wrap( button );
|
82 |
}
|
83 |
} );
|
84 |
|
85 |
-
|
86 |
-
/* Upload */
|
87 |
-
if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
|
88 |
-
var _custom_media = true;
|
89 |
-
// preview
|
90 |
-
$upload.imgUrl.change( function () {
|
91 |
-
var url = $( this ).val(),
|
92 |
-
re = new RegExp( "(http|ftp|https)://[a-zA-Z0-9@?^=%&:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)" ),
|
93 |
-
preview = $( this ).parent().find( $upload.imgPreviewHandler ).first();
|
94 |
-
|
95 |
-
if ( preview.length < 1 ) {
|
96 |
-
preview = $( this ).parent().parent().find( $upload.imgPreviewHandler ).first();
|
97 |
-
}
|
98 |
-
|
99 |
-
if ( re.test( url ) ) {
|
100 |
-
preview.html( '<img src="' + url + '" style="max-width:100px; max-height:100px;" />' );
|
101 |
-
} else {
|
102 |
-
preview.html( '' );
|
103 |
-
}
|
104 |
-
} ).trigger( 'change' );
|
105 |
-
|
106 |
-
$( document ).on( 'click', $upload.uploadButtonHandler, function ( e ) {
|
107 |
-
e.preventDefault();
|
108 |
-
|
109 |
-
var t = $( this ),
|
110 |
-
custom_uploader,
|
111 |
-
id = t.attr( 'id' ).replace( /-button$/, '' ).replace( /(\[|\])/g, '\\$1' );
|
112 |
-
|
113 |
-
//If the uploader object has already been created, reopen the dialog
|
114 |
-
if ( custom_uploader ) {
|
115 |
-
custom_uploader.open();
|
116 |
-
return;
|
117 |
-
}
|
118 |
-
|
119 |
-
var custom_uploader_states = [
|
120 |
-
// Main states.
|
121 |
-
new wp.media.controller.Library( {
|
122 |
-
library : wp.media.query(),
|
123 |
-
multiple : false,
|
124 |
-
title : 'Choose Image',
|
125 |
-
priority : 20,
|
126 |
-
filterable: 'uploaded'
|
127 |
-
} )
|
128 |
-
];
|
129 |
-
|
130 |
-
// Create the media frame.
|
131 |
-
custom_uploader = wp.media.frames.downloadable_file = wp.media( {
|
132 |
-
// Set the title of the modal.
|
133 |
-
title : 'Choose Image',
|
134 |
-
library : {
|
135 |
-
type: ''
|
136 |
-
},
|
137 |
-
button : {
|
138 |
-
text: 'Choose Image'
|
139 |
-
},
|
140 |
-
multiple: false,
|
141 |
-
states : custom_uploader_states
|
142 |
-
} );
|
143 |
-
|
144 |
-
//When a file is selected, grab the URL and set it as the text field's value
|
145 |
-
custom_uploader.on( 'select', function () {
|
146 |
-
var attachment = custom_uploader.state().get( 'selection' ).first().toJSON();
|
147 |
-
|
148 |
-
$( "#" + id ).val( attachment.url );
|
149 |
-
// Save the id of the selected element to an element which name is the same with a suffix "-yith-attachment-id"
|
150 |
-
if ( $( "#" + id + "-yith-attachment-id" ) ) {
|
151 |
-
$( "#" + id + "-yith-attachment-id" ).val( attachment.id );
|
152 |
-
}
|
153 |
-
$upload.imgUrl.trigger( 'change' );
|
154 |
-
} );
|
155 |
-
|
156 |
-
//Open the uploader dialog
|
157 |
-
custom_uploader.open();
|
158 |
-
} );
|
159 |
-
|
160 |
-
$( document ).on( 'click', $upload.resetButtonHandler, function ( e ) {
|
161 |
-
var t = $( this ),
|
162 |
-
id = t.attr( 'id' ).replace( /(\[|\])/g, '\\$1' ),
|
163 |
-
input_id = t.attr( 'id' ).replace( /-button-reset$/, '' ).replace( /(\[|\])/g, '\\$1' ),
|
164 |
-
default_value = $( '#' + id ).data( 'default' );
|
165 |
-
|
166 |
-
$( "#" + input_id ).val( default_value );
|
167 |
-
$upload.imgUrl.trigger( 'change' );
|
168 |
-
} );
|
169 |
-
}
|
170 |
-
|
171 |
-
$wpAddMedia.on( 'click', function () {
|
172 |
-
_custom_media = false;
|
173 |
-
} );
|
174 |
-
|
175 |
-
/* Image Gallery */
|
176 |
-
if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
|
177 |
-
$( document ).on( 'click', $imageGallery.buttonSelector, function ( e ) {
|
178 |
-
var $t = $( this ),
|
179 |
-
$container = $t.closest( $imageGallery.rootSelector ),
|
180 |
-
$image_gallery_ids = $container.find( '.image_gallery_ids' ),
|
181 |
-
attachment_ids = $image_gallery_ids.val(),
|
182 |
-
$gallery_images_wrapper = $container.find( 'ul.slides-wrapper' );
|
183 |
-
|
184 |
-
// Create the media frame.
|
185 |
-
var image_gallery_frame = wp.media.frames.image_gallery = wp.media( {
|
186 |
-
// Set the title of the modal.
|
187 |
-
title : $t.data( 'choose' ),
|
188 |
-
button: {
|
189 |
-
text: $t.data( 'update' )
|
190 |
-
},
|
191 |
-
states: [
|
192 |
-
new wp.media.controller.Library( {
|
193 |
-
title : $t.data( 'choose' ),
|
194 |
-
filterable: 'all',
|
195 |
-
multiple : true
|
196 |
-
} )
|
197 |
-
]
|
198 |
-
} );
|
199 |
-
|
200 |
-
// When an image is selected, run a callback.
|
201 |
-
image_gallery_frame.on( 'select', function () {
|
202 |
-
var selection = image_gallery_frame.state().get( 'selection' );
|
203 |
-
selection.map( function ( attachment ) {
|
204 |
-
attachment = attachment.toJSON();
|
205 |
-
|
206 |
-
if ( attachment.id ) {
|
207 |
-
attachment_ids = attachment_ids ? attachment_ids + "," + attachment.id : attachment.id;
|
208 |
-
$gallery_images_wrapper.append( '<li class="image" data-attachment_id="' + attachment.id + '"><img src="' + attachment.sizes.thumbnail.url + '"/><ul class="actions"><li><a href="#" class="delete" title="' + $t.data( 'delete' ) + '">x</a></li></ul></li>' );
|
209 |
-
}
|
210 |
-
} );
|
211 |
-
|
212 |
-
$image_gallery_ids.val( attachment_ids );
|
213 |
-
$image_gallery_ids.trigger( 'change' );
|
214 |
-
} );
|
215 |
-
|
216 |
-
image_gallery_frame.open();
|
217 |
-
|
218 |
-
} );
|
219 |
-
|
220 |
-
// Image ordering
|
221 |
-
$imageGallery.sliderWrapper.each( function () {
|
222 |
-
var $t = $( this );
|
223 |
-
$t.sortable( {
|
224 |
-
items : 'li.image',
|
225 |
-
cursor : 'move',
|
226 |
-
scrollSensitivity : 40,
|
227 |
-
forcePlaceholderSize: true,
|
228 |
-
forceHelperSize : false,
|
229 |
-
helper : 'clone',
|
230 |
-
opacity : 0.65,
|
231 |
-
start : function ( event, ui ) {
|
232 |
-
ui.item.css( 'background-color', '#f6f6f6' );
|
233 |
-
},
|
234 |
-
stop : function ( event, ui ) {
|
235 |
-
ui.item.removeAttr( 'style' );
|
236 |
-
},
|
237 |
-
update : function ( event, ui ) {
|
238 |
-
var attachment_ids = '';
|
239 |
-
|
240 |
-
$t.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
|
241 |
-
var attachment_id = $( this ).attr( 'data-attachment_id' );
|
242 |
-
attachment_ids = attachment_ids + attachment_id + ',';
|
243 |
-
} );
|
244 |
-
|
245 |
-
$t.closest( $imageGallery.rootSelector ).find( '.image_gallery_ids' ).val( attachment_ids );
|
246 |
-
}
|
247 |
-
} );
|
248 |
-
} );
|
249 |
-
|
250 |
-
// Remove images
|
251 |
-
$imageGallery.sliderWrapper.on( 'click', 'a.delete', function ( e ) {
|
252 |
-
e.preventDefault();
|
253 |
-
var $wrapper = $( this ).closest( $imageGallery.rootSelector ),
|
254 |
-
$gallery = $wrapper.find( 'ul.slides-wrapper' ),
|
255 |
-
$image_gallery_ids = $wrapper.find( '.image_gallery_ids' ),
|
256 |
-
attachment_ids = '';
|
257 |
-
|
258 |
-
$( this ).closest( 'li.image' ).remove();
|
259 |
-
|
260 |
-
$gallery.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
|
261 |
-
var attachment_id = $( this ).attr( 'data-attachment_id' );
|
262 |
-
attachment_ids = attachment_ids + attachment_id + ',';
|
263 |
-
} );
|
264 |
-
|
265 |
-
$image_gallery_ids.val( attachment_ids );
|
266 |
-
} );
|
267 |
-
}
|
268 |
-
|
269 |
-
|
270 |
/* Sidebars */
|
271 |
$sidebars.each( function () {
|
|
|
272 |
var $images = $( this ).find( 'img' );
|
273 |
$images.on( 'click', function () {
|
274 |
var $container = $( this ).closest( '.yith-plugin-fw-sidebar-layout' ),
|
@@ -304,13 +349,15 @@
|
|
304 |
|
305 |
/* Slider */
|
306 |
$slider.each( function () {
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
|
|
|
|
314 |
value: val,
|
315 |
min : minValue,
|
316 |
max : maxValue,
|
@@ -330,35 +377,8 @@
|
|
330 |
} );
|
331 |
} );
|
332 |
|
333 |
-
// Codemirror.
|
334 |
-
$( function () {
|
335 |
-
var codemirrorInit = function () {
|
336 |
-
if ( typeof wp !== 'undefined' && typeof wp.codeEditor !== 'undefined' ) {
|
337 |
-
$( '.codemirror:not(.codemirror--initialized)' ).each( function () {
|
338 |
-
var settings = $( this ).data( 'settings' ),
|
339 |
-
editor = wp.codeEditor.initialize( $( this ), settings );
|
340 |
-
|
341 |
-
$( this ).addClass( 'codemirror--initialized' );
|
342 |
-
$( this ).data( 'codemirrorInstance', editor );
|
343 |
-
} );
|
344 |
-
}
|
345 |
-
};
|
346 |
-
$( document ).on( 'yith-plugin-fw-codemirror-init', codemirrorInit ).trigger( 'yith-plugin-fw-codemirror-init' );
|
347 |
-
} );
|
348 |
-
|
349 |
-
/* Select All - Deselect All */
|
350 |
-
$( document ).on( 'click', '.yith-plugin-fw-select-all', function () {
|
351 |
-
var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
|
352 |
-
$targetSelect.find( 'option' ).prop( 'selected', true ).trigger( 'change' );
|
353 |
-
} );
|
354 |
-
|
355 |
-
$( document ).on( 'click', '.yith-plugin-fw-deselect-all', function () {
|
356 |
-
var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
|
357 |
-
$targetSelect.find( 'option' ).prop( 'selected', false ).trigger( 'change' );
|
358 |
-
} );
|
359 |
-
|
360 |
-
|
361 |
$icons.each( function () {
|
|
|
362 |
var $container = $( this ),
|
363 |
$preview = $container.find( '.yit-icons-manager-icon-preview' ).first(),
|
364 |
$text = $container.find( '.yit-icons-manager-icon-text' );
|
@@ -386,23 +406,6 @@
|
|
386 |
} );
|
387 |
} );
|
388 |
|
389 |
-
/** Select Images */
|
390 |
-
$( document ).on( 'click', '.yith-plugin-fw-select-images__item', function () {
|
391 |
-
var item = $( this ),
|
392 |
-
key = item.data( 'key' ),
|
393 |
-
wrapper = item.closest( '.yith-plugin-fw-select-images__wrapper' ),
|
394 |
-
items = wrapper.find( '.yith-plugin-fw-select-images__item' ),
|
395 |
-
select = wrapper.find( 'select' ).first();
|
396 |
-
|
397 |
-
if ( select.length ) {
|
398 |
-
select.val( key ).trigger( 'yith_select_images_value_changed' ).trigger( 'change' );
|
399 |
-
items.removeClass( 'yith-plugin-fw-select-images__item--selected' );
|
400 |
-
item.addClass( 'yith-plugin-fw-select-images__item--selected' );
|
401 |
-
}
|
402 |
-
} );
|
403 |
-
|
404 |
-
$( document.body ).trigger( 'wc-enhanced-select-init' );
|
405 |
-
|
406 |
$( document ).find( '.ui-sortable .yith-toggle-elements' ).sortable(
|
407 |
{
|
408 |
cursor : 'move',
|
@@ -426,11 +429,41 @@
|
|
426 |
}
|
427 |
);
|
428 |
|
|
|
429 |
$( document.body ).trigger( 'yith-framework-enhanced-select-init' );
|
|
|
|
|
|
|
430 |
};
|
431 |
|
432 |
$( document ).on( 'yith_fields_init', yith_fields_init ).trigger( 'yith_fields_init' );
|
433 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
434 |
/* on-off */
|
435 |
$( document ).on( 'click', '.yith-plugin-fw-onoff-container span', function () {
|
436 |
var input = $( this ).prev( 'input' ),
|
@@ -450,7 +483,6 @@
|
|
450 |
} else {
|
451 |
$( this ).attr( 'value', 'no' ).removeClass( 'onoffchecked' );
|
452 |
}
|
453 |
-
$( this ).trigger( 'change' );
|
454 |
} );
|
455 |
|
456 |
|
@@ -732,7 +764,7 @@
|
|
732 |
|
733 |
$( document.body ).on( 'yith-plugin-fw-init-radio', function () {
|
734 |
$( '.yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)' ).each( function () {
|
735 |
-
$( this ).
|
736 |
$( this ).addClass( 'yith-plugin-fw-radio--initialized' );
|
737 |
} );
|
738 |
} ).trigger( 'yith-plugin-fw-init-radio' );
|
1 |
/* globals yith_framework_fw_fields, wp */
|
2 |
( function ( $ ) {
|
3 |
+
|
4 |
+
/* Upload */
|
5 |
+
var uploadHandler = {
|
6 |
+
selectors : {
|
7 |
+
imgPreview : '.yith-plugin-fw-upload-img-preview',
|
8 |
+
uploadButton: '.yith-plugin-fw-upload-button',
|
9 |
+
imgUrl : '.yith-plugin-fw-upload-img-url',
|
10 |
+
resetButton : '.yith-plugin-fw-upload-button-reset'
|
11 |
+
},
|
12 |
+
onImageChange : function () {
|
13 |
+
var url = $( this ).val(),
|
14 |
+
imageRegex = new RegExp( "(http|ftp|https)://[a-zA-Z0-9@?^=%&:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)" ),
|
15 |
+
preview = $( this ).parent().find( uploadHandler.selectors.imgPreview ).first();
|
16 |
+
|
17 |
+
if ( preview.length < 1 ) {
|
18 |
+
preview = $( this ).parent().parent().find( uploadHandler.selectors.imgPreview ).first();
|
19 |
+
}
|
20 |
+
|
21 |
+
if ( imageRegex.test( url ) ) {
|
22 |
+
preview.html( '<img src="' + url + '" style="max-width:100px; max-height:100px;" />' );
|
23 |
+
} else {
|
24 |
+
preview.html( '' );
|
25 |
+
}
|
26 |
+
},
|
27 |
+
onButtonClick : function ( e ) {
|
28 |
+
e.preventDefault();
|
29 |
+
|
30 |
+
var button = $( this ),
|
31 |
+
custom_uploader,
|
32 |
+
id = button.attr( 'id' ).replace( /-button$/, '' ).replace( /(\[|\])/g, '\\$1' );
|
33 |
+
|
34 |
+
// If the uploader object has already been created, reopen the dialog
|
35 |
+
if ( custom_uploader ) {
|
36 |
+
custom_uploader.open();
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
|
40 |
+
var custom_uploader_states = [
|
41 |
+
new wp.media.controller.Library(
|
42 |
+
{
|
43 |
+
library : wp.media.query(),
|
44 |
+
multiple : false,
|
45 |
+
title : 'Choose Image',
|
46 |
+
priority : 20,
|
47 |
+
filterable: 'uploaded'
|
48 |
+
}
|
49 |
+
)
|
50 |
+
];
|
51 |
+
|
52 |
+
// Create the media frame.
|
53 |
+
custom_uploader = wp.media.frames.downloadable_file = wp.media(
|
54 |
+
{
|
55 |
+
// Set the title of the modal.
|
56 |
+
title : 'Choose Image',
|
57 |
+
library : {
|
58 |
+
type: ''
|
59 |
+
},
|
60 |
+
button : {
|
61 |
+
text: 'Choose Image'
|
62 |
+
},
|
63 |
+
multiple: false,
|
64 |
+
states : custom_uploader_states
|
65 |
+
}
|
66 |
+
);
|
67 |
+
|
68 |
+
// When a file is selected, grab the URL and set it as the text field's value
|
69 |
+
custom_uploader.on( 'select', function () {
|
70 |
+
var attachment = custom_uploader.state().get( 'selection' ).first().toJSON(),
|
71 |
+
attachmentField = $( "#" + id + "-yith-attachment-id" );
|
72 |
+
|
73 |
+
$( "#" + id ).val( attachment.url );
|
74 |
+
// Save the id of the selected element to an element which name is the same with a suffix "-yith-attachment-id"
|
75 |
+
if ( attachmentField.length ) {
|
76 |
+
attachmentField.val( attachment.id );
|
77 |
+
}
|
78 |
+
uploadHandler.triggerImageChange();
|
79 |
+
} );
|
80 |
+
|
81 |
+
custom_uploader.open();
|
82 |
+
},
|
83 |
+
onResetClick : function () {
|
84 |
+
var button = $( this ),
|
85 |
+
id = button.attr( 'id' ).replace( /(\[|\])/g, '\\$1' ),
|
86 |
+
input_id = button.attr( 'id' ).replace( /-button-reset$/, '' ).replace( /(\[|\])/g, '\\$1' ),
|
87 |
+
default_value = $( '#' + id ).data( 'default' );
|
88 |
+
|
89 |
+
$( "#" + input_id ).val( default_value );
|
90 |
+
uploadHandler.triggerImageChange();
|
91 |
+
},
|
92 |
+
triggerImageChange: function () {
|
93 |
+
$( uploadHandler.selectors.imgUrl ).trigger( 'change' );
|
94 |
+
},
|
95 |
+
initOnce : function () {
|
96 |
+
if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
|
97 |
+
$( document ).on( 'change', uploadHandler.selectors.imgUrl, uploadHandler.onImageChange );
|
98 |
+
|
99 |
+
$( document ).on( 'click', uploadHandler.selectors.uploadButton, uploadHandler.onButtonClick );
|
100 |
+
|
101 |
+
$( document ).on( 'click', uploadHandler.selectors.resetButton, uploadHandler.onResetClick );
|
102 |
+
}
|
103 |
+
}
|
104 |
+
};
|
105 |
+
|
106 |
+
uploadHandler.initOnce();
|
107 |
+
|
108 |
+
var imageGallery = {
|
109 |
+
selectors: {
|
110 |
+
gallery : '.yith-plugin-fw-image-gallery',
|
111 |
+
notInitGallery: '.yith-plugin-fw-image-gallery:not(.yith-plugin-fw-image-gallery--initialized)',
|
112 |
+
button : '.yith-plugin-fw-image-gallery .image-gallery-button',
|
113 |
+
slideWrapper : 'ul.slides-wrapper'
|
114 |
+
},
|
115 |
+
initOnce : function () {
|
116 |
+
if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
|
117 |
+
$( document ).on( 'click', imageGallery.selectors.button, function ( e ) {
|
118 |
+
var button = $( this ),
|
119 |
+
gallery = button.closest( imageGallery.selectors.gallery ),
|
120 |
+
imageGalleryIDsField = gallery.find( '.image_gallery_ids' ),
|
121 |
+
attachmentIDs = imageGalleryIDsField.val(),
|
122 |
+
wrapper = gallery.find( 'ul.slides-wrapper' );
|
123 |
+
|
124 |
+
// Create the media frame.
|
125 |
+
var imageGalleryFrame = wp.media.frames.image_gallery = wp.media(
|
126 |
+
{
|
127 |
+
// Set the title of the modal.
|
128 |
+
title : button.data( 'choose' ),
|
129 |
+
button: {
|
130 |
+
text: button.data( 'update' )
|
131 |
+
},
|
132 |
+
states: [
|
133 |
+
new wp.media.controller.Library(
|
134 |
+
{
|
135 |
+
title : button.data( 'choose' ),
|
136 |
+
filterable: 'all',
|
137 |
+
multiple : true
|
138 |
+
}
|
139 |
+
)
|
140 |
+
]
|
141 |
+
}
|
142 |
+
);
|
143 |
+
|
144 |
+
// When an image is selected, run a callback.
|
145 |
+
imageGalleryFrame.on( 'select', function () {
|
146 |
+
var selection = imageGalleryFrame.state().get( 'selection' );
|
147 |
+
selection.map( function ( attachment ) {
|
148 |
+
attachment = attachment.toJSON();
|
149 |
+
|
150 |
+
if ( attachment.id ) {
|
151 |
+
attachmentIDs = attachmentIDs ? attachmentIDs + "," + attachment.id : attachment.id;
|
152 |
+
wrapper.append( '<li class="image" data-attachment_id="' + attachment.id + '"><img src="' + attachment.sizes.thumbnail.url + '"/><ul class="actions"><li><a href="#" class="delete" title="' + button.data( 'delete' ) + '">x</a></li></ul></li>' );
|
153 |
+
}
|
154 |
+
} );
|
155 |
+
|
156 |
+
imageGalleryIDsField.val( attachmentIDs );
|
157 |
+
imageGalleryIDsField.trigger( 'change' );
|
158 |
+
} );
|
159 |
+
|
160 |
+
imageGalleryFrame.open();
|
161 |
+
|
162 |
+
} );
|
163 |
+
}
|
164 |
+
},
|
165 |
+
init : function () {
|
166 |
+
if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
|
167 |
+
$( imageGallery.selectors.notInitGallery ).each( function () {
|
168 |
+
$( this ).addClass( 'yith-plugin-fw-image-gallery--initialized' );
|
169 |
+
var slideWrappers = $( this ).find( imageGallery.selectors.slideWrapper );
|
170 |
+
|
171 |
+
// Image ordering
|
172 |
+
slideWrappers.each( function () {
|
173 |
+
var currentSlideWrapper = $( this );
|
174 |
+
currentSlideWrapper.sortable( {
|
175 |
+
items : 'li.image',
|
176 |
+
cursor : 'move',
|
177 |
+
scrollSensitivity : 40,
|
178 |
+
forcePlaceholderSize: true,
|
179 |
+
forceHelperSize : false,
|
180 |
+
helper : 'clone',
|
181 |
+
opacity : 0.65,
|
182 |
+
start : function ( event, ui ) {
|
183 |
+
ui.item.css( 'background-color', '#f6f6f6' );
|
184 |
+
},
|
185 |
+
stop : function ( event, ui ) {
|
186 |
+
ui.item.removeAttr( 'style' );
|
187 |
+
},
|
188 |
+
update : function ( event, ui ) {
|
189 |
+
var attachment_ids = '';
|
190 |
+
|
191 |
+
currentSlideWrapper.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
|
192 |
+
var attachment_id = $( this ).attr( 'data-attachment_id' );
|
193 |
+
attachment_ids = attachment_ids + attachment_id + ',';
|
194 |
+
} );
|
195 |
+
|
196 |
+
currentSlideWrapper.closest( imageGallery.selectors.gallery ).find( '.image_gallery_ids' ).val( attachment_ids );
|
197 |
+
}
|
198 |
+
} );
|
199 |
+
} );
|
200 |
+
|
201 |
+
// Remove images
|
202 |
+
slideWrappers.on( 'click', 'a.delete', function ( e ) {
|
203 |
+
e.preventDefault();
|
204 |
+
var _wrapper = $( this ).closest( imageGallery.selectors.gallery ),
|
205 |
+
_slideWrapper = _wrapper.find( 'ul.slides-wrapper' ),
|
206 |
+
_imageGalleryIDsField = _wrapper.find( '.image_gallery_ids' ),
|
207 |
+
_attachmentIDs = '';
|
208 |
+
|
209 |
+
$( this ).closest( 'li.image' ).remove();
|
210 |
+
|
211 |
+
_slideWrapper.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
|
212 |
+
var attachment_id = $( this ).attr( 'data-attachment_id' );
|
213 |
+
_attachmentIDs = _attachmentIDs + attachment_id + ',';
|
214 |
+
} );
|
215 |
+
|
216 |
+
_imageGalleryIDsField.val( _attachmentIDs );
|
217 |
+
} );
|
218 |
+
} )
|
219 |
+
}
|
220 |
+
}
|
221 |
+
};
|
222 |
+
imageGallery.initOnce();
|
223 |
+
|
224 |
+
|
225 |
+
// Codemirror.
|
226 |
+
$( function () {
|
227 |
+
var codemirrorInit = function () {
|
228 |
+
if ( typeof wp !== 'undefined' && typeof wp.codeEditor !== 'undefined' ) {
|
229 |
+
$( '.codemirror:not(.codemirror--initialized)' ).each( function () {
|
230 |
+
var settings = $( this ).data( 'settings' ),
|
231 |
+
editor = wp.codeEditor.initialize( $( this ), settings );
|
232 |
+
|
233 |
+
$( this ).addClass( 'codemirror--initialized' );
|
234 |
+
$( this ).data( 'codemirrorInstance', editor );
|
235 |
+
} );
|
236 |
+
}
|
237 |
+
};
|
238 |
+
$( document ).on( 'yith-plugin-fw-codemirror-init', codemirrorInit ).trigger( 'yith-plugin-fw-codemirror-init' );
|
239 |
+
} );
|
240 |
+
|
241 |
var yith_fields_init = function () {
|
242 |
+
var $datepicker = $( '.yith-plugin-fw-datepicker:not(.yith-plugin-fw-datepicker--initialized)' ),
|
243 |
+
$colorpicker = $( '.yith-plugin-fw-colorpicker:not(.yith-plugin-fw-colorpicker--initialized)' ),
|
244 |
+
$sidebars = $( '.yith-plugin-fw-sidebar-layout:not(.yith-plugin-fw-sidebar-layout--initialized)' ),
|
245 |
+
$slider = $( '.yith-plugin-fw-slider-container:not(.yith-plugin-fw-slider-container--initialized)' ),
|
246 |
+
$icons = $( '.yit-icons-manager-wrapper:not(.yit-icons-manager-wrapper--initialized)' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
|
248 |
/* Datepicker */
|
249 |
$datepicker.each( function () {
|
250 |
+
$( this ).addClass( 'yith-plugin-fw-datepicker--initialized' );
|
251 |
+
|
252 |
var currentDatePicker = $( this ),
|
253 |
args = currentDatePicker.data(),
|
254 |
icon = currentDatePicker.next( '.yith-icon-calendar' );
|
271 |
} );
|
272 |
|
273 |
/* Colorpicker */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
$colorpicker.each( function () {
|
275 |
+
$( this ).addClass( 'yith-plugin-fw-colorpicker--initialized' );
|
276 |
+
|
277 |
+
$( this ).wpColorPicker(
|
278 |
+
{
|
279 |
+
palettes: false,
|
280 |
+
width : 200,
|
281 |
+
mode : 'hsl',
|
282 |
+
clear : function () {
|
283 |
+
var input = $( this );
|
284 |
+
input.val( input.data( 'default-color' ) );
|
285 |
+
input.trigger( 'change' );
|
286 |
+
}
|
287 |
+
}
|
288 |
+
);
|
289 |
+
|
290 |
var select_label = $( this ).data( 'variations-label' ),
|
291 |
wrap_main1 = $( this ).closest( '.yith-plugin-fw-colorpicker-field-wrapper' ),
|
292 |
wrap_main2 = $( this ).closest( '.yith-single-colorpicker' ),
|
298 |
|
299 |
if ( !wrap1.find( '.wp-picker-default-custom' ).length ) {
|
300 |
var button = $( '<span/>' ).attr( {
|
301 |
+
class: 'wp-picker-default-custom'
|
302 |
} );
|
303 |
wrap1.find( '.wp-picker-default' ).wrap( button );
|
304 |
}
|
305 |
|
306 |
if ( !wrap2.find( '.wp-picker-default-custom' ).length ) {
|
307 |
var button = $( '<span/>' ).attr( {
|
308 |
+
class: 'wp-picker-default-custom'
|
309 |
} );
|
310 |
wrap2.find( '.wp-picker-default' ).wrap( button );
|
311 |
}
|
312 |
} );
|
313 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
314 |
/* Sidebars */
|
315 |
$sidebars.each( function () {
|
316 |
+
$( this ).addClass( 'yith-plugin-fw-sidebar-layout--initialized' );
|
317 |
var $images = $( this ).find( 'img' );
|
318 |
$images.on( 'click', function () {
|
319 |
var $container = $( this ).closest( '.yith-plugin-fw-sidebar-layout' ),
|
349 |
|
350 |
/* Slider */
|
351 |
$slider.each( function () {
|
352 |
+
$( this ).addClass( 'yith-plugin-fw-slider-container--initialized' );
|
353 |
+
var theSlider = $( this ).find( '.ui-slider-horizontal' ),
|
354 |
+
val = theSlider.data( 'val' ),
|
355 |
+
minValue = theSlider.data( 'min' ),
|
356 |
+
maxValue = theSlider.data( 'max' ),
|
357 |
+
step = theSlider.data( 'step' ),
|
358 |
+
labels = theSlider.data( 'labels' );
|
359 |
+
|
360 |
+
theSlider.slider( {
|
361 |
value: val,
|
362 |
min : minValue,
|
363 |
max : maxValue,
|
377 |
} );
|
378 |
} );
|
379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
$icons.each( function () {
|
381 |
+
$( this ).addClass( 'yit-icons-manager-wrapper--initialized' );
|
382 |
var $container = $( this ),
|
383 |
$preview = $container.find( '.yit-icons-manager-icon-preview' ).first(),
|
384 |
$text = $container.find( '.yit-icons-manager-icon-text' );
|
406 |
} );
|
407 |
} );
|
408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
$( document ).find( '.ui-sortable .yith-toggle-elements' ).sortable(
|
410 |
{
|
411 |
cursor : 'move',
|
429 |
}
|
430 |
);
|
431 |
|
432 |
+
$( document.body ).trigger( 'wc-enhanced-select-init' );
|
433 |
$( document.body ).trigger( 'yith-framework-enhanced-select-init' );
|
434 |
+
$( document ).trigger( 'yith-plugin-fw-codemirror-init' );
|
435 |
+
uploadHandler.triggerImageChange();
|
436 |
+
imageGallery.init();
|
437 |
};
|
438 |
|
439 |
$( document ).on( 'yith_fields_init', yith_fields_init ).trigger( 'yith_fields_init' );
|
440 |
|
441 |
+
/** Select Images */
|
442 |
+
$( document ).on( 'click', '.yith-plugin-fw-select-images__item', function () {
|
443 |
+
var item = $( this ),
|
444 |
+
key = item.data( 'key' ),
|
445 |
+
wrapper = item.closest( '.yith-plugin-fw-select-images__wrapper' ),
|
446 |
+
items = wrapper.find( '.yith-plugin-fw-select-images__item' ),
|
447 |
+
select = wrapper.find( 'select' ).first();
|
448 |
+
|
449 |
+
if ( select.length ) {
|
450 |
+
select.val( key ).trigger( 'yith_select_images_value_changed' ).trigger( 'change' );
|
451 |
+
items.removeClass( 'yith-plugin-fw-select-images__item--selected' );
|
452 |
+
item.addClass( 'yith-plugin-fw-select-images__item--selected' );
|
453 |
+
}
|
454 |
+
} );
|
455 |
+
|
456 |
+
/* Select All - Deselect All */
|
457 |
+
$( document ).on( 'click', '.yith-plugin-fw-select-all', function () {
|
458 |
+
var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
|
459 |
+
$targetSelect.find( 'option' ).prop( 'selected', true ).trigger( 'change' );
|
460 |
+
} );
|
461 |
+
|
462 |
+
$( document ).on( 'click', '.yith-plugin-fw-deselect-all', function () {
|
463 |
+
var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
|
464 |
+
$targetSelect.find( 'option' ).prop( 'selected', false ).trigger( 'change' );
|
465 |
+
} );
|
466 |
+
|
467 |
/* on-off */
|
468 |
$( document ).on( 'click', '.yith-plugin-fw-onoff-container span', function () {
|
469 |
var input = $( this ).prev( 'input' ),
|
483 |
} else {
|
484 |
$( this ).attr( 'value', 'no' ).removeClass( 'onoffchecked' );
|
485 |
}
|
|
|
486 |
} );
|
487 |
|
488 |
|
764 |
|
765 |
$( document.body ).on( 'yith-plugin-fw-init-radio', function () {
|
766 |
$( '.yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)' ).each( function () {
|
767 |
+
$( this ).find( 'input[type="radio"]' ).filter( '[value="' + $( this ).data( 'value' ) + '"]' ).click();
|
768 |
$( this ).addClass( 'yith-plugin-fw-radio--initialized' );
|
769 |
} );
|
770 |
} ).trigger( 'yith-plugin-fw-init-radio' );
|
@@ -1 +1 @@
|
|
1 |
-
!function(e){e(document).on("yith_fields_init",function(){var t=e(".yith-plugin-fw-datepicker"),i=e(".yith-plugin-fw-colorpicker"),n={imgPreviewHandler:".yith-plugin-fw-upload-img-preview",uploadButtonHandler:".yith-plugin-fw-upload-button",imgUrlHandler:".yith-plugin-fw-upload-img-url",resetButtonHandler:".yith-plugin-fw-upload-button-reset",imgUrl:e(".yith-plugin-fw-upload-img-url")},a=e(".add_media"),l={rootSelector:".yith-plugin-fw-image-gallery",buttonSelector:".yith-plugin-fw-image-gallery .image-gallery-button",sliderWrapper:e(".yith-plugin-fw-image-gallery ul.slides-wrapper")},o=e(".yith-plugin-fw-sidebar-layout"),s=e(".yith-plugin-fw-slider-container .ui-slider-horizontal"),r=e(".yit-icons-manager-wrapper");e(".yith-plugin-ui td.forminp-checkbox");t.each(function(){var t=e(this),i=t.data(),n=t.next(".yith-icon-calendar");i.showAnim=!1,i.beforeShow=function(e,t){t.dpDiv.addClass("yith-plugin-fw-datepicker-div")},i.onClose=function(e,t){t.dpDiv.removeClass("yith-plugin-fw-datepicker-div")},t.datepicker(i),n&&n.on("click",function(){t.datepicker("show")})}),i.wpColorPicker({palettes:!1,width:200,mode:"hsl",clear:function(){var t=e(this);t.val(t.data("default-color")),t.change()}}),i.each(function(){var t=e(this).data("variations-label"),i=e(this).closest(".yith-plugin-fw-colorpicker-field-wrapper"),n=e(this).closest(".yith-single-colorpicker"),a=i.find(".wp-picker-input-wrap"),l=n.find(".wp-picker-input-wrap");if(a.length&&i.find("a.wp-color-result").attr("title",t),n.length&&n.find("a.wp-color-result").attr("title",t),!a.find(".wp-picker-default-custom").length){var o=e("<span/>").attr({"class":"wp-picker-default-custom"});a.find(".wp-picker-default").wrap(o)}l.find(".wp-picker-default-custom").length||(o=e("<span/>").attr({"class":"wp-picker-default-custom"}),l.find(".wp-picker-default").wrap(o))}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(n.imgUrl.change(function(){var t=e(this).val(),i=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)"),a=e(this).parent().find(n.imgPreviewHandler).first();a.length<1&&(a=e(this).parent().parent().find(n.imgPreviewHandler).first()),i.test(t)?a.html('<img src="'+t+'" style="max-width:100px; max-height:100px;" />'):a.html("")}).trigger("change"),e(document).on("click",n.uploadButtonHandler,function(t){t.preventDefault();var i,a=e(this).attr("id").replace(/-button$/,"").replace(/(\[|\])/g,"\\$1");if(i)i.open();else{var l=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];(i=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:l})).on("select",function(){var t=i.state().get("selection").first().toJSON();e("#"+a).val(t.url),e("#"+a+"-yith-attachment-id")&&e("#"+a+"-yith-attachment-id").val(t.id),n.imgUrl.trigger("change")}),i.open()}}),e(document).on("click",n.resetButtonHandler,function(t){var i=e(this),a=i.attr("id").replace(/(\[|\])/g,"\\$1"),l=i.attr("id").replace(/-button-reset$/,"").replace(/(\[|\])/g,"\\$1"),o=e("#"+a).data("default");e("#"+l).val(o),n.imgUrl.trigger("change")}));a.on("click",function(){}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(e(document).on("click",l.buttonSelector,function(t){var i=e(this),n=i.closest(l.rootSelector),a=n.find(".image_gallery_ids"),o=a.val(),s=n.find("ul.slides-wrapper"),r=wp.media.frames.image_gallery=wp.media({title:i.data("choose"),button:{text:i.data("update")},states:[new wp.media.controller.Library({title:i.data("choose"),filterable:"all",multiple:!0})]});r.on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).id&&(o=o?o+","+e.id:e.id,s.append('<li class="image" data-attachment_id="'+e.id+'"><img src="'+e.sizes.thumbnail.url+'"/><ul class="actions"><li><a href="#" class="delete" title="'+i.data("delete")+'">x</a></li></ul></li>'))}),a.val(o),a.trigger("change")}),r.open()}),l.sliderWrapper.each(function(){var t=e(this);t.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(i,n){var a="";t.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");a=a+t+","}),t.closest(l.rootSelector).find(".image_gallery_ids").val(a)}})}),l.sliderWrapper.on("click","a.delete",function(t){t.preventDefault();var i=e(this).closest(l.rootSelector),n=i.find("ul.slides-wrapper"),a=i.find(".image_gallery_ids"),o="";e(this).closest("li.image").remove(),n.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");o=o+t+","}),a.val(o)})),o.each(function(){e(this).find("img").on("click",function(){var t=e(this).closest(".yith-plugin-fw-sidebar-layout"),i=t.find(".yith-plugin-fw-sidebar-layout-sidebar-left-container"),n=t.find(".yith-plugin-fw-sidebar-layout-sidebar-right-container"),a=e(this).data("type");if(e(this).parent().children(":radio").attr("checked",!1),e(this).prev(":radio").attr("checked",!0),void 0!==a)switch(a){case"left":i.show(),n.hide();break;case"right":n.show(),i.hide();break;case"double":i.show(),n.show();break;default:i.hide(),n.hide()}})}),s.each(function(){var t=e(this).data("val"),i=e(this).data("min"),n=e(this).data("max"),a=e(this).data("step"),l=e(this).data("labels");e(this).slider({value:t,min:i,max:n,range:"min",step:a,create:function(){e(this).find(".ui-slider-handle").text(e(this).slider("value"))},slide:function(t,i){e(this).find("input").val(i.value).trigger("change"),e(this).find(".ui-slider-handle").text(i.value),e(this).siblings(".feedback").find("strong").text(i.value+l)}})}),e(function(){e(document).on("yith-plugin-fw-codemirror-init",function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.codeEditor&&e(".codemirror:not(.codemirror--initialized)").each(function(){var t=e(this).data("settings"),i=wp.codeEditor.initialize(e(this),t);e(this).addClass("codemirror--initialized"),e(this).data("codemirrorInstance",i)})}).trigger("yith-plugin-fw-codemirror-init")}),e(document).on("click",".yith-plugin-fw-select-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!0).trigger("change")}),e(document).on("click",".yith-plugin-fw-deselect-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!1).trigger("change")}),r.each(function(){var t=e(this),i=t.find(".yit-icons-manager-icon-preview").first(),n=t.find(".yit-icons-manager-icon-text");t.on("click",".yit-icons-manager-list li",function(a){var l=e(a.target).closest("li"),o=l.data("font"),s=l.data("icon"),r=l.data("key"),c=l.data("name");i.attr("data-font",o),i.attr("data-icon",s),i.attr("data-key",r),i.attr("data-name",c),n.val(o+":"+c),t.find(".yit-icons-manager-list li").removeClass("active"),l.addClass("active")}),t.on("click",".yit-icons-manager-action-set-default",function(){t.find(".yit-icons-manager-list li.default").trigger("click")})}),e(document).on("click",".yith-plugin-fw-select-images__item",function(){var t=e(this),i=t.data("key"),n=t.closest(".yith-plugin-fw-select-images__wrapper"),a=n.find(".yith-plugin-fw-select-images__item"),l=n.find("select").first();l.length&&(l.val(i).trigger("yith_select_images_value_changed").trigger("change"),a.removeClass("yith-plugin-fw-select-images__item--selected"),t.addClass("yith-plugin-fw-select-images__item--selected"))}),e(document.body).trigger("wc-enhanced-select-init"),e(document).find(".ui-sortable .yith-toggle-elements").sortable({cursor:"move",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop:function(t,i){var n=jQuery(".ui-sortable-handle"),a=0,l=new Array;for(a=0;a<n.length;a++)l[a]=e(n[a]).data("item_key");l.length>0&&e(this).closest(".toggle-element").saveToggleElement(null,l)}}),e(document.body).trigger("yith-framework-enhanced-select-init")}).trigger("yith_fields_init"),e(document).on("click",".yith-plugin-fw-onoff-container span",function(){var t=e(this).prev("input");t.prop("disabled")||t.trigger("click")}),e(document).on("click",".yith-plugin-fw-onoff-container input",function(t){e(this).is(":checked")?e(this).attr("value","yes").addClass("onoffchecked"):e(this).attr("value","no").removeClass("onoffchecked"),e(this).trigger("change")}),e.fn.saveToggleElement=function(t,i){var n=e(this),a="yith_plugin_fw_save_toggle_element",l=n.serializeToggleElement(),o=n.find(".yith-toggle_wrapper"),s=o.attr("id"),r=e.urlParam("tab");l.append("security",o.data("nonce")),void 0!==i&&i.length>0&&l.append("yith_toggle_elements_order_keys",i),n.closest(".metaboxes-tab.yith-plugin-ui").length?(a="yith_plugin_fw_save_toggle_element_metabox",post_id=e(this).closest("form#post").find("#post_ID").val(),yit_metaboxes_nonce=e(this).closest("form#post").find("#yit_metaboxes_nonce").val(),metabox_tab=e(this).closest(".tabs-panel").attr("id"),url=yith_framework_fw_fields.ajax_url+"?action="+a+"&post_ID="+post_id+"&yit_metaboxes_nonce="+yit_metaboxes_nonce+"&toggle_id="+s+"&metabox_tab="+metabox_tab):url=yith_framework_fw_fields.admin_url+"?action="+a+"&tab="+r+"&toggle_id="+s,e.ajax({type:"POST",url:url,data:l,contentType:!1,processData:!1,success:function(i){t&&t.removeClass("show"),e(document).trigger("yith_save_toggle_element_done",[i,n])}})},e.fn.serializeToggleElement=function(){var t=e(this),i=new FormData,n=e(t).find(":input").serializeArray();return e.each(n,function(e,t){el_name=t.name,i.append(t.name,t.value)}),i},e.fn.formatToggleTitle=function(){var t=e(this),i=t.find(":input"),n=t.find("span.title").data("title_format"),a=t.find(".subtitle").data("subtitle_format"),l=new RegExp("[^%%]+(?=[%%])","g");if(void 0!==n)var o=n.match(l);if(void 0!==a)var s=a.match(l);e.each(i,function(t,i){void 0!==e(i).attr("id")&&($field_id=e(i).attr("id"),$field_array=$field_id.split("_"),$field_array.pop(),$field_id=$field_array.join("_"),$field_val=e(i).val(),null!=o&&void 0!==o&&-1!==o.indexOf($field_id)&&(n=n.replace("%%"+$field_id+"%%",$field_val)),null!=s&&void 0!==s&&-1!==s.indexOf($field_id)&&(a=a.replace("%%"+$field_id+"%%",$field_val)))}),""!==n&&t.find("span.title").html(n),""!==a&&t.find(".subtitle").html(a),e(document).trigger("yith-toggle-element-item-title",[t])},e.urlParam=function(e){var t=new RegExp("[?&]"+e+"=([^&#]*)").exec(window.location.search);return null!==t&&(t[1]||0)},e(document).on("click",".yith-toggle-title",function(t){var i=e(t.target),n=i.closest(".yith-toggle-row"),a=n.find(".yith-toggle-content");if(i.hasClass("yith-plugin-fw-onoff")||i.hasClass("yith-icon-drag"))return!1;n.is(".yith-toggle-row-opened")?a.slideUp(400):a.slideDown(400),n.toggleClass("yith-toggle-row-opened")}),e(document).on("click",".yith-add-box-button",function(t){t.preventDefault();var i=e(this),n=i.data("box_id"),a=i.data("closed_label"),l=i.data("opened_label"),o=i.closest(".yith-toggle_wrapper").attr("id"),s=wp.template("yith-toggle-element-add-box-content-"+o);""!==n&&(e("#"+n).html(s({index:"box_id"})).slideToggle(),""!==a&&(i.html()===a?i.html(l).removeClass("closed"):i.html(a).addClass("closed")),e(document).trigger("yith_fields_init"),e(document).trigger("yith-add-box-button-toggle",[i]))}),e(document).on("click",".yith-add-box-buttons .yith-save-button",function(t){t.preventDefault();var i=e(this).parents(".yith-add-box"),n=e(this).closest(".yith-toggle_wrapper").attr("id"),a=i.find(".spinner"),l=e(this).parents(".toggle-element"),o=i.find(":input"),s=0,r=e('<input type="hidden">');l.find(".yith-toggle-row").each(function(){var t=parseInt(e(this).data("item_key"));s<=t&&(s=t+1)}),r.val(s),e(document).trigger("yith-toggle-change-counter",[r,i]),s=r.val();var c=wp.template("yith-toggle-element-item-"+n),d=e(c({index:s}));a.addClass("show"),e.each(o,function(t,i){if(void 0!==e(i).attr("id")){var n=e(i).attr("id"),a=e(i).val();n="radio"===e(i).attr("type")?(n=(n=e(i).closest(".yith-plugin-fw-radio").attr("id")).replace("new_","")+"_"+s)+"-"+a:n.replace("new_","")+"_"+s,e(i).is(":checked")&&e(d).find("#"+n).prop("checked",!0),(e(i).hasClass("yith-post-search")||e(i).hasClass("yith-term-search"))&&e(d).find("#"+n).html(e("#"+e(i).attr("id")).html()),e(d).find("#"+n).val(a)}}),e(d).formatToggleTitle();var u=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-add",[i,d,u]);setTimeout(function(){if("yes"===u.val()){e(l).find(".yith-toggle-elements").append(d),e(i).find(".yith-plugin-fw-datepicker").datepicker("destroy"),e(i).html(""),e(i).prev(".yith-add-box-button").trigger("click"),l.saveToggleElement();setTimeout(function(){e(l).find(".highlight").removeClass("highlight")},2e3),e(document).trigger("yith_fields_init")}},1e3)}),e(document).on("click",".yith-toggle-row .yith-save-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element"),n=e(this).closest(".yith-toggle-row"),a=n.find(".spinner");n.formatToggleTitle();var l=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-update",[i,n,l]),"yes"===l.val()&&(a.addClass("show"),i.saveToggleElement(a))}),e(document).on("click",".yith-toggle-row .yith-delete-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element");e(this).closest(".yith-toggle-row").remove(),i.saveToggleElement()}),e(document).on("click",".yith-toggle-onoff",function(t){t.preventDefault(),e(this).closest(".toggle-element").saveToggleElement()}),e(document).on("click",".yith-plugin-fw-radio input[type=radio]",function(){var t=e(this).closest(".yith-plugin-fw-radio"),i=e(this).val();t.val(i).data("value",i).trigger("change")}),e(document.body).on("yith-plugin-fw-init-radio",function(){e(".yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)").each(function(){e(this).val(e(this).data("value")),e(this).addClass("yith-plugin-fw-radio--initialized")})}).trigger("yith-plugin-fw-init-radio"),e(document).on("click",".yith-password-eye",function(){var t=e(this),i=e(this).closest(".yith-password-wrapper").find("input");"password"===i.attr("type")?(i.attr("type","text"),t.addClass("yith-password-eye-closed")):(i.attr("type","password"),t.removeClass("yith-password-eye-closed"))}),e(document).on("select2:open",function(t){e(t.target).closest(".yith-plugin-ui").length&&e(".select2-results").closest(".select2-container").addClass("yith-plugin-fw-select2-container")});var t={selectors:{wrapper:".yith-plugin-fw-dimensions",units:{wrapper:".yith-plugin-fw-dimensions__units",single:".yith-plugin-fw-dimensions__unit",value:".yith-plugin-fw-dimensions__unit__value",selectedClass:"yith-plugin-fw-dimensions__unit--selected"},linked:{button:".yith-plugin-fw-dimensions__linked",value:".yith-plugin-fw-dimensions__linked__value",wrapperActiveClass:"yith-plugin-fw-dimensions--linked-active"},dimensions:{number:".yith-plugin-fw-dimensions__dimension__number"}},init:function(){var i=t;e(document).on("click",i.selectors.units.single,i.unitChange),e(document).on("click",i.selectors.linked.button,i.linkedChange),e(document).on("change keyup",i.selectors.dimensions.number,i.numberChange)},unitChange:function(i){var n=e(this).closest(t.selectors.units.single),a=n.closest(t.selectors.units.wrapper),l=a.find(t.selectors.units.single),o=a.find(t.selectors.units.value).first(),s=n.data("value");l.removeClass(t.selectors.units.selectedClass),n.addClass(t.selectors.units.selectedClass),o.val(s).trigger("change")},linkedChange:function(){var i=e(this).closest(t.selectors.linked.button),n=i.closest(t.selectors.wrapper),a=i.find(t.selectors.linked.value);"yes"===a.val()?(n.removeClass(t.selectors.linked.wrapperActiveClass),a.val("no")):(n.addClass(t.selectors.linked.wrapperActiveClass),a.val("yes"),n.find(t.selectors.dimensions.number).first().trigger("change"))},numberChange:function(i){var n=e(this).closest(t.selectors.dimensions.number),a=n.closest(t.selectors.wrapper);a.hasClass(t.selectors.linked.wrapperActiveClass)&&a.find(t.selectors.dimensions.number).val(n.val())}};t.init();e(document).on("click",".yith-plugin-fw-copy-to-clipboard__copy",function(){var t,i=e(this).closest(".yith-plugin-fw-copy-to-clipboard"),n=i.find(".yith-plugin-fw-copy-to-clipboard__field"),a=i.find(".yith-plugin-fw-copy-to-clipboard__tip"),l=i.data("tip-timeout");l&&clearTimeout(l),n.select(),document.execCommand("copy"),(t="getSelection"in window&&window.getSelection())?"empty"in t?t.empty():"removeAllRanges"in t&&t.removeAllRanges():"selection"in document&&document.selection.empty(),a.fadeIn(400),l=setTimeout(function(){a.fadeOut(400)},1500),i.data("tip-timeout",l)});var i={init:function(){e(document).on("click",".yith-plugin-fw__action-button--has-menu",i.open),e(document).on("click",".yith-plugin-fw__action-button__menu",i.stopPropagation),e(document).on("click",i.closeAll)},closeAll:function(){e(".yith-plugin-fw__action-button--opened").removeClass("yith-plugin-fw__action-button--opened")},open:function(t){var n=e(this).closest(".yith-plugin-fw__action-button"),a=n.hasClass("yith-plugin-fw__action-button--opened");t.preventDefault(),t.stopPropagation(),i.closeAll(),a||n.addClass("yith-plugin-fw__action-button--opened")},stopPropagation:function(e){e.stopPropagation()}};i.init(),e(document).on("click","a.yith-plugin-fw__require-confirmation-link",function(t){var i=e(this).closest("a.yith-plugin-fw__require-confirmation-link"),n=i.attr("href");if(n&&"#"!==n&&(t.preventDefault(),t.stopPropagation(),"yith"in window&&"ui"in yith)){var a,l=["title","message","confirmButtonType","cancelButton","confirmButton"],o={};for(a in l){var s=l[a],r=i.data(s);void 0!==r&&(o[s]=r)}o.onConfirm=function(){window.location.href=n},o.closeAfterConfirm=!1,yith.ui.confirm(o)}}),e(document).on("yith-plugin-fw-tips-init",function(){e(".yith-plugin-fw__tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})}).trigger("yith-plugin-fw-tips-init")}(jQuery);
|
1 |
+
!function(e){var t={selectors:{imgPreview:".yith-plugin-fw-upload-img-preview",uploadButton:".yith-plugin-fw-upload-button",imgUrl:".yith-plugin-fw-upload-img-url",resetButton:".yith-plugin-fw-upload-button-reset"},onImageChange:function(){var i=e(this).val(),n=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)"),a=e(this).parent().find(t.selectors.imgPreview).first();a.length<1&&(a=e(this).parent().parent().find(t.selectors.imgPreview).first()),n.test(i)?a.html('<img src="'+i+'" style="max-width:100px; max-height:100px;" />'):a.html("")},onButtonClick:function(i){i.preventDefault();var n,a=e(this).attr("id").replace(/-button$/,"").replace(/(\[|\])/g,"\\$1");if(n)n.open();else{var l=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];(n=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:l})).on("select",function(){var i=n.state().get("selection").first().toJSON(),l=e("#"+a+"-yith-attachment-id");e("#"+a).val(i.url),l.length&&l.val(i.id),t.triggerImageChange()}),n.open()}},onResetClick:function(){var i=e(this),n=i.attr("id").replace(/(\[|\])/g,"\\$1"),a=i.attr("id").replace(/-button-reset$/,"").replace(/(\[|\])/g,"\\$1"),l=e("#"+n).data("default");e("#"+a).val(l),t.triggerImageChange()},triggerImageChange:function(){e(t.selectors.imgUrl).trigger("change")},initOnce:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(e(document).on("change",t.selectors.imgUrl,t.onImageChange),e(document).on("click",t.selectors.uploadButton,t.onButtonClick),e(document).on("click",t.selectors.resetButton,t.onResetClick))}};t.initOnce();var i={selectors:{gallery:".yith-plugin-fw-image-gallery",notInitGallery:".yith-plugin-fw-image-gallery:not(.yith-plugin-fw-image-gallery--initialized)",button:".yith-plugin-fw-image-gallery .image-gallery-button",slideWrapper:"ul.slides-wrapper"},initOnce:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&e(document).on("click",i.selectors.button,function(t){var n=e(this),a=n.closest(i.selectors.gallery),l=a.find(".image_gallery_ids"),o=l.val(),s=a.find("ul.slides-wrapper"),r=wp.media.frames.image_gallery=wp.media({title:n.data("choose"),button:{text:n.data("update")},states:[new wp.media.controller.Library({title:n.data("choose"),filterable:"all",multiple:!0})]});r.on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).id&&(o=o?o+","+e.id:e.id,s.append('<li class="image" data-attachment_id="'+e.id+'"><img src="'+e.sizes.thumbnail.url+'"/><ul class="actions"><li><a href="#" class="delete" title="'+n.data("delete")+'">x</a></li></ul></li>'))}),l.val(o),l.trigger("change")}),r.open()})},init:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&e(i.selectors.notInitGallery).each(function(){e(this).addClass("yith-plugin-fw-image-gallery--initialized");var t=e(this).find(i.selectors.slideWrapper);t.each(function(){var t=e(this);t.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(n,a){var l="";t.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");l=l+t+","}),t.closest(i.selectors.gallery).find(".image_gallery_ids").val(l)}})}),t.on("click","a.delete",function(t){t.preventDefault();var n=e(this).closest(i.selectors.gallery),a=n.find("ul.slides-wrapper"),l=n.find(".image_gallery_ids"),o="";e(this).closest("li.image").remove(),a.find("li.image").css
|