Version Description
Download this release
Release Info
Developer | valiano |
Plugin | Unlimited Elements For Elementor (Free Widgets, Addons, Templates) |
Version | 1.5.11 |
Comparing to | |
See all releases |
Code changes from version 1.5.10 to 1.5.11
- assets_libraries/filters/ue_filters.js +52 -6
- assets_libraries/remote/ue-remote-controls.js +3 -3
- inc_php/framework/functions.php +2 -1
- inc_php/framework/instagram/helper.class.php +28 -5
- inc_php/unitecreator_dialog_param.class.php +3 -2
- inc_php/unitecreator_filters_process.class.php +3 -1
- inc_php/unitecreator_helper.class.php +28 -6
- inc_php/unitecreator_template_engine.class.php +16 -4
- includes.php +1 -1
- provider/core/plugins/unlimited_elements/elementor/assets/uc_editor_admin.js +58 -17
- provider/core/plugins/unlimited_elements/elementor/assets/uc_front_admin.css +5 -1
- provider/core/plugins/unlimited_elements/elementor/elementor_integrate.class.php +45 -9
- provider/core/plugins/unlimited_elements/elementor/elementor_widget.class.php +29 -3
- provider/core/plugins/unlimited_elements/helper_provider_core.class.php +78 -8
- provider/functions_wordpress.class.php +6 -2
- provider/provider_operations.class.php +4 -1
- provider/provider_params_processor.class.php +72 -20
- provider/provider_settings.class.php +64 -2
- provider/woocommerce_integrate.class.php +53 -4
- readme.txt +110 -90
- release_log.txt +18 -1
- unlimited_elements.php +1 -1
- views/objects/addon_view_childparams.class.php +21 -2
assets_libraries/filters/ue_filters.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
function UEDynamicFilters(){
|
3 |
|
4 |
var g_objFilters, g_objGrid, g_filtersData, g_urlBase;
|
5 |
-
var g_urlAjax, g_lastGridAjaxCall, g_cache = {};
|
6 |
|
7 |
var g_types = {
|
8 |
PAGINATION:"pagination",
|
@@ -21,7 +21,8 @@ function UEDynamicFilters(){
|
|
21 |
CLASS_INITING: "uc-filter-initing",
|
22 |
CLASS_REFRESH_SOON: "uc-ajax-refresh-soon",
|
23 |
EVENT_SET_HTML_ITEMS: "uc_ajax_sethtml",
|
24 |
-
EVENT_AJAX_REFRESHED: "uc_ajax_refreshed" //on grid
|
|
|
25 |
};
|
26 |
|
27 |
var g_options = {
|
@@ -388,6 +389,25 @@ function UEDynamicFilters(){
|
|
388 |
|
389 |
}
|
390 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
function ________FILTERS_______________(){}
|
392 |
|
393 |
|
@@ -1000,7 +1020,7 @@ function UEDynamicFilters(){
|
|
1000 |
* set html grid from ajax response
|
1001 |
*/
|
1002 |
function operateAjax_setHtmlGrid(response, objGrid, isLoadMore){
|
1003 |
-
|
1004 |
if(objGrid.length == 0)
|
1005 |
return(false);
|
1006 |
|
@@ -1032,6 +1052,16 @@ function UEDynamicFilters(){
|
|
1032 |
|
1033 |
var isCustomRefresh = objGrid.data("custom-sethtml");
|
1034 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1035 |
//if custom refresh - just save the new html in data
|
1036 |
if(isCustomRefresh == true){
|
1037 |
|
@@ -1157,6 +1187,9 @@ function UEDynamicFilters(){
|
|
1157 |
operateAjax_setHtmlWidgets(response, objFilters);
|
1158 |
|
1159 |
objGrid.trigger(g_vars.EVENT_AJAX_REFRESHED);
|
|
|
|
|
|
|
1160 |
|
1161 |
//scroll to top
|
1162 |
if(isLoadMore == false){
|
@@ -1448,7 +1481,7 @@ function UEDynamicFilters(){
|
|
1448 |
jQuery.each(objElements,function(index, objElement){
|
1449 |
|
1450 |
if(isShow == true){
|
1451 |
-
|
1452 |
showAjaxLoader(objElement);
|
1453 |
}
|
1454 |
else
|
@@ -1503,10 +1536,17 @@ function UEDynamicFilters(){
|
|
1503 |
history.replaceState({}, null, urlReplace);
|
1504 |
}
|
1505 |
|
|
|
|
|
1506 |
//set the loaders
|
1507 |
|
1508 |
-
if(isLoadMore !== true && isFiltersInit !== true)
|
|
|
1509 |
showAjaxLoader(objGrid);
|
|
|
|
|
|
|
|
|
1510 |
|
1511 |
var objFiltersToReload = objFilters.filter(function(objFilter){
|
1512 |
|
@@ -1522,8 +1562,12 @@ function UEDynamicFilters(){
|
|
1522 |
|
1523 |
ajaxRequest(ajaxUrl,null,null, function(response){
|
1524 |
|
1525 |
-
if(isLoadMore !== true)
|
1526 |
hideAjaxLoader(objGrid);
|
|
|
|
|
|
|
|
|
1527 |
|
1528 |
showMultipleAjaxLoaders(objFilters, false);
|
1529 |
|
@@ -1962,6 +2006,8 @@ function UEDynamicFilters(){
|
|
1962 |
*/
|
1963 |
function init(){
|
1964 |
|
|
|
|
|
1965 |
var success = initGlobals();
|
1966 |
|
1967 |
if(success == false)
|
2 |
function UEDynamicFilters(){
|
3 |
|
4 |
var g_objFilters, g_objGrid, g_filtersData, g_urlBase;
|
5 |
+
var g_urlAjax, g_lastGridAjaxCall, g_cache = {}, g_objBody;
|
6 |
|
7 |
var g_types = {
|
8 |
PAGINATION:"pagination",
|
21 |
CLASS_INITING: "uc-filter-initing",
|
22 |
CLASS_REFRESH_SOON: "uc-ajax-refresh-soon",
|
23 |
EVENT_SET_HTML_ITEMS: "uc_ajax_sethtml",
|
24 |
+
EVENT_AJAX_REFRESHED: "uc_ajax_refreshed", //on grid
|
25 |
+
EVENT_AJAX_REFRESHED_BODY: "uc_ajax_refreshed_body" //on grid
|
26 |
};
|
27 |
|
28 |
var g_options = {
|
389 |
|
390 |
}
|
391 |
|
392 |
+
/**
|
393 |
+
* get grid empty message
|
394 |
+
*/
|
395 |
+
function getGridEmptyMessage(objGrid){
|
396 |
+
|
397 |
+
var gridID = objGrid.attr("id");
|
398 |
+
|
399 |
+
if(!gridID)
|
400 |
+
return(null);
|
401 |
+
|
402 |
+
var objEmptyMessage = jQuery("#"+gridID+"_empty_message");
|
403 |
+
|
404 |
+
if(objEmptyMessage.length == 0)
|
405 |
+
return(null);
|
406 |
+
|
407 |
+
return(objEmptyMessage);
|
408 |
+
}
|
409 |
+
|
410 |
+
|
411 |
function ________FILTERS_______________(){}
|
412 |
|
413 |
|
1020 |
* set html grid from ajax response
|
1021 |
*/
|
1022 |
function operateAjax_setHtmlGrid(response, objGrid, isLoadMore){
|
1023 |
+
|
1024 |
if(objGrid.length == 0)
|
1025 |
return(false);
|
1026 |
|
1052 |
|
1053 |
var isCustomRefresh = objGrid.data("custom-sethtml");
|
1054 |
|
1055 |
+
//show / hide empty message if available and empty response
|
1056 |
+
var objEmptyMessage = getGridEmptyMessage(objGrid);
|
1057 |
+
|
1058 |
+
if(objEmptyMessage){
|
1059 |
+
if(htmlItems == "")
|
1060 |
+
objEmptyMessage.show();
|
1061 |
+
else
|
1062 |
+
objEmptyMessage.hide();
|
1063 |
+
}
|
1064 |
+
|
1065 |
//if custom refresh - just save the new html in data
|
1066 |
if(isCustomRefresh == true){
|
1067 |
|
1187 |
operateAjax_setHtmlWidgets(response, objFilters);
|
1188 |
|
1189 |
objGrid.trigger(g_vars.EVENT_AJAX_REFRESHED);
|
1190 |
+
g_objBody.trigger(g_vars.EVENT_AJAX_REFRESHED_BODY, [objGrid]);
|
1191 |
+
|
1192 |
+
//trigger body as well
|
1193 |
|
1194 |
//scroll to top
|
1195 |
if(isLoadMore == false){
|
1481 |
jQuery.each(objElements,function(index, objElement){
|
1482 |
|
1483 |
if(isShow == true){
|
1484 |
+
|
1485 |
showAjaxLoader(objElement);
|
1486 |
}
|
1487 |
else
|
1536 |
history.replaceState({}, null, urlReplace);
|
1537 |
}
|
1538 |
|
1539 |
+
var objEmptyMessage = getGridEmptyMessage(objGrid);
|
1540 |
+
|
1541 |
//set the loaders
|
1542 |
|
1543 |
+
if(isLoadMore !== true && isFiltersInit !== true){
|
1544 |
+
|
1545 |
showAjaxLoader(objGrid);
|
1546 |
+
|
1547 |
+
if(objEmptyMessage)
|
1548 |
+
showAjaxLoader(objEmptyMessage);
|
1549 |
+
}
|
1550 |
|
1551 |
var objFiltersToReload = objFilters.filter(function(objFilter){
|
1552 |
|
1562 |
|
1563 |
ajaxRequest(ajaxUrl,null,null, function(response){
|
1564 |
|
1565 |
+
if(isLoadMore !== true){
|
1566 |
hideAjaxLoader(objGrid);
|
1567 |
+
|
1568 |
+
if(objEmptyMessage)
|
1569 |
+
hideAjaxLoader(objEmptyMessage);
|
1570 |
+
}
|
1571 |
|
1572 |
showMultipleAjaxLoaders(objFilters, false);
|
1573 |
|
2006 |
*/
|
2007 |
function init(){
|
2008 |
|
2009 |
+
g_objBody = jQuery("body");
|
2010 |
+
|
2011 |
var success = initGlobals();
|
2012 |
|
2013 |
if(success == false)
|
assets_libraries/remote/ue-remote-controls.js
CHANGED
@@ -415,7 +415,7 @@ this.onEvent = function(name, func){
|
|
415 |
g_vars.is_editor = isEditor;
|
416 |
|
417 |
g_objParent = objParent;
|
418 |
-
|
419 |
var connectType = getVal(options, "connect_type");
|
420 |
if(connectType == "events")
|
421 |
g_isTypeEvents = true;
|
@@ -1426,7 +1426,7 @@ function UERemoteWidgets(){
|
|
1426 |
g_vars.is_inited = initParent();
|
1427 |
|
1428 |
if(g_vars.is_inited == false){
|
1429 |
-
|
1430 |
g_objParent.on("uc-object-ready", func);
|
1431 |
|
1432 |
}
|
@@ -2017,7 +2017,7 @@ function UERemoteWidgets(){
|
|
2017 |
* on widget init
|
2018 |
*/
|
2019 |
this.onWidgetInit = function(widgetID, func, options){
|
2020 |
-
|
2021 |
try{
|
2022 |
|
2023 |
if(!g_vars.funcOnInit){
|
415 |
g_vars.is_editor = isEditor;
|
416 |
|
417 |
g_objParent = objParent;
|
418 |
+
|
419 |
var connectType = getVal(options, "connect_type");
|
420 |
if(connectType == "events")
|
421 |
g_isTypeEvents = true;
|
1426 |
g_vars.is_inited = initParent();
|
1427 |
|
1428 |
if(g_vars.is_inited == false){
|
1429 |
+
|
1430 |
g_objParent.on("uc-object-ready", func);
|
1431 |
|
1432 |
}
|
2017 |
* on widget init
|
2018 |
*/
|
2019 |
this.onWidgetInit = function(widgetID, func, options){
|
2020 |
+
|
2021 |
try{
|
2022 |
|
2023 |
if(!g_vars.funcOnInit){
|
inc_php/framework/functions.php
CHANGED
@@ -7,10 +7,11 @@
|
|
7 |
* */
|
8 |
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
9 |
|
10 |
-
|
11 |
|
12 |
if(!function_exists("dmp")){
|
13 |
function dmp($str){
|
|
|
14 |
echo "<div align='left' style='direction:ltr;'>";
|
15 |
echo "<pre>";
|
16 |
print_r($str);
|
7 |
* */
|
8 |
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
9 |
|
10 |
+
//---------------------------------------------------------------------------------------------------------------------
|
11 |
|
12 |
if(!function_exists("dmp")){
|
13 |
function dmp($str){
|
14 |
+
|
15 |
echo "<div align='left' style='direction:ltr;'>";
|
16 |
echo "<pre>";
|
17 |
print_r($str);
|
inc_php/framework/instagram/helper.class.php
CHANGED
@@ -31,6 +31,21 @@ class HelperInstaUC{
|
|
31 |
return($arrData);
|
32 |
}
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
/**
|
35 |
* redirect to general settings
|
36 |
*/
|
@@ -431,9 +446,7 @@ class HelperInstaUC{
|
|
431 |
|
432 |
$response = curl_exec($curl);
|
433 |
$arrInfo = curl_getinfo($curl);
|
434 |
-
|
435 |
-
curl_close($curl);
|
436 |
-
|
437 |
if($debug == true){
|
438 |
dmp($response);
|
439 |
dmp($arrInfo);
|
@@ -446,11 +459,21 @@ class HelperInstaUC{
|
|
446 |
case 400:
|
447 |
break;
|
448 |
default:
|
449 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
450 |
UniteFunctionsUC::throwError("request error: ".$error.", code: $code");
|
451 |
break;
|
452 |
}
|
453 |
-
|
|
|
454 |
|
455 |
//cut the header
|
456 |
$headerSize = UniteFunctionsUC::getVal($arrInfo, "header_size");
|
31 |
return($arrData);
|
32 |
}
|
33 |
|
34 |
+
/**
|
35 |
+
* return if access token exists in settings
|
36 |
+
*/
|
37 |
+
public static function isAccessTokenExists(){
|
38 |
+
|
39 |
+
$arrData = self::getInstagramSavedAccessData();
|
40 |
+
|
41 |
+
$token = UniteFunctionsUC::getVal($arrData, "access_token");
|
42 |
+
|
43 |
+
$isExists = !empty($token);
|
44 |
+
|
45 |
+
return($isExists);
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
/**
|
50 |
* redirect to general settings
|
51 |
*/
|
446 |
|
447 |
$response = curl_exec($curl);
|
448 |
$arrInfo = curl_getinfo($curl);
|
449 |
+
|
|
|
|
|
450 |
if($debug == true){
|
451 |
dmp($response);
|
452 |
dmp($arrInfo);
|
459 |
case 400:
|
460 |
break;
|
461 |
default:
|
462 |
+
|
463 |
+
$error = null;
|
464 |
+
|
465 |
+
if(!empty($curl))
|
466 |
+
$error = @curl_error($curl);
|
467 |
+
|
468 |
+
if(empty($error)){
|
469 |
+
$error = $response;
|
470 |
+
}
|
471 |
+
|
472 |
UniteFunctionsUC::throwError("request error: ".$error.", code: $code");
|
473 |
break;
|
474 |
}
|
475 |
+
|
476 |
+
curl_close($curl);
|
477 |
|
478 |
//cut the header
|
479 |
$headerSize = UniteFunctionsUC::getVal($arrInfo, "header_size");
|
inc_php/unitecreator_dialog_param.class.php
CHANGED
@@ -841,7 +841,8 @@ class UniteCreatorDialogParamWork{
|
|
841 |
$arrItems = array(
|
842 |
"template"=>__("Template Loop","unlimited-elements-for-elementor"),
|
843 |
"gallery"=>__("Gallery","unlimited-elements-for-elementor"),
|
844 |
-
"remote"=>__("Remote","unlimited-elements-for-elementor")
|
|
|
845 |
);
|
846 |
|
847 |
$htmlSelect = HelperHtmlUC::getHTMLSelect($arrItems,"template","name='use_for' class='unite-inputs-select uc-control' data-controlled-selector='.uc-listing-param-options'", true);
|
@@ -877,7 +878,7 @@ class UniteCreatorDialogParamWork{
|
|
877 |
|
878 |
<!-- Template -->
|
879 |
|
880 |
-
<div class="uc-listing-param-options" data-control="template,gallery">
|
881 |
<?php
|
882 |
$this->putCheckbox("enable_pagination", __("Add Pagination", "unlimited-elements-for-elementor"));
|
883 |
?>
|
841 |
$arrItems = array(
|
842 |
"template"=>__("Template Loop","unlimited-elements-for-elementor"),
|
843 |
"gallery"=>__("Gallery","unlimited-elements-for-elementor"),
|
844 |
+
"remote"=>__("Remote","unlimited-elements-for-elementor"),
|
845 |
+
"items"=>__("Items","unlimited-elements-for-elementor")
|
846 |
);
|
847 |
|
848 |
$htmlSelect = HelperHtmlUC::getHTMLSelect($arrItems,"template","name='use_for' class='unite-inputs-select uc-control' data-controlled-selector='.uc-listing-param-options'", true);
|
878 |
|
879 |
<!-- Template -->
|
880 |
|
881 |
+
<div class="uc-listing-param-options" data-control="template,gallery,items">
|
882 |
<?php
|
883 |
$this->putCheckbox("enable_pagination", __("Add Pagination", "unlimited-elements-for-elementor"));
|
884 |
?>
|
inc_php/unitecreator_filters_process.class.php
CHANGED
@@ -323,7 +323,6 @@ class UniteCreatorFiltersProcess{
|
|
323 |
if(!empty($offset))
|
324 |
$arrOutput["offset"] = $offset;
|
325 |
|
326 |
-
|
327 |
//num items
|
328 |
|
329 |
$numItems = UniteFunctionsUC::getVal($request, "uccount");
|
@@ -557,6 +556,7 @@ class UniteCreatorFiltersProcess{
|
|
557 |
$numItems = UniteFunctionsUC::getVal($arrFilters, "num_items");
|
558 |
$offset = UniteFunctionsUC::getVal($arrFilters, "offset");
|
559 |
|
|
|
560 |
if(!empty($page))
|
561 |
$args = $this->processRequestFilters_setPaging($args, $page, $numItems);
|
562 |
|
@@ -979,6 +979,8 @@ class UniteCreatorFiltersProcess{
|
|
979 |
if(self::$isFilesAdded == true)
|
980 |
return(false);
|
981 |
|
|
|
|
|
982 |
$urlFiltersJS = GlobalsUC::$url_assets_libraries."filters/ue_filters.js";
|
983 |
HelperUC::addScriptAbsoluteUrl($urlFiltersJS, "ue_filters");
|
984 |
|
323 |
if(!empty($offset))
|
324 |
$arrOutput["offset"] = $offset;
|
325 |
|
|
|
326 |
//num items
|
327 |
|
328 |
$numItems = UniteFunctionsUC::getVal($request, "uccount");
|
556 |
$numItems = UniteFunctionsUC::getVal($arrFilters, "num_items");
|
557 |
$offset = UniteFunctionsUC::getVal($arrFilters, "offset");
|
558 |
|
559 |
+
|
560 |
if(!empty($page))
|
561 |
$args = $this->processRequestFilters_setPaging($args, $page, $numItems);
|
562 |
|
979 |
if(self::$isFilesAdded == true)
|
980 |
return(false);
|
981 |
|
982 |
+
UniteProviderFunctionsUC::addAdminJQueryInclude();
|
983 |
+
|
984 |
$urlFiltersJS = GlobalsUC::$url_assets_libraries."filters/ue_filters.js";
|
985 |
HelperUC::addScriptAbsoluteUrl($urlFiltersJS, "ue_filters");
|
986 |
|
inc_php/unitecreator_helper.class.php
CHANGED
@@ -32,6 +32,22 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
32 |
|
33 |
public static function a____GENERAL____(){}
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
/**
|
36 |
* validate plugin startup functionality
|
37 |
* Enter description here ...
|
@@ -650,13 +666,17 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
650 |
$realpath = realpath($path);
|
651 |
if(!$realpath)
|
652 |
return($path);
|
653 |
-
|
654 |
$isDir = is_dir($realpath);
|
655 |
|
656 |
$len = strlen($realpath);
|
657 |
$realBase = realpath(GlobalsUC::$path_base);
|
658 |
-
|
659 |
-
|
|
|
|
|
|
|
|
|
660 |
//add dots
|
661 |
if($addDots == true && strlen($relativePath) != strlen($realpath))
|
662 |
$relativePath = "..".$relativePath;
|
@@ -665,7 +685,7 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
665 |
|
666 |
if($addDots == false)
|
667 |
$relativePath = ltrim($relativePath, "/");
|
668 |
-
|
669 |
//add slash to end
|
670 |
if($isDir == true)
|
671 |
$relativePath = UniteFunctionsUC::addPathEndingSlash($relativePath);
|
@@ -705,10 +725,11 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
705 |
* turn path to relative url
|
706 |
*/
|
707 |
public static function pathToRelativeUrl($path){
|
708 |
-
|
709 |
$path = self::pathToRelative($path, false);
|
710 |
-
$url = str_replace('\\', '/', $path);
|
711 |
|
|
|
|
|
712 |
//remove starting slash
|
713 |
$url = ltrim($url, '/');
|
714 |
|
@@ -726,6 +747,7 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
726 |
return("");
|
727 |
|
728 |
$url = self::pathToRelativeUrl($path);
|
|
|
729 |
$url = self::URLtoFull($url);
|
730 |
return($url);
|
731 |
}
|
32 |
|
33 |
public static function a____GENERAL____(){}
|
34 |
|
35 |
+
/**
|
36 |
+
* heck if debug by url
|
37 |
+
*/
|
38 |
+
public static function isDebug(){
|
39 |
+
|
40 |
+
$debug = UniteFunctionsUC::getGetVar("ucdebug","",UniteFunctionsUC::SANITIZE_KEY);
|
41 |
+
|
42 |
+
if(empty($debug))
|
43 |
+
return(false);
|
44 |
+
|
45 |
+
$debug = UniteFunctionsUC::strToBool($debug);
|
46 |
+
|
47 |
+
return($debug);
|
48 |
+
}
|
49 |
+
|
50 |
+
|
51 |
/**
|
52 |
* validate plugin startup functionality
|
53 |
* Enter description here ...
|
666 |
$realpath = realpath($path);
|
667 |
if(!$realpath)
|
668 |
return($path);
|
669 |
+
|
670 |
$isDir = is_dir($realpath);
|
671 |
|
672 |
$len = strlen($realpath);
|
673 |
$realBase = realpath(GlobalsUC::$path_base);
|
674 |
+
|
675 |
+
if($realBase != "/")
|
676 |
+
$relativePath = str_replace($realBase, "", $realpath);
|
677 |
+
else
|
678 |
+
$relativePath = $realpath;
|
679 |
+
|
680 |
//add dots
|
681 |
if($addDots == true && strlen($relativePath) != strlen($realpath))
|
682 |
$relativePath = "..".$relativePath;
|
685 |
|
686 |
if($addDots == false)
|
687 |
$relativePath = ltrim($relativePath, "/");
|
688 |
+
|
689 |
//add slash to end
|
690 |
if($isDir == true)
|
691 |
$relativePath = UniteFunctionsUC::addPathEndingSlash($relativePath);
|
725 |
* turn path to relative url
|
726 |
*/
|
727 |
public static function pathToRelativeUrl($path){
|
728 |
+
|
729 |
$path = self::pathToRelative($path, false);
|
|
|
730 |
|
731 |
+
$url = str_replace('\\', '/', $path);
|
732 |
+
|
733 |
//remove starting slash
|
734 |
$url = ltrim($url, '/');
|
735 |
|
747 |
return("");
|
748 |
|
749 |
$url = self::pathToRelativeUrl($path);
|
750 |
+
|
751 |
$url = self::URLtoFull($url);
|
752 |
return($url);
|
753 |
}
|
inc_php/unitecreator_template_engine.class.php
CHANGED
@@ -561,9 +561,9 @@ class UniteCreatorTemplateEngineWork{
|
|
561 |
/**
|
562 |
* get post author
|
563 |
*/
|
564 |
-
public function getPostAuthor($authorID){
|
565 |
-
|
566 |
-
$arrUserData = UniteFunctionsWPUC::getUserDataById($authorID);
|
567 |
|
568 |
return($arrUserData);
|
569 |
}
|
@@ -685,7 +685,7 @@ class UniteCreatorTemplateEngineWork{
|
|
685 |
|
686 |
if(function_exists("wc_price") == false)
|
687 |
return($price);
|
688 |
-
|
689 |
$newPrice = wc_price($price);
|
690 |
|
691 |
return($newPrice);
|
@@ -904,6 +904,18 @@ class UniteCreatorTemplateEngineWork{
|
|
904 |
HelperUC::$operations->putPostCustomFieldsDebug($postID);
|
905 |
|
906 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
907 |
default:
|
908 |
|
909 |
$type = UniteFunctionsUC::sanitizeAttr($type);
|
561 |
/**
|
562 |
* get post author
|
563 |
*/
|
564 |
+
public function getPostAuthor($authorID, $getMeta = false, $getAvatar = false){
|
565 |
+
|
566 |
+
$arrUserData = UniteFunctionsWPUC::getUserDataById($authorID, $getMeta, $getAvatar);
|
567 |
|
568 |
return($arrUserData);
|
569 |
}
|
685 |
|
686 |
if(function_exists("wc_price") == false)
|
687 |
return($price);
|
688 |
+
|
689 |
$newPrice = wc_price($price);
|
690 |
|
691 |
return($newPrice);
|
904 |
HelperUC::$operations->putPostCustomFieldsDebug($postID);
|
905 |
|
906 |
break;
|
907 |
+
case "put_post_content":
|
908 |
+
|
909 |
+
$content = HelperProviderCoreUC_EL::getPostContent($arg1, $arg2);
|
910 |
+
|
911 |
+
echo $content;
|
912 |
+
break;
|
913 |
+
case "get_num_comments":
|
914 |
+
|
915 |
+
$numComments = get_comments_number($arg1);
|
916 |
+
|
917 |
+
return($numComments);
|
918 |
+
break;
|
919 |
default:
|
920 |
|
921 |
$type = UniteFunctionsUC::sanitizeAttr($type);
|
includes.php
CHANGED
@@ -12,7 +12,7 @@ if(!defined('UNLIMITED_ELEMENTS_INC'))
|
|
12 |
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
13 |
|
14 |
if(!defined("UNLIMITED_ELEMENTS_VERSION"))
|
15 |
-
define("UNLIMITED_ELEMENTS_VERSION", "1.5.
|
16 |
|
17 |
$currentFile = __FILE__;
|
18 |
$currentFolder = dirname($currentFile);
|
12 |
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
13 |
|
14 |
if(!defined("UNLIMITED_ELEMENTS_VERSION"))
|
15 |
+
define("UNLIMITED_ELEMENTS_VERSION", "1.5.11");
|
16 |
|
17 |
$currentFile = __FILE__;
|
18 |
$currentFolder = dirname($currentFile);
|
provider/core/plugins/unlimited_elements/elementor/assets/uc_editor_admin.js
CHANGED
@@ -1397,22 +1397,25 @@ function UniteCreatorElementorEditorAdmin(){
|
|
1397 |
function loadBGWidget(bgType, objSettings, funResponse){
|
1398 |
|
1399 |
var settingsData = getBGSettingsData(bgType, objSettings);
|
1400 |
-
|
1401 |
var data = {
|
1402 |
addontype: "bg_addon",
|
1403 |
name: bgType,
|
1404 |
elementor_settings: settingsData
|
1405 |
};
|
1406 |
|
1407 |
-
ajaxRequest("get_addon_output_data", data,
|
|
|
|
|
|
|
1408 |
}
|
1409 |
|
1410 |
|
1411 |
/**
|
1412 |
* apply background to section
|
1413 |
*/
|
1414 |
-
function applyBackgroundToElement(objElement, response){
|
1415 |
-
|
1416 |
var objIframeWindow = jQuery("#elementor-preview-iframe");
|
1417 |
|
1418 |
if(objIframeWindow.length == 0)
|
@@ -1422,37 +1425,74 @@ function UniteCreatorElementorEditorAdmin(){
|
|
1422 |
|
1423 |
var arrIncludes = getVal(response, "includes");
|
1424 |
|
|
|
|
|
|
|
|
|
1425 |
putIncludes(frameWindow.contentWindow, arrIncludes, function(){
|
1426 |
|
1427 |
var contentHTML = getVal(response, "html");
|
1428 |
|
1429 |
-
var
|
1430 |
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1434 |
|
1435 |
-
objElement.
|
|
|
|
|
|
|
|
|
|
|
|
|
1436 |
|
1437 |
});
|
1438 |
|
1439 |
}
|
1440 |
|
|
|
1441 |
/**
|
1442 |
* check and load element background if needed
|
1443 |
*/
|
1444 |
function checkElementBackground(element, objSettings){
|
1445 |
|
1446 |
var backgroundType = getVal(objSettings, "uc_background_type");
|
1447 |
-
|
1448 |
-
if(!backgroundType)
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
|
|
|
|
|
|
1452 |
return(false);
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
|
|
1456 |
});
|
1457 |
|
1458 |
}
|
@@ -1516,6 +1556,7 @@ function UniteCreatorElementorEditorAdmin(){
|
|
1516 |
function initBackgrounds(){
|
1517 |
|
1518 |
elementor.hooks.addAction("panel/open_editor/section", onElementorSectionPanelChange);
|
|
|
1519 |
|
1520 |
//elementorFrontend.hooks.addAction( 'frontend/element_ready/global', onFrontElementReady);
|
1521 |
|
1397 |
function loadBGWidget(bgType, objSettings, funResponse){
|
1398 |
|
1399 |
var settingsData = getBGSettingsData(bgType, objSettings);
|
1400 |
+
|
1401 |
var data = {
|
1402 |
addontype: "bg_addon",
|
1403 |
name: bgType,
|
1404 |
elementor_settings: settingsData
|
1405 |
};
|
1406 |
|
1407 |
+
ajaxRequest("get_addon_output_data", data, function(response){
|
1408 |
+
funResponse(response, objSettings);
|
1409 |
+
});
|
1410 |
+
|
1411 |
}
|
1412 |
|
1413 |
|
1414 |
/**
|
1415 |
* apply background to section
|
1416 |
*/
|
1417 |
+
function applyBackgroundToElement(objElement, response, settingsData){
|
1418 |
+
|
1419 |
var objIframeWindow = jQuery("#elementor-preview-iframe");
|
1420 |
|
1421 |
if(objIframeWindow.length == 0)
|
1425 |
|
1426 |
var arrIncludes = getVal(response, "includes");
|
1427 |
|
1428 |
+
var location = getVal(settingsData, "uc_background_location");
|
1429 |
+
|
1430 |
+
var classFront = "uc-bg-front";
|
1431 |
+
|
1432 |
putIncludes(frameWindow.contentWindow, arrIncludes, function(){
|
1433 |
|
1434 |
var contentHTML = getVal(response, "html");
|
1435 |
|
1436 |
+
var objBackgroundOverlay = objElement.children(".unlimited-elements-background-overlay");
|
1437 |
|
1438 |
+
//replace
|
1439 |
+
if(objBackgroundOverlay.length == 1){
|
1440 |
+
|
1441 |
+
objBackgroundOverlay.html(contentHTML);
|
1442 |
+
|
1443 |
+
if(location == "front")
|
1444 |
+
objBackgroundOverlay.addClass(classFront);
|
1445 |
+
else
|
1446 |
+
objBackgroundOverlay.removeClass(classFront);
|
1447 |
+
|
1448 |
+
}else{
|
1449 |
+
//add
|
1450 |
+
|
1451 |
+
var addClass = "";
|
1452 |
+
if(location == "front")
|
1453 |
+
addClass = " "+classFront;
|
1454 |
+
|
1455 |
+
var html = "<div class='unlimited-elements-background-overlay"+addClass+"'>";
|
1456 |
+
|
1457 |
+
html += contentHTML;
|
1458 |
+
|
1459 |
+
html += "</div>";
|
1460 |
+
|
1461 |
+
objElement.prepend(html);
|
1462 |
+
}
|
1463 |
|
1464 |
+
var objVideoContainer = objElement.children(".elementor-background-video-container");
|
1465 |
+
if(objVideoContainer.length == 1){
|
1466 |
+
var objBackgroundOverlay = objElement.children(".unlimited-elements-background-overlay");
|
1467 |
+
|
1468 |
+
objBackgroundOverlay.insertAfter(objVideoContainer);
|
1469 |
+
}
|
1470 |
+
|
1471 |
|
1472 |
});
|
1473 |
|
1474 |
}
|
1475 |
|
1476 |
+
|
1477 |
/**
|
1478 |
* check and load element background if needed
|
1479 |
*/
|
1480 |
function checkElementBackground(element, objSettings){
|
1481 |
|
1482 |
var backgroundType = getVal(objSettings, "uc_background_type");
|
1483 |
+
|
1484 |
+
if(!backgroundType || backgroundType == "__none__"){
|
1485 |
+
|
1486 |
+
//remove bg if exists
|
1487 |
+
var objBackgroundOverlay = element.children(".unlimited-elements-background-overlay");
|
1488 |
+
if(objBackgroundOverlay.length)
|
1489 |
+
objBackgroundOverlay.remove();
|
1490 |
+
|
1491 |
return(false);
|
1492 |
+
}
|
1493 |
+
|
1494 |
+
loadBGWidget(backgroundType, objSettings, function(response, settingsData){
|
1495 |
+
applyBackgroundToElement(element, response, settingsData);
|
1496 |
});
|
1497 |
|
1498 |
}
|
1556 |
function initBackgrounds(){
|
1557 |
|
1558 |
elementor.hooks.addAction("panel/open_editor/section", onElementorSectionPanelChange);
|
1559 |
+
elementor.hooks.addAction("panel/open_editor/container", onElementorSectionPanelChange);
|
1560 |
|
1561 |
//elementorFrontend.hooks.addAction( 'frontend/element_ready/global', onFrontElementReady);
|
1562 |
|
provider/core/plugins/unlimited_elements/elementor/assets/uc_front_admin.css
CHANGED
@@ -7,4 +7,8 @@
|
|
7 |
width:100%;
|
8 |
height:100%;
|
9 |
z-index:0;
|
10 |
-
}
|
|
|
|
|
|
|
|
7 |
width:100%;
|
8 |
height:100%;
|
9 |
z-index:0;
|
10 |
+
}
|
11 |
+
|
12 |
+
.unlimited-elements-background-overlay.uc-bg-front{
|
13 |
+
z-index:999;
|
14 |
+
}
|
provider/core/plugins/unlimited_elements/elementor/elementor_integrate.class.php
CHANGED
@@ -701,6 +701,7 @@ class UniteCreatorElementorIntegrate{
|
|
701 |
|
702 |
$elementID = UniteFunctionsUC::getVal($rawData, "id");
|
703 |
|
|
|
704 |
try{
|
705 |
|
706 |
$objAddon = new UniteCreatorAddon();
|
@@ -727,7 +728,13 @@ class UniteCreatorElementorIntegrate{
|
|
727 |
|
728 |
//put includes
|
729 |
$this->outputBGIncludes($output);
|
730 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
731 |
$this->arrBGAddonsOutput[$elementID] = $output;
|
732 |
|
733 |
}catch(Exception $e){
|
@@ -767,7 +774,11 @@ class UniteCreatorElementorIntegrate{
|
|
767 |
width:100%;
|
768 |
height:100%;
|
769 |
z-index:0;
|
770 |
-
}
|
|
|
|
|
|
|
|
|
771 |
</style>
|
772 |
|
773 |
<?php
|
@@ -775,9 +786,14 @@ class UniteCreatorElementorIntegrate{
|
|
775 |
foreach($this->arrBGAddonsOutput as $elementID => $bgOutput){
|
776 |
|
777 |
$html = UniteFunctionsUC::getVal($bgOutput, "html");
|
|
|
|
|
|
|
|
|
|
|
778 |
|
779 |
?>
|
780 |
-
<div class="unlimited-elements-background-overlay" data-forid="<?php echo $elementID?>" style="display:none">
|
781 |
<?php echo $html?>
|
782 |
</div>
|
783 |
<?php
|
@@ -805,8 +821,14 @@ class UniteCreatorElementorIntegrate{
|
|
805 |
|
806 |
if(objTarget.length == 0)
|
807 |
return(true);
|
808 |
-
|
809 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
810 |
objBgElement.trigger("bg_attached");
|
811 |
objBgElement.addClass("uc-bg-attached");
|
812 |
|
@@ -844,7 +866,7 @@ class UniteCreatorElementorIntegrate{
|
|
844 |
$none = "__none__";
|
845 |
|
846 |
$arrBGItems = array();
|
847 |
-
$arrBGItems[$none] = __("[
|
848 |
|
849 |
foreach(self::$arrBGAddonsRecords as $addon){
|
850 |
|
@@ -893,7 +915,21 @@ class UniteCreatorElementorIntegrate{
|
|
893 |
|
894 |
$objWidget->registerBGControls();
|
895 |
}
|
896 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
897 |
$objControls->add_control(
|
898 |
'html_button_installbg',
|
899 |
array(
|
@@ -1206,9 +1242,9 @@ class UniteCreatorElementorIntegrate{
|
|
1206 |
|
1207 |
$adminStyleHandle = "unlimited_elements_editor_admin_css";
|
1208 |
|
1209 |
-
HelperUC::addScriptAbsoluteUrl(HelperProviderCoreUC_EL::$urlCore."elementor/assets/uc_editor_admin.js", "
|
1210 |
HelperUC::addStyleAbsoluteUrl(HelperProviderCoreUC_EL::$urlCore."elementor/assets/uc_editor_admin.css", $adminStyleHandle);
|
1211 |
-
|
1212 |
//select2 sortable
|
1213 |
HelperUC::addScriptAbsoluteUrl(GlobalsUC::$urlPlugin."js/select2/select2.sortable.js", "select2_sortable_js");
|
1214 |
HelperUC::addStyleAbsoluteUrl(GlobalsUC::$urlPlugin."js/select2/select2.sortable.css", "select2_sortable_css");
|
701 |
|
702 |
$elementID = UniteFunctionsUC::getVal($rawData, "id");
|
703 |
|
704 |
+
|
705 |
try{
|
706 |
|
707 |
$objAddon = new UniteCreatorAddon();
|
728 |
|
729 |
//put includes
|
730 |
$this->outputBGIncludes($output);
|
731 |
+
|
732 |
+
//add location too
|
733 |
+
$location = UniteFunctionsUC::getVal($settings, "uc_background_location");
|
734 |
+
|
735 |
+
if(is_array($output))
|
736 |
+
$output["location"] = $location;
|
737 |
+
|
738 |
$this->arrBGAddonsOutput[$elementID] = $output;
|
739 |
|
740 |
}catch(Exception $e){
|
774 |
width:100%;
|
775 |
height:100%;
|
776 |
z-index:0;
|
777 |
+
}
|
778 |
+
|
779 |
+
.unlimited-elements-background-overlay.uc-bg-front{
|
780 |
+
z-index:999;
|
781 |
+
}
|
782 |
</style>
|
783 |
|
784 |
<?php
|
786 |
foreach($this->arrBGAddonsOutput as $elementID => $bgOutput){
|
787 |
|
788 |
$html = UniteFunctionsUC::getVal($bgOutput, "html");
|
789 |
+
$location = UniteFunctionsUC::getVal($bgOutput, "location");
|
790 |
+
|
791 |
+
$addClass = "";
|
792 |
+
if($location === "front")
|
793 |
+
$addClass = " uc-bg-front";
|
794 |
|
795 |
?>
|
796 |
+
<div class="unlimited-elements-background-overlay<?php echo $addClass?>" data-forid="<?php echo $elementID?>" style="display:none">
|
797 |
<?php echo $html?>
|
798 |
</div>
|
799 |
<?php
|
821 |
|
822 |
if(objTarget.length == 0)
|
823 |
return(true);
|
824 |
+
|
825 |
+
var objVideoContainer = objTarget.children(".elementor-background-video-container");
|
826 |
+
|
827 |
+
if(objVideoContainer.length == 1)
|
828 |
+
objBgElement.detach().insertAfter(objVideoContainer).show();
|
829 |
+
else
|
830 |
+
objBgElement.detach().prependTo(objTarget).show();
|
831 |
+
|
832 |
objBgElement.trigger("bg_attached");
|
833 |
objBgElement.addClass("uc-bg-attached");
|
834 |
|
866 |
$none = "__none__";
|
867 |
|
868 |
$arrBGItems = array();
|
869 |
+
$arrBGItems[$none] = __("[No Background]", "unlimited-elements-for-elementor");
|
870 |
|
871 |
foreach(self::$arrBGAddonsRecords as $addon){
|
872 |
|
915 |
|
916 |
$objWidget->registerBGControls();
|
917 |
}
|
918 |
+
|
919 |
+
$objControls->add_control(
|
920 |
+
'uc_background_location',
|
921 |
+
array(
|
922 |
+
'label' => esc_html__( 'Background Location', 'plugin-name' ),
|
923 |
+
'type' => \Elementor\Controls_Manager::SELECT,
|
924 |
+
'default' => 'back',
|
925 |
+
'options' => array(
|
926 |
+
'back' => esc_html__( 'In Background', 'unlimited-elements-for-elementor' ),
|
927 |
+
'front' => esc_html__( 'In Foregroud', 'unlimited-elements-for-elementor' )
|
928 |
+
),
|
929 |
+
"condition" => array(self::CONTROL_BACKGROUND_TYPE."!" => "{$none}")
|
930 |
+
)
|
931 |
+
);
|
932 |
+
|
933 |
$objControls->add_control(
|
934 |
'html_button_installbg',
|
935 |
array(
|
1242 |
|
1243 |
$adminStyleHandle = "unlimited_elements_editor_admin_css";
|
1244 |
|
1245 |
+
HelperUC::addScriptAbsoluteUrl(HelperProviderCoreUC_EL::$urlCore."elementor/assets/uc_editor_admin.js", "unlimited_elements_editor_admin");
|
1246 |
HelperUC::addStyleAbsoluteUrl(HelperProviderCoreUC_EL::$urlCore."elementor/assets/uc_editor_admin.css", $adminStyleHandle);
|
1247 |
+
|
1248 |
//select2 sortable
|
1249 |
HelperUC::addScriptAbsoluteUrl(GlobalsUC::$urlPlugin."js/select2/select2.sortable.js", "select2_sortable_js");
|
1250 |
HelperUC::addStyleAbsoluteUrl(GlobalsUC::$urlPlugin."js/select2/select2.sortable.css", "select2_sortable_css");
|
provider/core/plugins/unlimited_elements/elementor/elementor_widget.class.php
CHANGED
@@ -483,7 +483,7 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
483 |
|
484 |
if($itemsType == "image")
|
485 |
return(false);
|
486 |
-
|
487 |
$itemsLabel = esc_html__("Items", "unlimited-elements-for-elementor");
|
488 |
|
489 |
$itemsTitle = $this->objAddon->getOption("items_section_title");
|
@@ -1034,7 +1034,7 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1034 |
$value = UniteFunctionsUC::getArrFirstValue($options);
|
1035 |
|
1036 |
}
|
1037 |
-
|
1038 |
$options = array_flip($options);
|
1039 |
$arrControl["options"] = $options;
|
1040 |
|
@@ -1058,9 +1058,17 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1058 |
$defaultValueTablet = UniteFunctionsUC::getVal($param, "default_value_tablet");
|
1059 |
$defaultValueMobile = UniteFunctionsUC::getVal($param, "default_value_mobile");
|
1060 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1061 |
$arrControl["uc_responsive"] = true;
|
1062 |
|
1063 |
-
$arrControl["desktop_default"] =
|
1064 |
$arrControl["tablet_default"] = $defaultValueTablet;
|
1065 |
$arrControl["mobile_default"] = $defaultValueMobile;
|
1066 |
}
|
@@ -1088,6 +1096,7 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1088 |
if(!empty($unit))
|
1089 |
$arrDefaultValue["unit"] = $unit;
|
1090 |
|
|
|
1091 |
if($isResponsive == true){
|
1092 |
|
1093 |
$arrTabletDefaults = array();
|
@@ -1113,6 +1122,7 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1113 |
$arrControl["default"] = $arrDefaultValue;
|
1114 |
}
|
1115 |
|
|
|
1116 |
//set selector
|
1117 |
$arrSelectors = array();
|
1118 |
$selector = UniteFunctionsUC::getVal($param, "selector");
|
@@ -1359,7 +1369,13 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1359 |
if($isResponsive == true){
|
1360 |
$arrControl["uc_responsive"] = true;
|
1361 |
|
|
|
|
|
1362 |
$defaultValueTablet = UniteFunctionsUC::getVal($param, "default_value_tablet");
|
|
|
|
|
|
|
|
|
1363 |
$unitTablet = $rangeUnit;
|
1364 |
|
1365 |
if(!empty($defaultValueTablet)){
|
@@ -1370,6 +1386,10 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1370 |
|
1371 |
|
1372 |
$defaultValueMobile = UniteFunctionsUC::getVal($param, "default_value_mobile");
|
|
|
|
|
|
|
|
|
1373 |
$unitMobile = $rangeUnit;
|
1374 |
|
1375 |
if(!empty($defaultValueMobile)){
|
@@ -1404,6 +1424,12 @@ class UniteCreatorElementorWidget extends Widget_Base {
|
|
1404 |
$defaultTablet = UniteFunctionsUC::getVal($param, "default_value_tablet",$defaultValue);
|
1405 |
$defaultMobile = UniteFunctionsUC::getVal($param, "default_value_mobile",$defaultValue);
|
1406 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1407 |
$arrControl["desktop_default"] = $defaultValue;
|
1408 |
$arrControl["tablet_default"] = $defaultTablet;
|
1409 |
$arrControl["mobile_default"] = $defaultMobile;
|
483 |
|
484 |
if($itemsType == "image")
|
485 |
return(false);
|
486 |
+
|
487 |
$itemsLabel = esc_html__("Items", "unlimited-elements-for-elementor");
|
488 |
|
489 |
$itemsTitle = $this->objAddon->getOption("items_section_title");
|
1034 |
$value = UniteFunctionsUC::getArrFirstValue($options);
|
1035 |
|
1036 |
}
|
1037 |
+
|
1038 |
$options = array_flip($options);
|
1039 |
$arrControl["options"] = $options;
|
1040 |
|
1058 |
$defaultValueTablet = UniteFunctionsUC::getVal($param, "default_value_tablet");
|
1059 |
$defaultValueMobile = UniteFunctionsUC::getVal($param, "default_value_mobile");
|
1060 |
|
1061 |
+
$defaultValueDesktop = UniteFunctionsUC::getVal($arrControl, "default");
|
1062 |
+
|
1063 |
+
if(array_key_exists($defaultValueTablet, $options) == false)
|
1064 |
+
$defaultValueTablet = $defaultValueDesktop;
|
1065 |
+
|
1066 |
+
if(array_key_exists($defaultValueMobile, $options) == false)
|
1067 |
+
$defaultValueMobile = $defaultValueDesktop;
|
1068 |
+
|
1069 |
$arrControl["uc_responsive"] = true;
|
1070 |
|
1071 |
+
$arrControl["desktop_default"] = $defaultValueDesktop;
|
1072 |
$arrControl["tablet_default"] = $defaultValueTablet;
|
1073 |
$arrControl["mobile_default"] = $defaultValueMobile;
|
1074 |
}
|
1096 |
if(!empty($unit))
|
1097 |
$arrDefaultValue["unit"] = $unit;
|
1098 |
|
1099 |
+
|
1100 |
if($isResponsive == true){
|
1101 |
|
1102 |
$arrTabletDefaults = array();
|
1122 |
$arrControl["default"] = $arrDefaultValue;
|
1123 |
}
|
1124 |
|
1125 |
+
|
1126 |
//set selector
|
1127 |
$arrSelectors = array();
|
1128 |
$selector = UniteFunctionsUC::getVal($param, "selector");
|
1369 |
if($isResponsive == true){
|
1370 |
$arrControl["uc_responsive"] = true;
|
1371 |
|
1372 |
+
$defaultValueDesktop = UniteFunctionsUC::getVal($param, "default_value");
|
1373 |
+
|
1374 |
$defaultValueTablet = UniteFunctionsUC::getVal($param, "default_value_tablet");
|
1375 |
+
|
1376 |
+
if(is_numeric($defaultValueTablet) == false)
|
1377 |
+
$defaultValueTablet = $defaultValueDesktop;
|
1378 |
+
|
1379 |
$unitTablet = $rangeUnit;
|
1380 |
|
1381 |
if(!empty($defaultValueTablet)){
|
1386 |
|
1387 |
|
1388 |
$defaultValueMobile = UniteFunctionsUC::getVal($param, "default_value_mobile");
|
1389 |
+
|
1390 |
+
if(is_numeric($defaultValueMobile) == false)
|
1391 |
+
$defaultValueMobile = $defaultValueDesktop;
|
1392 |
+
|
1393 |
$unitMobile = $rangeUnit;
|
1394 |
|
1395 |
if(!empty($defaultValueMobile)){
|
1424 |
$defaultTablet = UniteFunctionsUC::getVal($param, "default_value_tablet",$defaultValue);
|
1425 |
$defaultMobile = UniteFunctionsUC::getVal($param, "default_value_mobile",$defaultValue);
|
1426 |
|
1427 |
+
if(is_numeric($defaultTablet) == false)
|
1428 |
+
$defaultTablet = $defaultValue;
|
1429 |
+
|
1430 |
+
if(is_numeric($defaultMobile) == false)
|
1431 |
+
$defaultMobile = $defaultValue;
|
1432 |
+
|
1433 |
$arrControl["desktop_default"] = $defaultValue;
|
1434 |
$arrControl["tablet_default"] = $defaultTablet;
|
1435 |
$arrControl["mobile_default"] = $defaultMobile;
|
provider/core/plugins/unlimited_elements/helper_provider_core.class.php
CHANGED
@@ -9,7 +9,6 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
9 |
|
10 |
class HelperProviderCoreUC_EL{
|
11 |
|
12 |
-
|
13 |
public static $pathCore;
|
14 |
public static $urlCore;
|
15 |
public static $filepathGeneralSettings;
|
@@ -18,6 +17,7 @@ class HelperProviderCoreUC_EL{
|
|
18 |
public static $arrImages;
|
19 |
public static $arrGlobalColors;
|
20 |
private static $arrCacheElementorTemplate;
|
|
|
21 |
|
22 |
|
23 |
/**
|
@@ -137,6 +137,20 @@ class HelperProviderCoreUC_EL{
|
|
137 |
return($arrValues);
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
|
141 |
/**
|
142 |
* get general setting value
|
@@ -457,6 +471,51 @@ class HelperProviderCoreUC_EL{
|
|
457 |
return(null);
|
458 |
}
|
459 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
460 |
|
461 |
private static function ______LISTING________(){}
|
462 |
|
@@ -480,6 +539,8 @@ class HelperProviderCoreUC_EL{
|
|
480 |
return($title);
|
481 |
}
|
482 |
|
|
|
|
|
483 |
/**
|
484 |
* put elementor template
|
485 |
*/
|
@@ -507,12 +568,12 @@ class HelperProviderCoreUC_EL{
|
|
507 |
/**
|
508 |
* put elementor template
|
509 |
*/
|
510 |
-
public static function getElementorTemplate($templateID){
|
511 |
|
512 |
if(empty($templateID) || is_numeric($templateID) == false)
|
513 |
return("");
|
514 |
|
515 |
-
$output = \Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $templateID);
|
516 |
|
517 |
return($output);
|
518 |
}
|
@@ -521,7 +582,7 @@ class HelperProviderCoreUC_EL{
|
|
521 |
/**
|
522 |
* put the post listing template
|
523 |
*/
|
524 |
-
public static function putListingItemTemplate_post($post, $templateID, $widgetID, $listingType = "elementor"){
|
525 |
|
526 |
if(empty($widgetID))
|
527 |
return(false);
|
@@ -554,7 +615,8 @@ class HelperProviderCoreUC_EL{
|
|
554 |
if($listingType == "jet")
|
555 |
$htmlTemplate = self::getJetTemplateListingItem($templateID, $post);
|
556 |
else
|
557 |
-
$htmlTemplate = self::getElementorTemplate($templateID);
|
|
|
558 |
|
559 |
//add one more class
|
560 |
|
@@ -562,7 +624,7 @@ class HelperProviderCoreUC_EL{
|
|
562 |
$dest = "{$source} uc-post-$postID";
|
563 |
|
564 |
$htmlTemplate = str_replace($source, $dest, $htmlTemplate);
|
565 |
-
|
566 |
echo $htmlTemplate;
|
567 |
|
568 |
GlobalsUnlimitedElements::$renderingDynamicData = null;
|
@@ -688,6 +750,10 @@ class HelperProviderCoreUC_EL{
|
|
688 |
*/
|
689 |
public static function putListingItemTemplate($item, $templateID, $widgetID){
|
690 |
|
|
|
|
|
|
|
|
|
691 |
$listingType = "elementor";
|
692 |
|
693 |
//jet determine
|
@@ -709,7 +775,7 @@ class HelperProviderCoreUC_EL{
|
|
709 |
dmp("wrong listing type, can't output");
|
710 |
return(false);
|
711 |
}
|
712 |
-
|
713 |
|
714 |
if(empty($templateID)){
|
715 |
|
@@ -719,9 +785,13 @@ class HelperProviderCoreUC_EL{
|
|
719 |
return(false);
|
720 |
}
|
721 |
|
|
|
|
|
|
|
|
|
722 |
//template output
|
723 |
if($type == "post")
|
724 |
-
self::putListingItemTemplate_post($item, $templateID, $widgetID, $listingType);
|
725 |
else
|
726 |
echo "output term";
|
727 |
|
9 |
|
10 |
class HelperProviderCoreUC_EL{
|
11 |
|
|
|
12 |
public static $pathCore;
|
13 |
public static $urlCore;
|
14 |
public static $filepathGeneralSettings;
|
17 |
public static $arrImages;
|
18 |
public static $arrGlobalColors;
|
19 |
private static $arrCacheElementorTemplate;
|
20 |
+
private static $arrPostContentCache = array();
|
21 |
|
22 |
|
23 |
/**
|
137 |
return($arrValues);
|
138 |
}
|
139 |
|
140 |
+
/**
|
141 |
+
* check if instagram access token is saved
|
142 |
+
*/
|
143 |
+
public static function isInstagramSetUp(){
|
144 |
+
|
145 |
+
$settings = HelperProviderCoreUC_EL::getGeneralSettingsValues();
|
146 |
+
|
147 |
+
$token = UniteFunctionsUC::getVal($settings, "instagram_access_token");
|
148 |
+
|
149 |
+
$isExists = !empty($token);
|
150 |
+
|
151 |
+
return($isExists);
|
152 |
+
|
153 |
+
}
|
154 |
|
155 |
/**
|
156 |
* get general setting value
|
471 |
return(null);
|
472 |
}
|
473 |
|
474 |
+
/**
|
475 |
+
* put post content, or render with elementor
|
476 |
+
*/
|
477 |
+
public static function getPostContent($postID, $content=""){
|
478 |
+
|
479 |
+
if(empty($postID))
|
480 |
+
return(false);
|
481 |
+
|
482 |
+
if(is_numeric($postID) == false)
|
483 |
+
return($content);
|
484 |
+
|
485 |
+
//protection against infinate loop
|
486 |
+
|
487 |
+
if(isset(self::$arrPostContentCache[$postID]))
|
488 |
+
return(self::$arrPostContentCache[$postID]);
|
489 |
+
|
490 |
+
$elementorTemplateType = get_post_meta($postID,"_elementor_template_type",true);
|
491 |
+
|
492 |
+
//not elementor - regular content
|
493 |
+
if(empty($elementorTemplateType)){
|
494 |
+
|
495 |
+
if(!empty($content)){
|
496 |
+
|
497 |
+
self::$arrPostContentCache[$postID] = $content;
|
498 |
+
return($content);
|
499 |
+
}
|
500 |
+
|
501 |
+
$post = get_post($postID);
|
502 |
+
$content = UniteFunctionsWPUC::getPostContent($post);
|
503 |
+
|
504 |
+
self::$arrPostContentCache[$postID] = $content;
|
505 |
+
|
506 |
+
return($content);
|
507 |
+
}
|
508 |
+
|
509 |
+
//elementor content
|
510 |
+
|
511 |
+
$content = self::getElementorTemplate($postID);
|
512 |
+
|
513 |
+
self::$arrPostContentCache[$postID] = $content;
|
514 |
+
|
515 |
+
return($content);
|
516 |
+
}
|
517 |
+
|
518 |
+
|
519 |
|
520 |
private static function ______LISTING________(){}
|
521 |
|
539 |
return($title);
|
540 |
}
|
541 |
|
542 |
+
|
543 |
+
|
544 |
/**
|
545 |
* put elementor template
|
546 |
*/
|
568 |
/**
|
569 |
* put elementor template
|
570 |
*/
|
571 |
+
public static function getElementorTemplate($templateID, $withCss = false){
|
572 |
|
573 |
if(empty($templateID) || is_numeric($templateID) == false)
|
574 |
return("");
|
575 |
|
576 |
+
$output = \Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $templateID, $withCss);
|
577 |
|
578 |
return($output);
|
579 |
}
|
582 |
/**
|
583 |
* put the post listing template
|
584 |
*/
|
585 |
+
public static function putListingItemTemplate_post($post, $templateID, $widgetID, $listingType = "elementor", $withCss = false){
|
586 |
|
587 |
if(empty($widgetID))
|
588 |
return(false);
|
615 |
if($listingType == "jet")
|
616 |
$htmlTemplate = self::getJetTemplateListingItem($templateID, $post);
|
617 |
else
|
618 |
+
$htmlTemplate = self::getElementorTemplate($templateID, $withCss);
|
619 |
+
|
620 |
|
621 |
//add one more class
|
622 |
|
624 |
$dest = "{$source} uc-post-$postID";
|
625 |
|
626 |
$htmlTemplate = str_replace($source, $dest, $htmlTemplate);
|
627 |
+
|
628 |
echo $htmlTemplate;
|
629 |
|
630 |
GlobalsUnlimitedElements::$renderingDynamicData = null;
|
750 |
*/
|
751 |
public static function putListingItemTemplate($item, $templateID, $widgetID){
|
752 |
|
753 |
+
$objFilters = new UniteCreatorFiltersProcess();
|
754 |
+
$isFrontAjax = $objFilters->isFrontAjaxRequest();
|
755 |
+
|
756 |
+
|
757 |
$listingType = "elementor";
|
758 |
|
759 |
//jet determine
|
775 |
dmp("wrong listing type, can't output");
|
776 |
return(false);
|
777 |
}
|
778 |
+
|
779 |
|
780 |
if(empty($templateID)){
|
781 |
|
785 |
return(false);
|
786 |
}
|
787 |
|
788 |
+
$withCss = false;
|
789 |
+
if($isFrontAjax == true)
|
790 |
+
$withCss = true;
|
791 |
+
|
792 |
//template output
|
793 |
if($type == "post")
|
794 |
+
self::putListingItemTemplate_post($item, $templateID, $widgetID, $listingType, $withCss);
|
795 |
else
|
796 |
echo "output term";
|
797 |
|
provider/functions_wordpress.class.php
CHANGED
@@ -1947,8 +1947,11 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
1947 |
|
1948 |
if(empty($post))
|
1949 |
return("");
|
1950 |
-
|
1951 |
-
|
|
|
|
|
|
|
1952 |
|
1953 |
$isEditMode = HelperUC::isElementorEditMode();
|
1954 |
if($isEditMode == false)
|
@@ -1959,6 +1962,7 @@ defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
|
|
1959 |
if(GlobalsProviderUC::$disablePostContentFiltering !== true)
|
1960 |
$content = apply_filters("widget_text_content", $content);
|
1961 |
|
|
|
1962 |
return($content);
|
1963 |
}
|
1964 |
|
1947 |
|
1948 |
if(empty($post))
|
1949 |
return("");
|
1950 |
+
|
1951 |
+
//UniteFunctionsUC::showTrace();
|
1952 |
+
//dmp($post);
|
1953 |
+
|
1954 |
+
$postID = $post->ID;
|
1955 |
|
1956 |
$isEditMode = HelperUC::isElementorEditMode();
|
1957 |
if($isEditMode == false)
|
1962 |
if(GlobalsProviderUC::$disablePostContentFiltering !== true)
|
1963 |
$content = apply_filters("widget_text_content", $content);
|
1964 |
|
1965 |
+
|
1966 |
return($content);
|
1967 |
}
|
1968 |
|
provider/provider_operations.class.php
CHANGED
@@ -130,6 +130,7 @@ class ProviderOperationsUC extends UCOperations{
|
|
130 |
$query = array();
|
131 |
$query["number"] = $limit;
|
132 |
$query["search"] = $search;
|
|
|
133 |
|
134 |
if(!empty($taxonomy))
|
135 |
$query["taxonomy"] = $taxonomy;
|
@@ -145,14 +146,16 @@ class ProviderOperationsUC extends UCOperations{
|
|
145 |
if(empty($response))
|
146 |
return(null);
|
147 |
|
|
|
148 |
$arrResult = array();
|
149 |
foreach($response as $term){
|
150 |
|
151 |
$termID = $term->term_id;
|
152 |
$name = $term->name;
|
153 |
$taxonomy = $term->taxonomy;
|
|
|
154 |
|
155 |
-
$title = $name."
|
156 |
|
157 |
$arr = array();
|
158 |
$arr["id"] = $termID;
|
130 |
$query = array();
|
131 |
$query["number"] = $limit;
|
132 |
$query["search"] = $search;
|
133 |
+
$query["hide_empty"] = false;
|
134 |
|
135 |
if(!empty($taxonomy))
|
136 |
$query["taxonomy"] = $taxonomy;
|
146 |
if(empty($response))
|
147 |
return(null);
|
148 |
|
149 |
+
|
150 |
$arrResult = array();
|
151 |
foreach($response as $term){
|
152 |
|
153 |
$termID = $term->term_id;
|
154 |
$name = $term->name;
|
155 |
$taxonomy = $term->taxonomy;
|
156 |
+
$count = $term->count;
|
157 |
|
158 |
+
$title = $name." ({$count} items)";
|
159 |
|
160 |
$arr = array();
|
161 |
$arr["id"] = $termID;
|
provider/provider_params_processor.class.php
CHANGED
@@ -692,6 +692,9 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
692 |
|
693 |
try{
|
694 |
|
|
|
|
|
|
|
695 |
$arrPost = (array)$post;
|
696 |
$arrData = array();
|
697 |
|
@@ -793,8 +796,8 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
793 |
}
|
794 |
|
795 |
}
|
796 |
-
|
797 |
-
|
798 |
}catch(Exception $e){
|
799 |
|
800 |
$message = $e->getMessage();
|
@@ -850,11 +853,19 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
850 |
/**
|
851 |
* get pagination args from the query
|
852 |
*/
|
853 |
-
private function getPostListData_getPostGetFilters_pagination($args, $value, $name, $data){
|
854 |
|
|
|
|
|
855 |
//check the single page pagination
|
856 |
$paginationType = UniteFunctionsUC::getVal($value, $name."_pagination_type");
|
857 |
|
|
|
|
|
|
|
|
|
|
|
|
|
858 |
if(empty($paginationType))
|
859 |
return($args);
|
860 |
|
@@ -1096,6 +1107,10 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
1096 |
$isRelatedPosts = $source == "related";
|
1097 |
$relatePostsType = "";
|
1098 |
|
|
|
|
|
|
|
|
|
1099 |
if(is_single() == false)
|
1100 |
$isRelatedPosts = false;
|
1101 |
|
@@ -1315,7 +1330,8 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
1315 |
|
1316 |
//run custom query if available
|
1317 |
$args = UniteFunctionsWPUC::getPostsArgs($filters);
|
1318 |
-
|
|
|
1319 |
//exclude by authors
|
1320 |
|
1321 |
if($excludeByAuthors == true){
|
@@ -1514,7 +1530,12 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
1514 |
|
1515 |
if(is_array($parent) && count($parent) == 1)
|
1516 |
$parent = $parent[0];
|
1517 |
-
|
|
|
|
|
|
|
|
|
|
|
1518 |
if(is_array($parent))
|
1519 |
$args["post_parent__in"] = $parent;
|
1520 |
else
|
@@ -1821,7 +1842,7 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
1821 |
}
|
1822 |
}
|
1823 |
|
1824 |
-
$args = $this->getPostListData_getPostGetFilters_pagination($args, $value, $name, $data);
|
1825 |
|
1826 |
$args = $this->getPostListData_getCustomQueryFilters($args, $value, $name, $data);
|
1827 |
|
@@ -1884,6 +1905,34 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
1884 |
if(!$arrPosts)
|
1885 |
$arrPosts = array();
|
1886 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1887 |
//sort sticky posts
|
1888 |
if($getOnlySticky == true && !empty($arrStickyPosts)){
|
1889 |
|
@@ -2103,7 +2152,7 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
2103 |
$this->saveLastQueryAndPage($query, GlobalsProviderUC::QUERY_TYPE_CURRENT);
|
2104 |
|
2105 |
$arrPosts = $query->posts;
|
2106 |
-
|
2107 |
if(empty($arrPosts))
|
2108 |
$arrPosts = array();
|
2109 |
|
@@ -2211,7 +2260,6 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
2211 |
|
2212 |
}
|
2213 |
|
2214 |
-
|
2215 |
$arrPosts = $query->posts;
|
2216 |
|
2217 |
if(empty($arrPosts))
|
@@ -2247,9 +2295,15 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
2247 |
HelperUC::addDebug("getPostList param", $param);
|
2248 |
|
2249 |
$source = UniteFunctionsUC::getVal($value, "{$name}_source");
|
2250 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2251 |
$arrPosts = array();
|
2252 |
-
|
2253 |
switch($source){
|
2254 |
case "manual":
|
2255 |
|
@@ -2259,10 +2313,10 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
2259 |
case "current":
|
2260 |
|
2261 |
$arrPosts = $this->getPostListData_currentPosts($value, $name, $data);
|
2262 |
-
|
2263 |
break;
|
2264 |
default: //custom
|
2265 |
-
|
2266 |
$arrPosts = $this->getPostListData_custom($value, $name, $processType, $param, $data);
|
2267 |
|
2268 |
$filters = array();
|
@@ -2302,14 +2356,9 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
2302 |
|
2303 |
//prepare listing output. no items prepare for the listing
|
2304 |
|
2305 |
-
$useForListing = UniteFunctionsUC::getVal($param, "use_for_listing");
|
2306 |
-
$useForListing = UniteFunctionsUC::strToBool($useForListing);
|
2307 |
-
|
2308 |
$objFilters = new UniteCreatorFiltersProcess();
|
2309 |
|
2310 |
if($useForListing == true){
|
2311 |
-
|
2312 |
-
$nameListing = UniteFunctionsUC::getVal($param, "name_listing");
|
2313 |
|
2314 |
//add filterable variables - dynamic
|
2315 |
$data = $objFilters->addWidgetFilterableVarsFromData($data, $value, $nameListing);
|
@@ -2321,12 +2370,15 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
2321 |
//filters additions - regular
|
2322 |
|
2323 |
$data = $objFilters->addWidgetFilterableVariables($data, $this->addon);
|
2324 |
-
|
2325 |
}
|
2326 |
-
|
2327 |
$arrData = array();
|
2328 |
foreach($arrPosts as $post){
|
2329 |
|
|
|
|
|
|
|
|
|
2330 |
$arrData[] = $this->getPostDataByObj($post, $arrPostAdditions, $arrImageSizes);
|
2331 |
}
|
2332 |
|
@@ -3087,7 +3139,7 @@ class UniteCreatorParamsProcessor extends UniteCreatorParamsProcessorWork{
|
|
3087 |
* get listing data
|
3088 |
*/
|
3089 |
private function getListingData($value, $name, $processType, $param, $data){
|
3090 |
-
|
3091 |
if($processType != self::PROCESS_TYPE_OUTPUT && $processType != self::PROCESS_TYPE_OUTPUT_BACK)
|
3092 |
return($data);
|
3093 |
|
692 |
|
693 |
try{
|
694 |
|
695 |
+
if(is_numeric($post))
|
696 |
+
$post = get_post($post);
|
697 |
+
|
698 |
$arrPost = (array)$post;
|
699 |
$arrData = array();
|
700 |
|
796 |
}
|
797 |
|
798 |
}
|
799 |
+
|
800 |
+
|
801 |
}catch(Exception $e){
|
802 |
|
803 |
$message = $e->getMessage();
|
853 |
/**
|
854 |
* get pagination args from the query
|
855 |
*/
|
856 |
+
private function getPostListData_getPostGetFilters_pagination($args, $value, $name, $data, $param){
|
857 |
|
858 |
+
$nameListing = UniteFunctionsUC::getVal($param, "name_listing");
|
859 |
+
|
860 |
//check the single page pagination
|
861 |
$paginationType = UniteFunctionsUC::getVal($value, $name."_pagination_type");
|
862 |
|
863 |
+
//get the type in case of listing
|
864 |
+
if(empty($paginationType) && !empty($nameListing)){
|
865 |
+
$name = $nameListing;
|
866 |
+
$paginationType = UniteFunctionsUC::getVal($value, $name."_pagination_type");
|
867 |
+
}
|
868 |
+
|
869 |
if(empty($paginationType))
|
870 |
return($args);
|
871 |
|
1107 |
$isRelatedPosts = $source == "related";
|
1108 |
$relatePostsType = "";
|
1109 |
|
1110 |
+
$addParentType = null;
|
1111 |
+
$addParentIDs = null;
|
1112 |
+
|
1113 |
+
|
1114 |
if(is_single() == false)
|
1115 |
$isRelatedPosts = false;
|
1116 |
|
1330 |
|
1331 |
//run custom query if available
|
1332 |
$args = UniteFunctionsWPUC::getPostsArgs($filters);
|
1333 |
+
|
1334 |
+
|
1335 |
//exclude by authors
|
1336 |
|
1337 |
if($excludeByAuthors == true){
|
1530 |
|
1531 |
if(is_array($parent) && count($parent) == 1)
|
1532 |
$parent = $parent[0];
|
1533 |
+
|
1534 |
+
$addParentType = UniteFunctionsUC::getVal($value, "{$name}_includeby_parent_addparent");
|
1535 |
+
|
1536 |
+
if($addParentType == "start" || $addParentType == "end")
|
1537 |
+
$addParentIDs = $parent;
|
1538 |
+
|
1539 |
if(is_array($parent))
|
1540 |
$args["post_parent__in"] = $parent;
|
1541 |
else
|
1842 |
}
|
1843 |
}
|
1844 |
|
1845 |
+
$args = $this->getPostListData_getPostGetFilters_pagination($args, $value, $name, $data, $param);
|
1846 |
|
1847 |
$args = $this->getPostListData_getCustomQueryFilters($args, $value, $name, $data);
|
1848 |
|
1905 |
if(!$arrPosts)
|
1906 |
$arrPosts = array();
|
1907 |
|
1908 |
+
//add parent posts
|
1909 |
+
|
1910 |
+
if(!empty($addParentType) && !empty($addParentIDs)){
|
1911 |
+
|
1912 |
+
if(is_array($addParentIDs) == false)
|
1913 |
+
$addParentIDs = array($addParentIDs);
|
1914 |
+
|
1915 |
+
$argsParents = array();
|
1916 |
+
$argsParents["post_type"] = $postType;
|
1917 |
+
$argsParents["post__in"] = $addParentIDs;
|
1918 |
+
|
1919 |
+
$arrParents = get_posts($argsParents);
|
1920 |
+
|
1921 |
+
if(!empty($arrParents)){
|
1922 |
+
|
1923 |
+
if($addParentType == "end")
|
1924 |
+
$arrPosts = array_merge($arrPosts, $arrParents);
|
1925 |
+
else
|
1926 |
+
$arrPosts = array_merge($arrParents, $arrPosts);
|
1927 |
+
|
1928 |
+
}
|
1929 |
+
|
1930 |
+
if($showDebugQuery == "true")
|
1931 |
+
dmp("adding parent post to ".$addParentType);
|
1932 |
+
|
1933 |
+
}
|
1934 |
+
|
1935 |
+
|
1936 |
//sort sticky posts
|
1937 |
if($getOnlySticky == true && !empty($arrStickyPosts)){
|
1938 |
|
2152 |
$this->saveLastQueryAndPage($query, GlobalsProviderUC::QUERY_TYPE_CURRENT);
|
2153 |
|
2154 |
$arrPosts = $query->posts;
|
2155 |
+
|
2156 |
if(empty($arrPosts))
|
2157 |
$arrPosts = array();
|
2158 |
|
2260 |
|
2261 |
}
|
2262 |
|
|
|
2263 |
$arrPosts = $query->posts;
|
2264 |
|
2265 |
if(empty($arrPosts))
|
2295 |
HelperUC::addDebug("getPostList param", $param);
|
2296 |
|
2297 |
$source = UniteFunctionsUC::getVal($value, "{$name}_source");
|
2298 |
+
|
2299 |
+
$useForListing = UniteFunctionsUC::getVal($param, "use_for_listing");
|
2300 |
+
$useForListing = UniteFunctionsUC::strToBool($useForListing);
|
2301 |
+
|
2302 |
+
$nameListing = UniteFunctionsUC::getVal($param, "name_listing");
|
2303 |
+
|
2304 |
+
|
2305 |
$arrPosts = array();
|
2306 |
+
|
2307 |
switch($source){
|
2308 |
case "manual":
|
2309 |
|
2313 |
case "current":
|
2314 |
|
2315 |
$arrPosts = $this->getPostListData_currentPosts($value, $name, $data);
|
2316 |
+
|
2317 |
break;
|
2318 |
default: //custom
|
2319 |
+
|
2320 |
$arrPosts = $this->getPostListData_custom($value, $name, $processType, $param, $data);
|
2321 |
|
2322 |
$filters = array();
|
2356 |
|
2357 |
//prepare listing output. no items prepare for the listing
|
2358 |
|
|
|
|
|
|
|
2359 |
$objFilters = new UniteCreatorFiltersProcess();
|
2360 |
|
2361 |
if($useForListing == true){
|
|
|
|
|
2362 |
|
2363 |
//add filterable variables - dynamic
|
2364 |
$data = $objFilters->addWidgetFilterableVarsFromData($data, $value, $nameListing);
|
2370 |
//filters additions - regular
|
2371 |
|
2372 |
$data = $objFilters->addWidgetFilterableVariables($data, $this->addon);
|
|
|
2373 |
}
|
2374 |
+
|
2375 |
$arrData = array();
|
2376 |
foreach($arrPosts as $post){
|
2377 |
|
2378 |
+
//protection in case that post is id
|
2379 |
+
if(is_numeric($post))
|
2380 |
+
$post = get_post($post);
|
2381 |
+
|
2382 |
$arrData[] = $this->getPostDataByObj($post, $arrPostAdditions, $arrImageSizes);
|
2383 |
}
|
2384 |
|
3139 |
* get listing data
|
3140 |
*/
|
3141 |
private function getListingData($value, $name, $processType, $param, $data){
|
3142 |
+
|
3143 |
if($processType != self::PROCESS_TYPE_OUTPUT && $processType != self::PROCESS_TYPE_OUTPUT_BACK)
|
3144 |
return($data);
|
3145 |
|
provider/provider_settings.class.php
CHANGED
@@ -1332,6 +1332,23 @@ class UniteCreatorSettings extends UniteCreatorSettingsWork{
|
|
1332 |
|
1333 |
$this->addPostIDSelect($name."_includeby_parent", sprintf(__("Select %s Parents"), $textPosts), $arrConditionIncludeParents, $isForWooProducts);
|
1334 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1335 |
//-------- include by recently viewed --------
|
1336 |
|
1337 |
$params = array();
|
@@ -2365,7 +2382,44 @@ class UniteCreatorSettings extends UniteCreatorSettingsWork{
|
|
2365 |
|
2366 |
}
|
2367 |
|
2368 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2369 |
|
2370 |
|
2371 |
/**
|
@@ -2380,8 +2434,16 @@ class UniteCreatorSettings extends UniteCreatorSettingsWork{
|
|
2380 |
$this->addRemoteSettings($name, $value, $title, $param);
|
2381 |
return(false);
|
2382 |
}
|
2383 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2384 |
$isForGallery = ($useFor == "gallery");
|
|
|
2385 |
$isEnableVideoItems = UniteFunctionsUC::getVal($param, "gallery_enable_video");
|
2386 |
$isEnableVideoItems = UniteFunctionsUC::strToBool($isEnableVideoItems);
|
2387 |
|
1332 |
|
1333 |
$this->addPostIDSelect($name."_includeby_parent", sprintf(__("Select %s Parents"), $textPosts), $arrConditionIncludeParents, $isForWooProducts);
|
1334 |
|
1335 |
+
//-------- include by post parent - add the parent page--------
|
1336 |
+
|
1337 |
+
$params = array();
|
1338 |
+
$params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN;
|
1339 |
+
$params["elementor_condition"] = $arrConditionIncludeParents;
|
1340 |
+
|
1341 |
+
$arrItems = array(
|
1342 |
+
"no"=>__("No","unlimited-elements-for-elementor"),
|
1343 |
+
"start"=>__("To Beginning","unlimited-elements-for-elementor"),
|
1344 |
+
"end"=>__("To End","unlimited-elements-for-elementor")
|
1345 |
+
);
|
1346 |
+
|
1347 |
+
$arrItems = array_flip($arrItems);
|
1348 |
+
|
1349 |
+
$this->addSelect($name."_includeby_parent_addparent", $arrItems, esc_html__("Add The Parent As Well", "unlimited-elements-for-elementor"), "no", $params);
|
1350 |
+
|
1351 |
+
|
1352 |
//-------- include by recently viewed --------
|
1353 |
|
1354 |
$params = array();
|
2382 |
|
2383 |
}
|
2384 |
|
2385 |
+
/**
|
2386 |
+
* add items multisource
|
2387 |
+
*/
|
2388 |
+
protected function addItemsMultisourceSettings($name, $value, $title, $param){
|
2389 |
+
|
2390 |
+
//------ items source ------
|
2391 |
+
|
2392 |
+
$arrSource = array();
|
2393 |
+
|
2394 |
+
$arrSource["items"] = __("Items", "unlimited-elements-for-elementor");
|
2395 |
+
$arrSource["posts"] = __("Posts", "unlimited-elements-for-elementor");
|
2396 |
+
|
2397 |
+
$isWooActive = UniteCreatorWooIntegrate::isWooActive();
|
2398 |
+
if($isWooActive == true)
|
2399 |
+
$arrSource["products"] = __("Products", "unlimited-elements-for-elementor");
|
2400 |
+
|
2401 |
+
$arrSource["terms"] = __("Terms", "unlimited-elements-for-elementor");
|
2402 |
+
|
2403 |
+
$isAcfExists = UniteCreatorAcfIntegrate::isAcfActive();
|
2404 |
+
|
2405 |
+
if($isAcfExists == true)
|
2406 |
+
$arrSource["acf_repeater"] = __("ACF Repeater", "unlimited-elements-for-elementor");
|
2407 |
+
|
2408 |
+
$hasInstagram = HelperProviderCoreUC_EL::isInstagramSetUp();
|
2409 |
+
|
2410 |
+
if($hasInstagram)
|
2411 |
+
$arrSource["instagram"] = __("Instagram", "unlimited-elements-for-elementor");
|
2412 |
+
|
2413 |
+
|
2414 |
+
$arrSource = array_flip($arrSource);
|
2415 |
+
|
2416 |
+
$params = array();
|
2417 |
+
$params["origtype"] = UniteCreatorDialogParam::PARAM_DROPDOWN;
|
2418 |
+
|
2419 |
+
$this->addSelect($name."_source", $arrSource, __("Items Source", "unlimited-elements-for-elementor"), "items", $params);
|
2420 |
+
|
2421 |
+
|
2422 |
+
}
|
2423 |
|
2424 |
|
2425 |
/**
|
2434 |
$this->addRemoteSettings($name, $value, $title, $param);
|
2435 |
return(false);
|
2436 |
}
|
2437 |
+
|
2438 |
+
if($useFor == "items"){
|
2439 |
+
|
2440 |
+
$this->addItemsMultisourceSettings($name, $value, $title, $param);
|
2441 |
+
|
2442 |
+
return(false);
|
2443 |
+
}
|
2444 |
+
|
2445 |
$isForGallery = ($useFor == "gallery");
|
2446 |
+
|
2447 |
$isEnableVideoItems = UniteFunctionsUC::getVal($param, "gallery_enable_video");
|
2448 |
$isEnableVideoItems = UniteFunctionsUC::strToBool($isEnableVideoItems);
|
2449 |
|
provider/woocommerce_integrate.class.php
CHANGED
@@ -21,6 +21,7 @@ class UniteCreatorWooIntegrate{
|
|
21 |
private $urlCart;
|
22 |
private $urlSite;
|
23 |
private $urlCurrentPage;
|
|
|
24 |
|
25 |
private $isInited = false;
|
26 |
|
@@ -79,6 +80,7 @@ class UniteCreatorWooIntegrate{
|
|
79 |
return(false);
|
80 |
|
81 |
//init
|
|
|
82 |
$this->currency = get_woocommerce_currency();
|
83 |
$this->currencySymbol = get_woocommerce_currency_symbol($this->currency);
|
84 |
$this->urlCheckout = wc_get_checkout_url();
|
@@ -202,7 +204,7 @@ class UniteCreatorWooIntegrate{
|
|
202 |
/**
|
203 |
* add from/to prices to variable product
|
204 |
*/
|
205 |
-
private function addPricesFromTo($arrProduct, $arrPrices){
|
206 |
|
207 |
if(empty($arrPrices))
|
208 |
return($arrProduct);
|
@@ -224,6 +226,9 @@ class UniteCreatorWooIntegrate{
|
|
224 |
$from = (float)$from;
|
225 |
$to = (float)$to;
|
226 |
|
|
|
|
|
|
|
227 |
$arrProduct["woo_".$key."_from"] = $from;
|
228 |
$arrProduct["woo_".$key."_to"] = $to;
|
229 |
}
|
@@ -236,6 +241,11 @@ class UniteCreatorWooIntegrate{
|
|
236 |
if($regularPriceFrom === $salePriceFrom){
|
237 |
$arrProduct["woo_sale_price_from"] = null;
|
238 |
$arrProduct["woo_sale_price_to"] = null;
|
|
|
|
|
|
|
|
|
|
|
239 |
}
|
240 |
|
241 |
return($arrProduct);
|
@@ -540,6 +550,35 @@ class UniteCreatorWooIntegrate{
|
|
540 |
return($arrImages);
|
541 |
}
|
542 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
|
544 |
/**
|
545 |
* get product data
|
@@ -558,18 +597,28 @@ class UniteCreatorWooIntegrate{
|
|
558 |
$arrData = $objInfo->get_data();
|
559 |
$type = $objInfo->get_type();
|
560 |
|
|
|
|
|
561 |
$arrProperties = $this->getArrPropertyNames();
|
562 |
|
563 |
$productSku = UniteFunctionsUC::getVal($arrData, "sku");
|
|
|
564 |
$salePrice = UniteFunctionsUC::getVal($arrData, "sale_price");
|
565 |
$regularPrice = UniteFunctionsUC::getVal($arrData, "regular_price");
|
566 |
$price = UniteFunctionsUC::getVal($arrData, "price");
|
567 |
|
|
|
|
|
|
|
|
|
568 |
if(empty($regularPrice) && !empty($price))
|
569 |
$regularPrice = $price;
|
570 |
|
571 |
$arrData["regular_price"] = $regularPrice;
|
572 |
-
|
|
|
|
|
|
|
573 |
$arrProduct = array();
|
574 |
|
575 |
$arrProduct["woo_type"] = $type;
|
@@ -597,7 +646,7 @@ class UniteCreatorWooIntegrate{
|
|
597 |
|
598 |
$arrPrices = $objInfo->get_variation_prices();
|
599 |
|
600 |
-
$arrProduct = $this->addPricesFromTo($arrProduct, $arrPrices);
|
601 |
|
602 |
$arrProduct["woo_price"] = $arrProduct["woo_price_from"];
|
603 |
$arrProduct["woo_regular_price"] = $arrProduct["woo_regular_price_from"];
|
@@ -622,10 +671,10 @@ class UniteCreatorWooIntegrate{
|
|
622 |
$arrProduct["woo_currency"] = $this->currency;
|
623 |
$arrProduct["woo_currency_symbol"] = $this->currencySymbol;
|
624 |
|
625 |
-
|
626 |
//put add to cart link
|
627 |
$arrProduct = $this->addAddToCartData($arrProduct, $productID, $productSku);
|
628 |
|
|
|
629 |
return($arrProduct);
|
630 |
}
|
631 |
|
21 |
private $urlCart;
|
22 |
private $urlSite;
|
23 |
private $urlCurrentPage;
|
24 |
+
private $optionIncludingTax;
|
25 |
|
26 |
private $isInited = false;
|
27 |
|
80 |
return(false);
|
81 |
|
82 |
//init
|
83 |
+
$this->optionIncludingTax = get_option( 'woocommerce_tax_display_shop' );
|
84 |
$this->currency = get_woocommerce_currency();
|
85 |
$this->currencySymbol = get_woocommerce_currency_symbol($this->currency);
|
86 |
$this->urlCheckout = wc_get_checkout_url();
|
204 |
/**
|
205 |
* add from/to prices to variable product
|
206 |
*/
|
207 |
+
private function addPricesFromTo($arrProduct, $arrPrices, $objProduct){
|
208 |
|
209 |
if(empty($arrPrices))
|
210 |
return($arrProduct);
|
226 |
$from = (float)$from;
|
227 |
$to = (float)$to;
|
228 |
|
229 |
+
$from = $this->modifyPrice($from, $objProduct);
|
230 |
+
$to = $this->modifyPrice($to, $objProduct);
|
231 |
+
|
232 |
$arrProduct["woo_".$key."_from"] = $from;
|
233 |
$arrProduct["woo_".$key."_to"] = $to;
|
234 |
}
|
241 |
if($regularPriceFrom === $salePriceFrom){
|
242 |
$arrProduct["woo_sale_price_from"] = null;
|
243 |
$arrProduct["woo_sale_price_to"] = null;
|
244 |
+
}else{
|
245 |
+
|
246 |
+
$regularPriceFrom = $this->modifyPrice($regularPriceFrom, $objProduct);
|
247 |
+
$regularPriceTo = $this->modifyPrice($regularPriceTo, $objProduct);
|
248 |
+
|
249 |
}
|
250 |
|
251 |
return($arrProduct);
|
550 |
return($arrImages);
|
551 |
}
|
552 |
|
553 |
+
/**
|
554 |
+
* modify price
|
555 |
+
*/
|
556 |
+
private function modifyPrice($price, $product){
|
557 |
+
|
558 |
+
if(empty($price))
|
559 |
+
return($price);
|
560 |
+
|
561 |
+
if($this->optionIncludingTax == "incl"){
|
562 |
+
$price = wc_get_price_including_tax(
|
563 |
+
$product,
|
564 |
+
array(
|
565 |
+
'qty' => 1,
|
566 |
+
'price' => $price,
|
567 |
+
));
|
568 |
+
}
|
569 |
+
else{
|
570 |
+
$price = wc_get_price_excluding_tax(
|
571 |
+
$product,
|
572 |
+
array(
|
573 |
+
'qty' => 1,
|
574 |
+
'price' => $price,
|
575 |
+
));
|
576 |
+
}
|
577 |
+
|
578 |
+
|
579 |
+
return($price);
|
580 |
+
}
|
581 |
+
|
582 |
|
583 |
/**
|
584 |
* get product data
|
597 |
$arrData = $objInfo->get_data();
|
598 |
$type = $objInfo->get_type();
|
599 |
|
600 |
+
//dmp($arrData);
|
601 |
+
|
602 |
$arrProperties = $this->getArrPropertyNames();
|
603 |
|
604 |
$productSku = UniteFunctionsUC::getVal($arrData, "sku");
|
605 |
+
|
606 |
$salePrice = UniteFunctionsUC::getVal($arrData, "sale_price");
|
607 |
$regularPrice = UniteFunctionsUC::getVal($arrData, "regular_price");
|
608 |
$price = UniteFunctionsUC::getVal($arrData, "price");
|
609 |
|
610 |
+
$salePrice = $this->modifyPrice($salePrice, $objInfo);
|
611 |
+
$regularPrice = $this->modifyPrice($regularPrice, $objInfo);
|
612 |
+
$price = $this->modifyPrice($price, $objInfo);
|
613 |
+
|
614 |
if(empty($regularPrice) && !empty($price))
|
615 |
$regularPrice = $price;
|
616 |
|
617 |
$arrData["regular_price"] = $regularPrice;
|
618 |
+
$arrData["price"] = $price;
|
619 |
+
$arrData["sale_price"] = $salePrice;
|
620 |
+
|
621 |
+
|
622 |
$arrProduct = array();
|
623 |
|
624 |
$arrProduct["woo_type"] = $type;
|
646 |
|
647 |
$arrPrices = $objInfo->get_variation_prices();
|
648 |
|
649 |
+
$arrProduct = $this->addPricesFromTo($arrProduct, $arrPrices, $objInfo);
|
650 |
|
651 |
$arrProduct["woo_price"] = $arrProduct["woo_price_from"];
|
652 |
$arrProduct["woo_regular_price"] = $arrProduct["woo_regular_price_from"];
|
671 |
$arrProduct["woo_currency"] = $this->currency;
|
672 |
$arrProduct["woo_currency_symbol"] = $this->currencySymbol;
|
673 |
|
|
|
674 |
//put add to cart link
|
675 |
$arrProduct = $this->addAddToCartData($arrProduct, $productID, $productSku);
|
676 |
|
677 |
+
|
678 |
return($arrProduct);
|
679 |
}
|
680 |
|
readme.txt
CHANGED
@@ -92,31 +92,28 @@ Fully compatible and integrated with Toolset custom post types and fields.
|
|
92 |
|
93 |
<h3>Creative Widgets for Elementor</h3>
|
94 |
<ol>
|
95 |
-
<li><a href="https://unlimited-elements.com/
|
96 |
<li><a href="https://unlimited-elements.com/flip-box-widget-for-elementor/">Flip Box Widget for Elementor (Free)</a> - Make your content more interesting with the Elementor Flip Box widget. Use the animated Flip Boxes to highlight any content inside your page with a flip effect.</li>
|
97 |
-
<li><a href="https://unlimited-elements.com/number-box-widget-widget-for-elementor/">Number Box Widget for Elementor (Free)</a> - Create stunning number blocks with various styles. The Number Box widget for Elementor helps you display content for step
|
98 |
-
<li><a href="https://unlimited-elements.com/animated-mouse-scroll-icon-widget-for-elementor/">Animated Mouse Scroll Icon Widget for Elementor (Free)</a> - The Animated Mouse Scroll Icon is a small micro animation
|
99 |
</li>
|
100 |
<li><a href="https://unlimited-elements.com/svg-animation-widget-for-elementor">SVG Animation Widget for Elementor (Free)</a> - The SVG animation widget for Elementor makes it easy -to create impressive SVG animations for your websitet, without any coding skills just copy paste your SVG code and your animated icon is ready.</li>
|
101 |
-
<li><a href="https://unlimited-elements.com/animated-hamburger-icon-for-elementor/">Animated Hamburger Icon Widget for Elementor (Free)</a> - Use the animated hamburger icon widget to toggle Elementor pro
|
102 |
<li><a href="https://unlimited-elements.com/timeline-bullets-widget-for-elementor/">Timeline Bullets Widget for Elementor (Free)</a> - List your features or services using bullet points in a timeline layout to make it easier for users to read the important information.</li>
|
103 |
<li><a href="https://unlimited-elements.com/lordicon-animated-icons-widget-for-elementor/">Lordicon: Animated Icons Widget for Elementor (Free)</a> - The most powerful animated icon library with 1500+ free and premium animated Lottie animations.</li>
|
104 |
-
<li><a href="https://unlimited-elements.com/
|
105 |
<li><a href="https://unlimited-elements.com/image-tooltip-widget-for-elementor/">Image Tooltip Widget for Elementor (Free)</a> - The easiest way to set a tooltip to any Image on the page with a short text description or any HTML code.</li>
|
106 |
-
<li><a href="https://unlimited-elements.com/
|
|
|
107 |
<li><a href="https://unlimited-elements.com/image-reveal-on-scroll-widget-for-elementor">Image Reveal On Scroll Widget for Elementor (Pro)</a> - The Image Reveal on Scroll widget adds an awesome reveal on scroll effect to your images to spice up your Elementor website design.</li>
|
108 |
-
<li><a href="https://unlimited-elements.com/image-shapes-for-elementor-page-builder/">Image Shapes Widget for Elementor (Pro)</a> - The Image Shapes Elementor Widget allows you to make complex shape addons by clipping
|
109 |
<li><a href="https://unlimited-elements.com/image-particle-widget-for-elementor/">Particle Image Widget for Elementor (Pro)</a> - Create a dispersion interactive mouse aware distortion effect for any image using the Particle Image widget for Elementor.</li>
|
110 |
-
<li><a href="https://unlimited-elements.com/image-zoom-magnifier-widget-for-elementor/">Image Zoom Magnifier Widget for Elementor (Pro)</a> - Image Zoom Magnifier is a Elmentor Widget for creating a direction-aware magnifying glass effect to provide an inner zoom functionality on any given image. Enlarge images on touch, click, or mouseover.</li>
|
111 |
<li><a href="https://unlimited-elements.com/icon-tabs-widget-for-elementor">Icon Tabs Widget for Elementor (Pro)</a> - The Tab Widget for Elementor will help you show your text on your page divided into horizontal or vertical tabs. Customize your tabs using icons and make the content on your website interactive and fun to read.</li>
|
|
|
112 |
<li><a href="https://unlimited-elements.com/icon-accordion-widget-for-elementor/">Icon Accordion Widget for Elementor (Pro)</a> - Advanced accordion addon for Elementor page builder offers multiple styles to create interactive collapsable content with multiple layouts on your page.</li>
|
113 |
<li><a href="https://unlimited-elements.com/before-after-image-comparison-widget-for-elementor/">Before After Widget for Elementor (Pro)</a> - The Before After widget is an image comparison addon for Elementor. This widget allows you to create the effect for comparing two before and after images.</li>
|
114 |
<li><a href="https://unlimited-elements.com/hotspots-for-elementor-page-builder/">Hotspots Widget for Elementor (Pro)</a> - Add hotspots to your images with a tooltip an option for opening a built in popup. Each hotspot popup can contain and image and description text.</li>
|
115 |
-
<li><a href="https://unlimited-elements.com/image-accordion-widget-for-elementor/">Image Accordion Widget for Elementor (Pro)</a> - Our image accordion addon for Elementor highlights your images with amazing hover effects and interactive layouts.</li>
|
116 |
<li><a href="https://unlimited-elements.com/shape-bullets-widget-for-elementor/">Shape Bullets Widget for Elementor (Pro)</a> - The Shape Bullets Widget for Elementor, creates an easy-to-manage bulleted list of items. Each item can be highlighted by its own icon.
|
117 |
-
</li>
|
118 |
-
<li><a href="https://unlimited-elements.com/interactive-circle-infographic-widget-for-elementor/">Interactive Circle Infographic Widget for Elementor (Pro)</a> - The Circle Infographic widget for Elementor is a simple and engaging way to present data, processes, concepts, structures and more. Helps your audience understand an entire cycle using a circular interactive tab layout.
|
119 |
-
|
120 |
</li>
|
121 |
<li><a href="https://unlimited-elements.com/flip-box-carousel-widget-for-elementor/">Flip Box Carousel Widget for Elementor (Pro)</a> - Use the animated Carousel Flip Box to highlight content inside your Elementor page in an interactive way.
|
122 |
</li>
|
@@ -125,117 +122,120 @@ Fully compatible and integrated with Toolset custom post types and fields.
|
|
125 |
|
126 |
<h3>Post Widgets for Elementor</h3>
|
127 |
<ol>
|
128 |
-
<li><a href="https://unlimited-elements.com/post-
|
|
|
|
|
129 |
<li><a href="https://unlimited-elements.com/post-blocks-widget-for-elementor">Post Blocks Widget for Elementor (Free)</a></li>
|
130 |
<li><a href="https://unlimited-elements.com/post-pagination-widget-for-elementor/">Post Pagination Widget for Elementor (Free)</a></li>
|
131 |
-
<li><a href="https://unlimited-elements.com/post-list-widget-for-elementor">Post List Widget for Elementor (Free)</a
|
132 |
-
<li><a href="https://unlimited-elements.com/post-tabs-for-elementor/">Post Tabs Widget for Elementor (Free)</a></li>
|
133 |
-
<li><a href="https://unlimited-elements.com/card-post-carousel-widget-for-elementor">Card Post Carousel Widget for Elementor (Free)</a></li>
|
134 |
<li><a href="https://unlimited-elements.com/post-accordions-for-elementor/">Post Accordion Widget for Elementor (Free)</a></li>
|
135 |
-
<li><a href="https://unlimited-elements.com/post-grid-widget-for-elementor/">Post Grid Widget for Elementor (Pro)</a> - The Post Grid widget places multiple posts in an aesthetic post grid layout. The purpose of this widget is to let you organize and display your posts on your Elementor website.</li>
|
136 |
<li><a href="https://unlimited-elements.com/elementor-author-list-widget/">Author List Widget for Elementor (Pro)</a></li>
|
137 |
<li><a href="https://unlimited-elements.com/masonry-post-grid-widget-for-elementor">Masonry Post Grid Widget for Elementor (Pro)</a></li>
|
138 |
<li><a href="https://unlimited-elements.com/post-tiles-widget-for-elementor">Post Tile Widget for Elementor (Pro)</a></li>
|
139 |
<li><a href="https://unlimited-elements.com/post-sliders/">Post Slider Widget for Elementor (Pro)</a></li>
|
140 |
-
<li><a href="https://unlimited-elements.com/post-carousels-for-elementor/">Post Carousel Widget for Elementor (Pro)</a></li>
|
141 |
<li><a href="https://unlimited-elements.com/blog-card-slider-widget-for-elementor">Post Card Slider Widget for Elementor (Pro)</a></li>
|
|
|
142 |
<li><a href="https://unlimited-elements.com/load-more-infinite-scroll-widget-for-elementor/">Load More / Infinite Scroll Widget for Elementor (Pro)</a> - Add a load more button to your post or product grids. You can even make an infinite scroll effect that works with AJAX.</li>
|
|
|
143 |
<li><a href="https://unlimited-elements.com/post-timeline-widget-for-elementor/">Post Timeline Widget for Elementor (Pro)</a></li>
|
144 |
<li><a href="https://unlimited-elements.com/post-scroll-widget-for-elementor">Post Scroll Widget for Elementor (Pro)</a></li>
|
145 |
-
<li><a href="https://unlimited-elements.com/post-magazine-grid-widget-for-elementor/">Post Magazine Grid Widget for Elementor (Pro)</a></li>
|
146 |
<li><a href="https://unlimited-elements.com/tabs-filter-widget-for-elementor/">Tabs Filter Widget for Elementor (Pro)</a> - The Tabs Filter is the best post filtering widget for Elementor. You can ad post filters using category and tag taxonomies.</li>
|
147 |
<li><a href="https://unlimited-elements.com/taxonomy-terms-widget-for-elementor/">Taxonomy Terms Widget for Elementor (Pro)</a> - Showcase your WordPress tags and categories in different ways using the Taxonomy Widget for Elementor.
|
148 |
|
149 |
</li>
|
|
|
150 |
<li><a href="https://unlimited-elements.com/post-horizontal-timeline-widget-for-elementor/">Post Horizontal Timeline Widget for Elementor (Pro)</a></li>
|
151 |
</ol>
|
152 |
|
153 |
<h3>Marketing Widgets for Elementor</h3>
|
154 |
<ol>
|
155 |
<li><a href="https://unlimited-elements.com/price-label-product-box-widget-for-elementor/">Product Box Widget for Elementor (Free)</a></li>
|
156 |
-
<li><a href="https://unlimited-elements.com/notification-widget-for-elementor">Notification Widget for Elementor (Free)</a> - The Notification widget enables you to display a colored alert box and draw attention to important messages on your Elementor website.</li>
|
157 |
-
<li><a href="https://unlimited-elements.com/overlay-product-box-widget-for-elementor/">Overlay Product Box Widget for Elementor (Free)</a></li>
|
158 |
-
<li><a href="https://unlimited-elements.com/business-hours-widget-for-elementor">Business Hours Widget for Elementor (Free)</a></li>
|
159 |
<li><a href="https://unlimited-elements.com/timer-countdowns-for-elementor-page-builder/">Timer Countdown Widget for Elementor (Free)</a> - Instantly create a beautiful, animated countdown clock addon, to share on your Elementor website. Count down to a date with your own unique timer.
|
160 |
|
161 |
</li>
|
162 |
<li><a href="https://unlimited-elements.com/call-to-action-button-widget-for-elementor/">Call To Action Button Widget for Elementor (Free)</a> - The Call to Action Button Widget is a tool for creating beautiful buttons that combine an icon, some text, and message notification.</li>
|
|
|
163 |
<li><a href="https://unlimited-elements.com/price-list-widget-for-elementor/">Price List Widget for Elementor (Free)</a> - A powerful addon that allows displaying a list of items, products, services or features for your business with easy styling options.</li>
|
164 |
<li><a href="https://unlimited-elements.com/event-box-widget-for-elementor">Event Box Widget for Elementor (Free)</a> - Showcase events & special occasions on your websites using this unique Elementor addon.</li>
|
165 |
-
<li><a href="https://unlimited-elements.com/
|
166 |
-
<li><a href="https://unlimited-elements.com/review-box-widget-for-elementor">Review Box Widget for Elementor (Free)</a> - Simply create and display reviews on your Elementor website to build customers’ trust and increase SEO.</li>
|
167 |
<li><a href="https://unlimited-elements.com/pricing-table-widget-for-elementor/">Pricing Table Widget for Elementor (Free)</a> - Present the available pricing plans in an easy to read format. Use the Pricing Table widget to help your customers make purchasing decisions.</li>
|
168 |
-
<li><a href="https://unlimited-elements.com/
|
169 |
<li><a href="http://unlimited-elements.com/food-menu-box-widget-for-elementor/">Product Card Widget for Elementor (Free)</a></li>
|
170 |
-
<li><a href="https://unlimited-elements.com/
|
171 |
-
<li><a href="https://unlimited-elements.com/
|
|
|
172 |
<li><a href="https://unlimited-elements.com/timer-countdown-banner-widget-for-elementor">Timer Countdown Banner Widget for Elementor (Pro)</a> - An awesome countdown banner with a a call to action button.</li>
|
173 |
<li><a href="https://unlimited-elements.com/card-testimonial-review-carousel-widget-for-elementor">Review Carousel Widget for Elementor (Pro)</a> - The Reviews Carousel increases the visibility reviews you want to highlight to your users by letting you display them throughout your site in an interactive carousel format. </li>
|
174 |
<li><a href="https://unlimited-elements.com/list-marquee-widget-for-elementor/">List Marquee Widget for Elementor (Pro)</a></li>
|
|
|
175 |
<li><a href="https://unlimited-elements.com/pricing-flip-box-widget-for-elementor/">Pricing Table Flip Box Widget for Elementor (Pro)</a> - The Pricing Table Flip Box allows you to showcase the prices for your products, services, or packages in a beautiful flip box pricing table.</li>
|
176 |
-
<li><a href="https://unlimited-elements.com/food-menu-carousel-widget-for-elementor">Product Carousel Widget for Elementor (Pro)</a></li>
|
177 |
<li><a href="https://unlimited-elements.com/event-list-widget-for-elementor/">Event List Widget for Elementor (Pro)</a> - The event list widget is a way to easily show your recent events like concerts, conferences, parties or special occasions.
|
178 |
</li>
|
|
|
179 |
<li><a href="https://unlimited-elements.com/price-box-widget-for-elementor/">Price Box Widget for Elementor (Pro)</a></li>
|
180 |
<li><a href="https://unlimited-elements.com/icon-mobile-menu-for-elementor">Icon Mobile Menu Widget for Elementor (Pro)</a> - A perfect way to add an icon menu for making your CTA buttons stand out for website visitors using mobile devices.</li>
|
181 |
-
<li><a href="https://unlimited-elements.com/mobile-conversion-menu-for-elementor">Mobile Conversion Menu Widget for Elementor (Pro)</a> - Floating action buttons that display the primary actions in your Elementor website. Provide quick access to social icons or any important or common actions to increase conversions.</li>
|
182 |
<li><a href="https://unlimited-elements.com/whatsapp-chat-widget-for-elementor">WhatsApp Chat Widget for Elementor (Pro)</a> - A floating WhatsApp button that allows your website visitors to start a chat conversation from your website directly to your WhatsApp phone number with just one click.</li>
|
183 |
-
<li><a href="https://unlimited-elements.com/
|
184 |
-
<li><a href="https://unlimited-elements.com/memory-game-widget-for-elementor">Memory Game Widget for Elementor (Pro)</a></li>
|
185 |
<li><a href="https://unlimited-elements.com/two-column-product-bullets-widget-for-elementor/">Product Highlights Widget for Elementor (Pro)</a> - Design a visually attractive product feature lists that will help your potential buyers to make purchase decision and learn more about your products. </li>
|
186 |
-
<li><a href="https://unlimited-elements.com/
|
187 |
-
</
|
188 |
-
|
189 |
-
<
|
190 |
-
<ol>
|
191 |
-
<li><a href="https://unlimited-elements.com/unlimited-timeline-widget-for-elementor">Unlimited Timeline Widget for Elementor (Free)</a> - Showcase your story or company history in a vertical timeline layout using the powerful Unlimited Timeline addon for Elementor.</li>
|
192 |
-
<li><a href="https://unlimited-elements.com/linear-progress-bar-widget-for-elementor">Linear Progress Bar Widget for Elementor (Free)</a></li>
|
193 |
-
<li><a href="https://unlimited-elements.com/pie-chart-for-elementor">Pie chart Widget for Elementor (Free)</a></li>
|
194 |
-
<li><a href="https://unlimited-elements.com/line-chart-for-elementor">Line Chart Widget for Elementor (Free)</a></li>
|
195 |
-
<li><a href="https://unlimited-elements.com/unlimited-charts-widget-for-elementor">Unlimited Charts Widget for Elementor (Pro)</a> - The easy way to include animated, interactive graphs and charts on your Elementor website. 6 Chart styles included: Bar Chart, Line Chart, Pie Chart, Doughnut Chart, Radar Chart and Polar Area Chart.
|
196 |
-
</li>
|
197 |
-
<li><a href="https://unlimited-elements.com/step-process-widget-for-elementor">Step Process Widget for Elementor (Pro)</a> - Showcase process/steps with unique layout variations. Create visual diagrams of step by step instructions to simplify processes to your website visitors.</li>
|
198 |
-
<li><a href="https://unlimited-elements.com/circle-progress-bar-widget-for-elementor/">Circle Progress Bar Widget for Elementor (Pro)</a></li>
|
199 |
-
<li><a href="https://unlimited-elements.com/semi-circle-progress-bar-widget-for-elementor/">Semi Circle Progress Bar Widget for Elementor (Pro)</a></li>
|
200 |
-
<li><a href="https://unlimited-elements.com/vertical-progress-bar-widget-for-elementor">Vertical Progress Bar Widget for Elementor (Pro)</a></li>
|
201 |
</ol>
|
202 |
|
203 |
-
<h3>
|
204 |
<ol>
|
205 |
-
<li><a href="https://unlimited-elements.com/woocommerce-product-list-widget-for-elementor/">
|
206 |
-
<li><a href="https://unlimited-elements.com/woocommerce-product-
|
207 |
-
<li><a href="https://unlimited-elements.com/woocommerce-product-carousel-widget-for-elementor">
|
208 |
-
<li><a href="https://unlimited-elements.com/woocommerce-product-
|
209 |
-
<li><a href="https://unlimited-elements.com/woocommerce-category-grid-for-elemenetor/">
|
210 |
-
<li><a href="https://unlimited-elements.com/woocommerce-category-carousel-widget-for-elementor/">
|
211 |
</ol>
|
212 |
|
213 |
-
<h3>
|
214 |
<ol>
|
215 |
-
<li><a href="https://unlimited-elements.com/
|
216 |
-
<li><a href="https://unlimited-elements.com/
|
217 |
-
<li><a href="https://unlimited-elements.com/
|
218 |
-
<li><a href="https://unlimited-elements.com/
|
219 |
-
<li><a href="https://unlimited-elements.com/
|
|
|
220 |
</ol>
|
221 |
|
222 |
<h3>Menu Widgets for Elementor</h3>
|
223 |
<ol>
|
224 |
<li><a href="https://unlimited-elements.com/fullscreen-menu-widget-for-elementor/">Fullscreen Menu Widget for Elementor (Free)</a> - Create an awesome Elementor Full-Screen Menu easily using this widget. The easiest way to add a hamburger icon that triggers a fullscreen menu overlay with a close button.
|
225 |
</li>
|
226 |
-
<li><a href="https://unlimited-elements.com/simple-list-menu-widget-for-elementor">List Menu Widget for Elementor (Free)</a
|
227 |
<li><a href="http://unlimited-elements.com/side-menu-widget-for-elementor">Side Menu Widget for Elementor (Pro)</a> - Off Canvas sidebar with a WordPress menu inside that can include icon links and a search bar. Use the toggle button to open the side menu and the close icon to close it.</li>
|
228 |
-
<li><a href="https://unlimited-elements.com/liquid-fullscreen-menu-widget-for-elementor">Liquid Full Screen Menu Widget for Elementor (Pro)</a> -
|
|
|
|
|
229 |
https://github.com/ykob/shape-overlays</li>
|
230 |
<li><a href="https://unlimited-elements.com/one-page-scroll-navigation-widget-for-elementor">One Page Scroll Navigation Widget for Elementor (Pro)</a></li>
|
231 |
<li><a href="http://unlimited-elements.com/circle-menu-widget-for-elementor">Circle Menu Widget for Elementor (Pro)</a></li>
|
232 |
-
<li><a href="https://unlimited-elements.com/accordion-menu-widget-for-elementor">Accordion Menu Widget for Elementor (Pro)</a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
</ol>
|
234 |
|
235 |
<h3>Carousel Widgets for Elementor</h3>
|
236 |
<ol>
|
237 |
<li><a href="https://unlimited-elements.com/card-carousel-widget-for-elementor/">Card Carousel Widget for Elementor (Free)</a> - Use the card carousel widget to display two or more pieces of content in a carousel format. Create any kind of carousel you can think about.</li>
|
238 |
-
<li><a href="https://unlimited-elements.com/coverflow-carousel-widget-for-elementor/">Coverflow Carousel Widget for Elementor (Pro)</a
|
239 |
<li><a href="https://unlimited-elements.com/icon-carousel-widget-for-elementor/">Icon Carousel Widget for Elementor (Pro)</a></li>
|
240 |
<li><a href="https://unlimited-elements.com/image-card-carousel-widget-for-elementor">Image Card Carousel Widget for Elementor (Pro)</a></li>
|
241 |
<li><a href="https://unlimited-elements.com/material-carousel-widget-for-elementor/">Material Carousel Widget for Elementor (Pro)</a></li>
|
@@ -245,14 +245,31 @@ https://github.com/ykob/shape-overlays</li>
|
|
245 |
<li><a href="https://unlimited-elements.com/justified-image-carousel-widget-for-elementor/">Justified Image Carousel Widget for Elementor (Pro)</a></li>
|
246 |
</ol>
|
247 |
|
248 |
-
<h3>
|
249 |
<ol>
|
250 |
-
<li><a href="https://unlimited-elements.com/
|
251 |
-
<li><a href="https://unlimited-elements.com/
|
252 |
-
<li><a href="https://unlimited-elements.com/
|
253 |
-
<li><a href="https://unlimited-elements.com/
|
254 |
-
<li><a href="https://unlimited-elements.com/
|
255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
</ol>
|
257 |
|
258 |
<h3>Media Widgets for Elementor</h3>
|
@@ -272,20 +289,6 @@ https://github.com/ykob/shape-overlays</li>
|
|
272 |
<li><a href="https://unlimited-elements.com/thumb-list-video-gallery-widget-for-elementor/">Play List Video Gallery Widget for Elementor (Pro)</a></li>
|
273 |
</ol>
|
274 |
|
275 |
-
<h3>Content Widgets for Elementor</h3>
|
276 |
-
<ol>
|
277 |
-
<li><a href="https://unlimited-elements.com/content-tabs-widget-for-elementor/">Content Tabs Widget for Elementor (Free)</a></li>
|
278 |
-
<li><a href="https://unlimited-elements.com/content-accordion-widget-for-elementor/">Content Accordion Widget for Elementor (Free)</a></li>
|
279 |
-
<li><a href="https://unlimited-elements.com/unlimited-grid-widget-for-elementor/">Unlimited Grid Widget for Elementor (Pro)</a> - Create advanced content layouts using an easy-to-use grid system with ultimate flexibility.</li>
|
280 |
-
<li><a href="https://unlimited-elements.com/content-switcher-widget-for-elementor/">Content Switcher Widget for Elementor (Pro)</a> - Allow users to switch between two or more types of content using interactive toggle buttons. You can even load Elementor templates as content to make advanced content switcher layouts.
|
281 |
-
|
282 |
-
</li>
|
283 |
-
<li><a href="https://unlimited-elements.com/content-slider-widget-for-elementor">Content Slider Widget for Elementor (Pro)</a> - Content slider is the most extensive and user-friendly Elementor widget for building amazing sliders. Create stunning animated sliders inside of your web designs in seconds.</li>
|
284 |
-
<li><a href="https://unlimited-elements.com/content-carousel-widget-for-elementor/">Content Carousel Widget for Elementor (Pro)</a> - Content carousel allows you to create an interactive carousel where the content for each slide can be anything you want: images, text, HTML, and even Elementor templates.</li>
|
285 |
-
<li><a href="https://unlimited-elements.com/content-grid-widget-for-elementor/">Content Grid Widget for Elementor (Pro)</a></li>
|
286 |
-
<li><a href="https://unlimited-elements.com/content-ticker-widget-for-elementor/">Content Ticker Widget for Elementor (Pro)</a></li>
|
287 |
-
</ol>
|
288 |
-
|
289 |
<h3>Testimonials for Elementor</h3>
|
290 |
<ol>
|
291 |
<li><a href="https://unlimited-elements.com/box-testimonial-widget-for-elementor/">Testimonial Box Widget for Elementor (Free)</a></li>
|
@@ -306,7 +309,7 @@ https://github.com/ykob/shape-overlays</li>
|
|
306 |
|
307 |
<h3>Content Boxes for Elementor</h3>
|
308 |
<ol>
|
309 |
-
<li><a href="https://unlimited-elements.com/image-zoom-content-box-widget-for-elementor/">Image Zoom Content Box Widget for Elementor (Free)</a
|
310 |
<li><a href="https://unlimited-elements.com/image-card-content-box-widget-for-elementor/">Image Card Widget for Elementor (Free)</a></li>
|
311 |
<li><a href="https://unlimited-elements.com/hover-text-reveal-content-box-widget-for-elementor/">Content Box Hover Text Reveal Widget for Elementor (Free)</a></li>
|
312 |
<li><a href="https://unlimited-elements.com/icon-image-content-box-widget-for-elementor">Icon Image Content Box Widget for Elementor (Free)</a></li>
|
@@ -320,7 +323,7 @@ https://github.com/ykob/shape-overlays</li>
|
|
320 |
<h3>Instagram Widgets for Elementor</h3>
|
321 |
<ol>
|
322 |
<li><a href="https://unlimited-elements.com/latest-instagram-image-widget-for-elementor">Instagram Latest Image Widget for Elementor (Free)</a></li>
|
323 |
-
<li><a href="https://unlimited-elements.com/grid-instagram-widget-for-elementor">Instagram
|
324 |
<li><a href="https://unlimited-elements.com/instagram-teaser-box-for-elementor/">Instagram Box Widget for Elementor (Pro)</a></li>
|
325 |
<li><a href="https://unlimited-elements.com/instagram-card-widget-for-elementor/">Instagram Card Widget for Elementor (Pro)</a></li>
|
326 |
<li><a href="https://unlimited-elements.com/metro-instagram-widget-for-elementor">Instagram Metro Grid Widget for Elementor (Pro)</a></li>
|
@@ -338,7 +341,7 @@ https://github.com/ykob/shape-overlays</li>
|
|
338 |
<ol>
|
339 |
<li><a href="https://unlimited-elements.com/link-hover-effects/">Link Hover Effects Widget for Elementor (Free)</a></li>
|
340 |
<li><a href="https://unlimited-elements.com/icon-hover-effects-for-elementor/">Icon Hover Effects Widget for Elementor (Free)</a></li>
|
341 |
-
<li><a href="https://unlimited-elements.com/creative-button-hover-widget-for-elementor/">Creative Button Hovers Widget for Elementor (Free)</a
|
342 |
<li><a href="https://unlimited-elements.com/banner-hover-effect-widgets-for-elementor/">Banner Hover Effects Widget for Elementor (Pro)</a></li>
|
343 |
<li><a href="https://unlimited-elements.com/scrolling-screenshot-widget-for-elementor">Scrolling Screenshot Widget for Elementor (Pro)</a> - Add a long screenshot that will scroll when you hover over it.</li>
|
344 |
<li><a href="https://unlimited-elements.com/ihover-for-elementor/">iHover Effect Widget for Elementor (Pro)</a></li>
|
@@ -351,7 +354,7 @@ https://github.com/ykob/shape-overlays</li>
|
|
351 |
<li><a href="https://unlimited-elements.com/video-play-button-popup-widget-for-elementor/">Video Play Button Widget for Elementor (Free)</a></li>
|
352 |
<li><a href="https://unlimited-elements.com/button-group-widget-for-elementor/">Button Group Widget for Elementor (Free)</a></li>
|
353 |
<li><a href="https://unlimited-elements.com/underline-animated-button-widget-for-elementor/">Underline Animated Button Widget for Elementor (Free)</a></li>
|
354 |
-
<li><a href="https://unlimited-elements.com/multi-line-button-widget-for-elementor/">Multi Line Button Widget for Elementor (Free)</a
|
355 |
<li><a href="https://unlimited-elements.com/toggle-text-button-widget-for-elementor/">Toggle Text Button Widget for Elementor (Free)</a></li>
|
356 |
<li><a href="https://unlimited-elements.com/parellogram-button-widget-for-elementor/">Parallelogram Button Widget for Elementor (Free)</a></li>
|
357 |
<li><a href="https://unlimited-elements.com/icon-pointer-button-widget-for-elementor/">Icon Pointer Button Widget for Elementor (Free)</a></li>
|
@@ -376,7 +379,7 @@ https://github.com/ykob/shape-overlays</li>
|
|
376 |
<li><a href="https://unlimited-elements.com/dual-color-heading-widget-for-elementor/">Dual Color Heading Widget for Elementor (Free)</a></li>
|
377 |
<li><a href="https://unlimited-elements.com/stroke-text-effect-widget-for-elementor/">Stroke Text Effect Widget for Elementor (Free)</a></li>
|
378 |
<li><a href="https://unlimited-elements.com/gradient-text-effect-for-elementor/">Gradient Text Effect Widget for Elementor (Free)</a></li>
|
379 |
-
<li><a href="https://unlimited-elements.com/text-marquee-for-elementor/">Text Marquee Effect Widget for Elementor (Free)</a
|
380 |
<li><a href="https://unlimited-elements.com/futuristic-typing-text-effect-widget-for-elementor/">Futuristic Typing Text Effect Widget for Elementor (Pro)</a></li>
|
381 |
<li><a href="https://unlimited-elements.com/animated-split-text-widget-for-elementor/">Animated Split Text Widget for Elementor (Pro)</a></li>
|
382 |
<li><a href="https://unlimited-elements.com/sideways-vertical-text-widget-for-elementor">Sideways Vertical Text Widget for Elementor (Pro)</a></li>
|
@@ -456,6 +459,7 @@ https://github.com/ykob/shape-overlays</li>
|
|
456 |
|
457 |
|
458 |
|
|
|
459 |
== Installation ==
|
460 |
|
461 |
Note : This plugin works with Elementor. Make sure you have [Elementor](https://wordpress.org/plugins/elementor/) installed.
|
@@ -466,6 +470,22 @@ Note : This plugin works with Elementor. Make sure you have [Elementor](https://
|
|
466 |
|
467 |
== Changelog ==
|
468 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
version 1.5.10: 2022-04-04
|
470 |
|
471 |
* Fix: fixed title and description source in gallery source selection
|
@@ -1601,7 +1621,7 @@ Absolutely! It will work with any theme where Elementor works.
|
|
1601 |
|
1602 |
= What if i update to the Premium version after using the Free version? =
|
1603 |
|
1604 |
-
Your existing elements/content will work with the premium version. So you won
|
1605 |
|
1606 |
= Can i get a refund? =
|
1607 |
|
92 |
|
93 |
<h3>Creative Widgets for Elementor</h3>
|
94 |
<ol>
|
95 |
+
<li><a href="https://unlimited-elements.com/blob-shape-widget-for-elementor/">Blob Shapes Widget for Elementor (Free)</a> - Create Blob Shapes with animated morphing effects. This free Elementor widget will help you make your images into random, unique, and organic-looking blob shapes. </li>
|
96 |
<li><a href="https://unlimited-elements.com/flip-box-widget-for-elementor/">Flip Box Widget for Elementor (Free)</a> - Make your content more interesting with the Elementor Flip Box widget. Use the animated Flip Boxes to highlight any content inside your page with a flip effect.</li>
|
97 |
+
<li><a href="https://unlimited-elements.com/number-box-widget-widget-for-elementor/">Number Box Widget for Elementor (Free)</a> - Create stunning number blocks with various styles. The Number Box widget for Elementor helps you display content for step-by-step diagrams and instructions.</li>
|
98 |
+
<li><a href="https://unlimited-elements.com/animated-mouse-scroll-icon-widget-for-elementor/">Animated Mouse Scroll Icon Widget for Elementor (Free)</a> - The Animated Mouse Scroll Icon is a small micro animation to indicate to users they need to scroll down the page to view more. You can make the icon an anchor point that scrolls down to any section when clicked on.
|
99 |
</li>
|
100 |
<li><a href="https://unlimited-elements.com/svg-animation-widget-for-elementor">SVG Animation Widget for Elementor (Free)</a> - The SVG animation widget for Elementor makes it easy -to create impressive SVG animations for your websitet, without any coding skills just copy paste your SVG code and your animated icon is ready.</li>
|
101 |
+
<li><a href="https://unlimited-elements.com/animated-hamburger-icon-for-elementor/">Animated Hamburger Icon Widget for Elementor (Free)</a> - Use the animated hamburger icon widget to toggle Elementor pro popups. You can even put a menu in a popup and create a full-screen menu.</li>
|
102 |
<li><a href="https://unlimited-elements.com/timeline-bullets-widget-for-elementor/">Timeline Bullets Widget for Elementor (Free)</a> - List your features or services using bullet points in a timeline layout to make it easier for users to read the important information.</li>
|
103 |
<li><a href="https://unlimited-elements.com/lordicon-animated-icons-widget-for-elementor/">Lordicon: Animated Icons Widget for Elementor (Free)</a> - The most powerful animated icon library with 1500+ free and premium animated Lottie animations.</li>
|
104 |
+
<li><a href="https://unlimited-elements.com/icon-bullets-widget-for-elementor">Icon Bullets Widget for Elementor (Free)</a> - Display feature lists with custom icons and styles. Each list item can have its own icon title and text. Use the bullets widget to display features and highlights on your Elementor website.</li>
|
105 |
<li><a href="https://unlimited-elements.com/image-tooltip-widget-for-elementor/">Image Tooltip Widget for Elementor (Free)</a> - The easiest way to set a tooltip to any Image on the page with a short text description or any HTML code.</li>
|
106 |
+
<li><a href="https://unlimited-elements.com/image-accordion-widget-for-elementor/">Image Accordion Widget for Elementor (Pro)</a> - Our image accordion addon for Elementor highlights your images with amazing hover effects and interactive layouts.</li>
|
107 |
+
<li><a href="https://unlimited-elements.com/image-zoom-magnifier-widget-for-elementor/">Image Zoom Magnifier Widget for Elementor (Pro)</a> - Image Zoom Magnifier is a Elmentor Widget for creating a direction-aware magnifying glass effect to provide an inner zoom functionality on any given image. Enlarge images on touch, click, or mouseover.</li>
|
108 |
<li><a href="https://unlimited-elements.com/image-reveal-on-scroll-widget-for-elementor">Image Reveal On Scroll Widget for Elementor (Pro)</a> - The Image Reveal on Scroll widget adds an awesome reveal on scroll effect to your images to spice up your Elementor website design.</li>
|
109 |
+
<li><a href="https://unlimited-elements.com/image-shapes-for-elementor-page-builder/">Image Shapes Widget for Elementor (Pro)</a> - The Image Shapes Elementor Widget allows you to make complex shape addons by clipping images using CSS to make various element layouts: circle, ellipse, polygon, and more.</li>
|
110 |
<li><a href="https://unlimited-elements.com/image-particle-widget-for-elementor/">Particle Image Widget for Elementor (Pro)</a> - Create a dispersion interactive mouse aware distortion effect for any image using the Particle Image widget for Elementor.</li>
|
|
|
111 |
<li><a href="https://unlimited-elements.com/icon-tabs-widget-for-elementor">Icon Tabs Widget for Elementor (Pro)</a> - The Tab Widget for Elementor will help you show your text on your page divided into horizontal or vertical tabs. Customize your tabs using icons and make the content on your website interactive and fun to read.</li>
|
112 |
+
<li><a href="https://unlimited-elements.com/background-switcher-widget-for-elementor/">Background Switcher Widget for Elementor (Pro)</a> - The background switcher addon lets you set up cool content boxes. When you hover over a box it will change the background for the whole section. </li>
|
113 |
<li><a href="https://unlimited-elements.com/icon-accordion-widget-for-elementor/">Icon Accordion Widget for Elementor (Pro)</a> - Advanced accordion addon for Elementor page builder offers multiple styles to create interactive collapsable content with multiple layouts on your page.</li>
|
114 |
<li><a href="https://unlimited-elements.com/before-after-image-comparison-widget-for-elementor/">Before After Widget for Elementor (Pro)</a> - The Before After widget is an image comparison addon for Elementor. This widget allows you to create the effect for comparing two before and after images.</li>
|
115 |
<li><a href="https://unlimited-elements.com/hotspots-for-elementor-page-builder/">Hotspots Widget for Elementor (Pro)</a> - Add hotspots to your images with a tooltip an option for opening a built in popup. Each hotspot popup can contain and image and description text.</li>
|
|
|
116 |
<li><a href="https://unlimited-elements.com/shape-bullets-widget-for-elementor/">Shape Bullets Widget for Elementor (Pro)</a> - The Shape Bullets Widget for Elementor, creates an easy-to-manage bulleted list of items. Each item can be highlighted by its own icon.
|
|
|
|
|
|
|
117 |
</li>
|
118 |
<li><a href="https://unlimited-elements.com/flip-box-carousel-widget-for-elementor/">Flip Box Carousel Widget for Elementor (Pro)</a> - Use the animated Carousel Flip Box to highlight content inside your Elementor page in an interactive way.
|
119 |
</li>
|
122 |
|
123 |
<h3>Post Widgets for Elementor</h3>
|
124 |
<ol>
|
125 |
+
<li><a href="https://unlimited-elements.com/post-tabs-for-elementor/">Post Tabs Widget for Elementor (Free)</a> - The Post Tabs widget allows you to create custom-made tab designs and display your WordPress posts in an interactive tabs layout.</li>
|
126 |
+
<li><a href="https://unlimited-elements.com/post-news-ticker-widget-for-elementor">Post Ticker Widget for Elementor (Free)</a> - Display a horizontal post news ticker on your website using WordPress posts, pages, products, or any other custom post type with the help of the Post News Ticker.</li>
|
127 |
+
<li><a href="https://unlimited-elements.com/card-post-carousel-widget-for-elementor">Post Carousel Lite Widget for Elementor (Free)</a> - The Post Carousel widget allows you to choose a set of posts, pages, products, or any custom post type based on category, tags, or author and present them in an interactive carousel format.</li>
|
128 |
<li><a href="https://unlimited-elements.com/post-blocks-widget-for-elementor">Post Blocks Widget for Elementor (Free)</a></li>
|
129 |
<li><a href="https://unlimited-elements.com/post-pagination-widget-for-elementor/">Post Pagination Widget for Elementor (Free)</a></li>
|
130 |
+
<li><a href="https://unlimited-elements.com/post-list-widget-for-elementor">Post List Widget for Elementor (Free)</a> - The Post List widget lets you display your WordPress posts in a list layout with multiple columns. You can also add advanced filtering, pagination, load more button, and even infinite scroll to any post list your desire. </li>
|
|
|
|
|
131 |
<li><a href="https://unlimited-elements.com/post-accordions-for-elementor/">Post Accordion Widget for Elementor (Free)</a></li>
|
|
|
132 |
<li><a href="https://unlimited-elements.com/elementor-author-list-widget/">Author List Widget for Elementor (Pro)</a></li>
|
133 |
<li><a href="https://unlimited-elements.com/masonry-post-grid-widget-for-elementor">Masonry Post Grid Widget for Elementor (Pro)</a></li>
|
134 |
<li><a href="https://unlimited-elements.com/post-tiles-widget-for-elementor">Post Tile Widget for Elementor (Pro)</a></li>
|
135 |
<li><a href="https://unlimited-elements.com/post-sliders/">Post Slider Widget for Elementor (Pro)</a></li>
|
|
|
136 |
<li><a href="https://unlimited-elements.com/blog-card-slider-widget-for-elementor">Post Card Slider Widget for Elementor (Pro)</a></li>
|
137 |
+
<li><a href="https://unlimited-elements.com/post-grid-widget-for-elementor/">Post Grid Widget for Elementor (Pro)</a> - The Post Grid widget places multiple posts in an aesthetic post grid layout. The purpose of this widget is to let you organize and display your posts on your Elementor website.</li>
|
138 |
<li><a href="https://unlimited-elements.com/load-more-infinite-scroll-widget-for-elementor/">Load More / Infinite Scroll Widget for Elementor (Pro)</a> - Add a load more button to your post or product grids. You can even make an infinite scroll effect that works with AJAX.</li>
|
139 |
+
<li><a href="https://unlimited-elements.com/post-magazine-grid-widget-for-elementor/">Post Magazine Grid Widget for Elementor (Pro)</a></li>
|
140 |
<li><a href="https://unlimited-elements.com/post-timeline-widget-for-elementor/">Post Timeline Widget for Elementor (Pro)</a></li>
|
141 |
<li><a href="https://unlimited-elements.com/post-scroll-widget-for-elementor">Post Scroll Widget for Elementor (Pro)</a></li>
|
|
|
142 |
<li><a href="https://unlimited-elements.com/tabs-filter-widget-for-elementor/">Tabs Filter Widget for Elementor (Pro)</a> - The Tabs Filter is the best post filtering widget for Elementor. You can ad post filters using category and tag taxonomies.</li>
|
143 |
<li><a href="https://unlimited-elements.com/taxonomy-terms-widget-for-elementor/">Taxonomy Terms Widget for Elementor (Pro)</a> - Showcase your WordPress tags and categories in different ways using the Taxonomy Widget for Elementor.
|
144 |
|
145 |
</li>
|
146 |
+
<li><a href="https://unlimited-elements.com/post-carousels-for-elementor/">Post Carousel Widget for Elementor (Pro)</a> - The Post Carousel widget allows you to quickly showcase posts, pages, products, or custom post types in a beautiful interactive carousel layout.</li>
|
147 |
<li><a href="https://unlimited-elements.com/post-horizontal-timeline-widget-for-elementor/">Post Horizontal Timeline Widget for Elementor (Pro)</a></li>
|
148 |
</ol>
|
149 |
|
150 |
<h3>Marketing Widgets for Elementor</h3>
|
151 |
<ol>
|
152 |
<li><a href="https://unlimited-elements.com/price-label-product-box-widget-for-elementor/">Product Box Widget for Elementor (Free)</a></li>
|
|
|
|
|
|
|
153 |
<li><a href="https://unlimited-elements.com/timer-countdowns-for-elementor-page-builder/">Timer Countdown Widget for Elementor (Free)</a> - Instantly create a beautiful, animated countdown clock addon, to share on your Elementor website. Count down to a date with your own unique timer.
|
154 |
|
155 |
</li>
|
156 |
<li><a href="https://unlimited-elements.com/call-to-action-button-widget-for-elementor/">Call To Action Button Widget for Elementor (Free)</a> - The Call to Action Button Widget is a tool for creating beautiful buttons that combine an icon, some text, and message notification.</li>
|
157 |
+
<li><a href="https://unlimited-elements.com/statistic-counters-for-elementor">Counter Widget for Elementor (Free)</a> - Showcasing your business statistics and show fun facts and figures on your Elementor website.</li>
|
158 |
<li><a href="https://unlimited-elements.com/price-list-widget-for-elementor/">Price List Widget for Elementor (Free)</a> - A powerful addon that allows displaying a list of items, products, services or features for your business with easy styling options.</li>
|
159 |
<li><a href="https://unlimited-elements.com/event-box-widget-for-elementor">Event Box Widget for Elementor (Free)</a> - Showcase events & special occasions on your websites using this unique Elementor addon.</li>
|
160 |
+
<li><a href="https://unlimited-elements.com/notification-widget-for-elementor">Notification Widget for Elementor (Free)</a> - The Notification widget enables you to display a colored alert box and draw attention to important messages on your Elementor website.</li>
|
|
|
161 |
<li><a href="https://unlimited-elements.com/pricing-table-widget-for-elementor/">Pricing Table Widget for Elementor (Free)</a> - Present the available pricing plans in an easy to read format. Use the Pricing Table widget to help your customers make purchasing decisions.</li>
|
162 |
+
<li><a href="https://unlimited-elements.com/business-hours-widget-for-elementor">Business Hours Widget for Elementor (Free)</a></li>
|
163 |
<li><a href="http://unlimited-elements.com/food-menu-box-widget-for-elementor/">Product Card Widget for Elementor (Free)</a></li>
|
164 |
+
<li><a href="https://unlimited-elements.com/overlay-product-box-widget-for-elementor/">Overlay Product Box Widget for Elementor (Free)</a></li>
|
165 |
+
<li><a href="https://unlimited-elements.com/review-box-widget-for-elementor">Review Box Widget for Elementor (Free)</a> - Simply create and display reviews on your Elementor website to build customers’ trust and increase SEO.</li>
|
166 |
+
<li><a href="https://unlimited-elements.com/list-widget-for-elementor/">List Widget for Elementor (Free)</a> - Create styled ordered and unordered lists easily. The ordered list will add index numbers automatically to your list items.</li>
|
167 |
<li><a href="https://unlimited-elements.com/timer-countdown-banner-widget-for-elementor">Timer Countdown Banner Widget for Elementor (Pro)</a> - An awesome countdown banner with a a call to action button.</li>
|
168 |
<li><a href="https://unlimited-elements.com/card-testimonial-review-carousel-widget-for-elementor">Review Carousel Widget for Elementor (Pro)</a> - The Reviews Carousel increases the visibility reviews you want to highlight to your users by letting you display them throughout your site in an interactive carousel format. </li>
|
169 |
<li><a href="https://unlimited-elements.com/list-marquee-widget-for-elementor/">List Marquee Widget for Elementor (Pro)</a></li>
|
170 |
+
<li><a href="https://unlimited-elements.com/copy-coupon-code-widget-for-elementor">Copy Coupon Code Widget for Elementor (Pro)</a> - Click to copy coupon code to the clipboard. This widgets makes it easy for users to redeem your promotions coupon codes.</li>
|
171 |
<li><a href="https://unlimited-elements.com/pricing-flip-box-widget-for-elementor/">Pricing Table Flip Box Widget for Elementor (Pro)</a> - The Pricing Table Flip Box allows you to showcase the prices for your products, services, or packages in a beautiful flip box pricing table.</li>
|
|
|
172 |
<li><a href="https://unlimited-elements.com/event-list-widget-for-elementor/">Event List Widget for Elementor (Pro)</a> - The event list widget is a way to easily show your recent events like concerts, conferences, parties or special occasions.
|
173 |
</li>
|
174 |
+
<li><a href="https://unlimited-elements.com/pricing-plans-widget-for-elementor">Pricing Plans Widget for Elementor (Pro)</a> - Use the Pricing Plans widget to display all the information to your potential clients in the clearest and comparable way and help them make a choice.</li>
|
175 |
<li><a href="https://unlimited-elements.com/price-box-widget-for-elementor/">Price Box Widget for Elementor (Pro)</a></li>
|
176 |
<li><a href="https://unlimited-elements.com/icon-mobile-menu-for-elementor">Icon Mobile Menu Widget for Elementor (Pro)</a> - A perfect way to add an icon menu for making your CTA buttons stand out for website visitors using mobile devices.</li>
|
|
|
177 |
<li><a href="https://unlimited-elements.com/whatsapp-chat-widget-for-elementor">WhatsApp Chat Widget for Elementor (Pro)</a> - A floating WhatsApp button that allows your website visitors to start a chat conversation from your website directly to your WhatsApp phone number with just one click.</li>
|
178 |
+
<li><a href="https://unlimited-elements.com/food-menu-carousel-widget-for-elementor">Product Carousel Widget for Elementor (Pro)</a></li>
|
|
|
179 |
<li><a href="https://unlimited-elements.com/two-column-product-bullets-widget-for-elementor/">Product Highlights Widget for Elementor (Pro)</a> - Design a visually attractive product feature lists that will help your potential buyers to make purchase decision and learn more about your products. </li>
|
180 |
+
<li><a href="https://unlimited-elements.com/memory-game-widget-for-elementor">Memory Game Widget for Elementor (Pro)</a></li>
|
181 |
+
<li><a href="https://unlimited-elements.com/floating-chat-buttons-widget-for-elementor">Floating Chat Buttons Widget for Elementor (Pro)</a> - Floating action buttons that display the primary actions in your Elementor website. Provide quick access to social icons or any important or common actions to increase conversions.</li>
|
182 |
+
<li><a href="https://unlimited-elements.com/google-maps-widget-for-elementor">Unlimited Google Maps Widget for Elementor (Pro)</a> - Display beautiful google maps with multiple markers on your Elementor website in a matter of seconds.</li>
|
183 |
+
<li><a href="https://unlimited-elements.com/product-bullets-widget-for-elementor">Product Bullets Widget for Elementor (Pro)</a></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
</ol>
|
185 |
|
186 |
+
<h3>WooCommerce for Elementor</h3>
|
187 |
<ol>
|
188 |
+
<li><a href="https://unlimited-elements.com/woocommerce-product-list-widget-for-elementor/">WooCommerce Product List Widget for Elementor (Free)</a> - Showcase your WooCommerce products in an attractive list layout with many customization options. You can choose how many products to show per page, what information to display about each product, and much more.</li>
|
189 |
+
<li><a href="https://unlimited-elements.com/woocommerce-product-grid-widget-for-elementor/">WooCommerce Product Grid Widget for Elementor (Pro)</a> - The WooCommerce Product Grid is a powerful widget that allows you to present your products in the most appealing style on your Elementor pages. Showcase your products in multiple layouts and design the with unlimited customization possibilities.</li>
|
190 |
+
<li><a href="https://unlimited-elements.com/woocommerce-product-carousel-widget-for-elementor">WooCommerce Product Carousel Widget for Elementor (Pro)</a> - The Woocommerce product carousel helps showcase your Woocommerce products on any Elementor page in an interactive carousel format.</li>
|
191 |
+
<li><a href="https://unlimited-elements.com/woocommerce-product-slider-widget-for-elementor">WooCommerce Product Slider Widget for Elementor (Pro)</a></li>
|
192 |
+
<li><a href="https://unlimited-elements.com/woocommerce-category-grid-for-elemenetor/">WooCommerce Category Grid Widget for Elementor (Pro)</a></li>
|
193 |
+
<li><a href="https://unlimited-elements.com/woocommerce-category-carousel-widget-for-elementor/">WooCommerce Category Carousel Widget for Elementor (Pro)</a></li>
|
194 |
</ol>
|
195 |
|
196 |
+
<h3>Remote Control Widgets for Elementor</h3>
|
197 |
<ol>
|
198 |
+
<li><a href="https://unlimited-elements.com/remote-control-widgets">Remote Arrows Widget for Elementor (Free)</a></li>
|
199 |
+
<li><a href="https://unlimited-elements.com/remote-control-widgets">Remote Bullets Widget for Elementor (Free)</a></li>
|
200 |
+
<li><a href="https://unlimited-elements.com/remote-control-widgets">Remote Counter Widget for Elementor (Free)</a></li>
|
201 |
+
<li><a href="https://unlimited-elements.com/remote-control-widgets">Remote Play Pause Widget for Elementor (Free)</a></li>
|
202 |
+
<li><a href="https://unlimited-elements.com/remote-tabs-widget-for-elementor">Remote Tabs Widget for Elementor (Pro)</a> - Control your content using remote control tabs to create advanced interactive layouts.</li>
|
203 |
+
<li><a href="https://unlimited-elements.com/remote-control-widgets">Remote Item Navigation Widget for Elementor (Pro)</a></li>
|
204 |
</ol>
|
205 |
|
206 |
<h3>Menu Widgets for Elementor</h3>
|
207 |
<ol>
|
208 |
<li><a href="https://unlimited-elements.com/fullscreen-menu-widget-for-elementor/">Fullscreen Menu Widget for Elementor (Free)</a> - Create an awesome Elementor Full-Screen Menu easily using this widget. The easiest way to add a hamburger icon that triggers a fullscreen menu overlay with a close button.
|
209 |
</li>
|
210 |
+
<li><a href="https://unlimited-elements.com/simple-list-menu-widget-for-elementor">List Menu Widget for Elementor (Free)</a> - The List Menu widget is a responsive and free WordPress menu for Elementor. You can easily use the widget to add an awesome menu to your website and improve website navigation. It is easy to customize and configure.</li>
|
211 |
<li><a href="http://unlimited-elements.com/side-menu-widget-for-elementor">Side Menu Widget for Elementor (Pro)</a> - Off Canvas sidebar with a WordPress menu inside that can include icon links and a search bar. Use the toggle button to open the side menu and the close icon to close it.</li>
|
212 |
+
<li><a href="https://unlimited-elements.com/liquid-fullscreen-menu-widget-for-elementor">Liquid Full Screen Menu Widget for Elementor (Pro)</a> - A toggle button that animates into a fullscreen menu with a trendy liquid goo effect.
|
213 |
+
|
214 |
+
Code Credit:
|
215 |
https://github.com/ykob/shape-overlays</li>
|
216 |
<li><a href="https://unlimited-elements.com/one-page-scroll-navigation-widget-for-elementor">One Page Scroll Navigation Widget for Elementor (Pro)</a></li>
|
217 |
<li><a href="http://unlimited-elements.com/circle-menu-widget-for-elementor">Circle Menu Widget for Elementor (Pro)</a></li>
|
218 |
+
<li><a href="https://unlimited-elements.com/accordion-menu-widget-for-elementor">Accordion Menu Widget for Elementor (Pro)</a> - This widget is an excellent way of adding an interactive accordion menu to your Elementor website. It works with the WordPress menu system and allows you to create attractive accordion menus with just a couple of clicks.</li>
|
219 |
+
</ol>
|
220 |
+
|
221 |
+
<h3>Content Widgets for Elementor</h3>
|
222 |
+
<ol>
|
223 |
+
<li><a href="https://unlimited-elements.com/content-tabs-widget-for-elementor/">Content Tabs Widget for Elementor (Free)</a> - The Content Tabs widget allows users to navigate various types of content on your website in an interactive tabs layout.</li>
|
224 |
+
<li><a href="https://unlimited-elements.com/content-accordion-widget-for-elementor/">Content Accordion Widget for Elementor (Free)</a></li>
|
225 |
+
<li><a href="https://unlimited-elements.com/unlimited-grid-widget-for-elementor/">Unlimited Grid Widget for Elementor (Pro)</a> - Create advanced content layouts using an easy-to-use grid system with ultimate flexibility.</li>
|
226 |
+
<li><a href="https://unlimited-elements.com/content-switcher-widget-for-elementor/">Content Switcher Widget for Elementor (Pro)</a> - Allow users to switch between two or more types of content using interactive toggle buttons. You can even load Elementor templates as content to make advanced content switcher layouts.
|
227 |
+
|
228 |
+
</li>
|
229 |
+
<li><a href="https://unlimited-elements.com/content-slider-widget-for-elementor">Content Slider Widget for Elementor (Pro)</a> - Content slider is the most extensive and user-friendly Elementor widget for building amazing sliders. Create stunning animated sliders inside of your web designs in seconds.</li>
|
230 |
+
<li><a href="https://unlimited-elements.com/content-carousel-widget-for-elementor/">Content Carousel Widget for Elementor (Pro)</a> - Content carousel allows you to create an interactive carousel where the content for each slide can be anything you want: images, text, HTML, and even Elementor templates.</li>
|
231 |
+
<li><a href="https://unlimited-elements.com/content-grid-widget-for-elementor/">Content Grid Widget for Elementor (Pro)</a></li>
|
232 |
+
<li><a href="https://unlimited-elements.com/content-ticker-widget-for-elementor/">Content Ticker Widget for Elementor (Pro)</a></li>
|
233 |
</ol>
|
234 |
|
235 |
<h3>Carousel Widgets for Elementor</h3>
|
236 |
<ol>
|
237 |
<li><a href="https://unlimited-elements.com/card-carousel-widget-for-elementor/">Card Carousel Widget for Elementor (Free)</a> - Use the card carousel widget to display two or more pieces of content in a carousel format. Create any kind of carousel you can think about.</li>
|
238 |
+
<li><a href="https://unlimited-elements.com/coverflow-carousel-widget-for-elementor/">Coverflow Carousel Widget for Elementor (Pro)</a> - Coverflow carousel is a special kind of widget, that shows slides next to each other with a 3D effect and a reflection. This widget supports 4 different styles: Coverflow, Flat, Wheel, and Carousel.</li>
|
239 |
<li><a href="https://unlimited-elements.com/icon-carousel-widget-for-elementor/">Icon Carousel Widget for Elementor (Pro)</a></li>
|
240 |
<li><a href="https://unlimited-elements.com/image-card-carousel-widget-for-elementor">Image Card Carousel Widget for Elementor (Pro)</a></li>
|
241 |
<li><a href="https://unlimited-elements.com/material-carousel-widget-for-elementor/">Material Carousel Widget for Elementor (Pro)</a></li>
|
245 |
<li><a href="https://unlimited-elements.com/justified-image-carousel-widget-for-elementor/">Justified Image Carousel Widget for Elementor (Pro)</a></li>
|
246 |
</ol>
|
247 |
|
248 |
+
<h3>Infographic Widgets for Elementor</h3>
|
249 |
<ol>
|
250 |
+
<li><a href="https://unlimited-elements.com/unlimited-timeline-widget-for-elementor">Unlimited Timeline Widget for Elementor (Free)</a> - Showcase your story or company history in a vertical timeline layout using the powerful Unlimited Timeline addon for Elementor.</li>
|
251 |
+
<li><a href="https://unlimited-elements.com/linear-progress-bar-widget-for-elementor">Linear Progress Bar Widget for Elementor (Free)</a></li>
|
252 |
+
<li><a href="https://unlimited-elements.com/pie-chart-for-elementor">Pie chart Widget for Elementor (Free)</a></li>
|
253 |
+
<li><a href="https://unlimited-elements.com/line-chart-for-elementor">Line Chart Widget for Elementor (Free)</a></li>
|
254 |
+
<li><a href="https://unlimited-elements.com/unlimited-charts-widget-for-elementor">Unlimited Charts Widget for Elementor (Pro)</a> - The easy way to include animated, interactive graphs and charts on your Elementor website. 6 Chart styles included: Bar Chart, Line Chart, Pie Chart, Doughnut Chart, Radar Chart and Polar Area Chart.
|
255 |
+
</li>
|
256 |
+
<li><a href="https://unlimited-elements.com/interactive-circle-infographic-widget-for-elementor/">Interactive Circle Infographic Widget for Elementor (Pro)</a> - The Circle Infographic widget for Elementor is a simple and engaging way to present data, processes, concepts, structures and more. Helps your audience understand an entire cycle using a circular interactive tab layout.
|
257 |
+
|
258 |
+
</li>
|
259 |
+
<li><a href="https://unlimited-elements.com/funnel-pyramid-widget-for-elementor/">Funnel & Pyramid Widget for Elementor (Pro)</a> - Funnel & Pyramid charts are in the shape of a triangle. These charts are best used when your data is organized in some kind of hierarchical way and the levels indicate some kind of progressive order.</li>
|
260 |
+
<li><a href="https://unlimited-elements.com/step-process-widget-for-elementor">Step Process Widget for Elementor (Pro)</a> - Showcase process/steps with unique layout variations. Create visual diagrams of step by step instructions to simplify processes to your website visitors.</li>
|
261 |
+
<li><a href="https://unlimited-elements.com/circle-progress-bar-widget-for-elementor/">Circle Progress Bar Widget for Elementor (Pro)</a></li>
|
262 |
+
<li><a href="https://unlimited-elements.com/semi-circle-progress-bar-widget-for-elementor/">Semi Circle Progress Bar Widget for Elementor (Pro)</a></li>
|
263 |
+
<li><a href="https://unlimited-elements.com/vertical-progress-bar-widget-for-elementor">Vertical Progress Bar Widget for Elementor (Pro)</a></li>
|
264 |
+
</ol>
|
265 |
+
|
266 |
+
<h3>Dynamic Loops for Elementor</h3>
|
267 |
+
<ol>
|
268 |
+
<li><a href="https://unlimited-elements.com/dynamic-template-grid-widget-for-elementor/">Dynamic Template Grid Widget for Elementor (Pro)</a></li>
|
269 |
+
<li><a href="https://unlimited-elements.com/dynamic-template-carousel-widget-for-elementor/">Dynamic Template Carousel Widget for Elementor (Pro)</a></li>
|
270 |
+
<li><a href="https://unlimited-elements.com/dynamic-template-tabs-widget-for-elementor/">Dynamic Template Tabs Widget for Elementor (Pro)</a> - The Dynamic Template Tabs widget allows you to design a loop item from a single post template and create an interactive tabs layout to showcase posts with custom fields and layout.</li>
|
271 |
+
<li><a href="https://unlimited-elements.com/dynamic-template-slider-widget-for-elementor">Dynamic Template Slider Widget for Elementor (Pro)</a></li>
|
272 |
+
<li><a href="https://unlimited-elements.com/dynamic-template-accordion-widget-for-elementor/">Dynamic Template Accordion Widget for Elementor (Pro)</a></li>
|
273 |
</ol>
|
274 |
|
275 |
<h3>Media Widgets for Elementor</h3>
|
289 |
<li><a href="https://unlimited-elements.com/thumb-list-video-gallery-widget-for-elementor/">Play List Video Gallery Widget for Elementor (Pro)</a></li>
|
290 |
</ol>
|
291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
<h3>Testimonials for Elementor</h3>
|
293 |
<ol>
|
294 |
<li><a href="https://unlimited-elements.com/box-testimonial-widget-for-elementor/">Testimonial Box Widget for Elementor (Free)</a></li>
|
309 |
|
310 |
<h3>Content Boxes for Elementor</h3>
|
311 |
<ol>
|
312 |
+
<li><a href="https://unlimited-elements.com/image-zoom-content-box-widget-for-elementor/">Image Zoom Content Box Widget for Elementor (Free)</a> - Use the widget to draw attention to vital facts in a professional yet fun way. It will allow your audience to learn about your products, features, services, or events in one spot.</li>
|
313 |
<li><a href="https://unlimited-elements.com/image-card-content-box-widget-for-elementor/">Image Card Widget for Elementor (Free)</a></li>
|
314 |
<li><a href="https://unlimited-elements.com/hover-text-reveal-content-box-widget-for-elementor/">Content Box Hover Text Reveal Widget for Elementor (Free)</a></li>
|
315 |
<li><a href="https://unlimited-elements.com/icon-image-content-box-widget-for-elementor">Icon Image Content Box Widget for Elementor (Free)</a></li>
|
323 |
<h3>Instagram Widgets for Elementor</h3>
|
324 |
<ol>
|
325 |
<li><a href="https://unlimited-elements.com/latest-instagram-image-widget-for-elementor">Instagram Latest Image Widget for Elementor (Free)</a></li>
|
326 |
+
<li><a href="https://unlimited-elements.com/grid-instagram-widget-for-elementor">Instagram Feed Widget for Elementor (Pro)</a> - The Instagram Feed widget is the best solution for showcasing images from your Instagram profile on your Elementor website. It's a flexible and simple solution for amazing-looking Instagram layouts.</li>
|
327 |
<li><a href="https://unlimited-elements.com/instagram-teaser-box-for-elementor/">Instagram Box Widget for Elementor (Pro)</a></li>
|
328 |
<li><a href="https://unlimited-elements.com/instagram-card-widget-for-elementor/">Instagram Card Widget for Elementor (Pro)</a></li>
|
329 |
<li><a href="https://unlimited-elements.com/metro-instagram-widget-for-elementor">Instagram Metro Grid Widget for Elementor (Pro)</a></li>
|
341 |
<ol>
|
342 |
<li><a href="https://unlimited-elements.com/link-hover-effects/">Link Hover Effects Widget for Elementor (Free)</a></li>
|
343 |
<li><a href="https://unlimited-elements.com/icon-hover-effects-for-elementor/">Icon Hover Effects Widget for Elementor (Free)</a></li>
|
344 |
+
<li><a href="https://unlimited-elements.com/creative-button-hover-widget-for-elementor/">Creative Button Hovers Widget for Elementor (Free)</a> - Quickly add awesome buttons with creative hover effects in your Elementor pages. There is no limit to your creativity with our button hover effects widget.</li>
|
345 |
<li><a href="https://unlimited-elements.com/banner-hover-effect-widgets-for-elementor/">Banner Hover Effects Widget for Elementor (Pro)</a></li>
|
346 |
<li><a href="https://unlimited-elements.com/scrolling-screenshot-widget-for-elementor">Scrolling Screenshot Widget for Elementor (Pro)</a> - Add a long screenshot that will scroll when you hover over it.</li>
|
347 |
<li><a href="https://unlimited-elements.com/ihover-for-elementor/">iHover Effect Widget for Elementor (Pro)</a></li>
|
354 |
<li><a href="https://unlimited-elements.com/video-play-button-popup-widget-for-elementor/">Video Play Button Widget for Elementor (Free)</a></li>
|
355 |
<li><a href="https://unlimited-elements.com/button-group-widget-for-elementor/">Button Group Widget for Elementor (Free)</a></li>
|
356 |
<li><a href="https://unlimited-elements.com/underline-animated-button-widget-for-elementor/">Underline Animated Button Widget for Elementor (Free)</a></li>
|
357 |
+
<li><a href="https://unlimited-elements.com/multi-line-button-widget-for-elementor/">Multi Line Button Widget for Elementor (Free)</a> - A button with more than one line of text and an optional icon.</li>
|
358 |
<li><a href="https://unlimited-elements.com/toggle-text-button-widget-for-elementor/">Toggle Text Button Widget for Elementor (Free)</a></li>
|
359 |
<li><a href="https://unlimited-elements.com/parellogram-button-widget-for-elementor/">Parallelogram Button Widget for Elementor (Free)</a></li>
|
360 |
<li><a href="https://unlimited-elements.com/icon-pointer-button-widget-for-elementor/">Icon Pointer Button Widget for Elementor (Free)</a></li>
|
379 |
<li><a href="https://unlimited-elements.com/dual-color-heading-widget-for-elementor/">Dual Color Heading Widget for Elementor (Free)</a></li>
|
380 |
<li><a href="https://unlimited-elements.com/stroke-text-effect-widget-for-elementor/">Stroke Text Effect Widget for Elementor (Free)</a></li>
|
381 |
<li><a href="https://unlimited-elements.com/gradient-text-effect-for-elementor/">Gradient Text Effect Widget for Elementor (Free)</a></li>
|
382 |
+
<li><a href="https://unlimited-elements.com/text-marquee-for-elementor/">Text Marquee Effect Widget for Elementor (Free)</a> - The Text Marquee widget is a scrolling piece of text displayed horizontally across your Elementor webpage.</li>
|
383 |
<li><a href="https://unlimited-elements.com/futuristic-typing-text-effect-widget-for-elementor/">Futuristic Typing Text Effect Widget for Elementor (Pro)</a></li>
|
384 |
<li><a href="https://unlimited-elements.com/animated-split-text-widget-for-elementor/">Animated Split Text Widget for Elementor (Pro)</a></li>
|
385 |
<li><a href="https://unlimited-elements.com/sideways-vertical-text-widget-for-elementor">Sideways Vertical Text Widget for Elementor (Pro)</a></li>
|
459 |
|
460 |
|
461 |
|
462 |
+
|
463 |
== Installation ==
|
464 |
|
465 |
Note : This plugin works with Elementor. Make sure you have [Elementor](https://wordpress.org/plugins/elementor/) installed.
|
470 |
|
471 |
== Changelog ==
|
472 |
|
473 |
+
version 1.5.11: 2022-04-13
|
474 |
+
|
475 |
+
* Feature: made option to put elementor post_content inside post widget if the post made by elementor
|
476 |
+
* Feature: added additional fields to getPostAuthor function like avatar url and author meta
|
477 |
+
* Feature: show the "no posts" message with filters in post list / grid
|
478 |
+
* Feature: add background location (back/front) to background widgets
|
479 |
+
* Feature: done option to get post parent with the posts in posts selection
|
480 |
+
* Fix: set prices display in woocommerce widgets including tax
|
481 |
+
* Fix: fixed editor js files didn't loaded bug
|
482 |
+
* Fix: fixed css output with dynamic template and inline css mode
|
483 |
+
* Fix: fixed the ajax pagination that now works with post based gallery widget
|
484 |
+
* Fix: fixed filters scripts loading before jquery in js
|
485 |
+
* Fix: allow to select empty terms in term selection control
|
486 |
+
* Change: set default values of responsive number / slider / dropdown controls to desktop default values
|
487 |
+
|
488 |
+
|
489 |
version 1.5.10: 2022-04-04
|
490 |
|
491 |
* Fix: fixed title and description source in gallery source selection
|
1621 |
|
1622 |
= What if i update to the Premium version after using the Free version? =
|
1623 |
|
1624 |
+
Your existing elements/content will work with the premium version. So you won’t lose your any of your hard work.
|
1625 |
|
1626 |
= Can i get a refund? =
|
1627 |
|
release_log.txt
CHANGED
@@ -1,4 +1,22 @@
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
version 1.5.10:
|
3 |
|
4 |
-bug fix: fixed title and description source in gallery source selection
|
@@ -8,7 +26,6 @@ version 1.5.10:
|
|
8 |
-feature: added option for second items html refresh in ajax filters
|
9 |
|
10 |
|
11 |
-
|
12 |
version 1.5.9:
|
13 |
|
14 |
-bug fix: fixed simple meta output for post list
|
1 |
|
2 |
+
version 1.5.11:
|
3 |
+
|
4 |
+
-feature: made option to put elementor post_content inside post widget if the post made by elementor
|
5 |
+
-feature: added additional fields to getPostAuthor function like avatar url and author meta
|
6 |
+
-bug fix: set prices display in woocommerce widgets including tax
|
7 |
+
-bug fix: fixed editor js files didn't loaded bug
|
8 |
+
-bug fix: fixed css output with dynamic template and inline css mode
|
9 |
+
-feature: done option to get post parent with the posts in posts selection
|
10 |
+
-bug fix: fixed the ajax pagination that now works with post based gallery widget
|
11 |
+
-bug fix: fixed filters scripts loading before jquery in js
|
12 |
+
-change: set default values of responsive number / slider / dropdown controls to desktop default values
|
13 |
+
-bug fix: allow to select empty terms in term selection control
|
14 |
+
-feature: show the "no posts" message with filters in post list / grid
|
15 |
+
-feature: add background location (back/front) to background widgets
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
version 1.5.10:
|
21 |
|
22 |
-bug fix: fixed title and description source in gallery source selection
|
26 |
-feature: added option for second items html refresh in ajax filters
|
27 |
|
28 |
|
|
|
29 |
version 1.5.9:
|
30 |
|
31 |
-bug fix: fixed simple meta output for post list
|
unlimited_elements.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin URI: http://unlimited-elements.com
|
5 |
* Description: Unlimited Elements - Huge Widgets Pack for Elementor Website Builder, with html/css/js widget creator and editor
|
6 |
* Author: Unlimited Elements
|
7 |
-
* Version: 1.5.
|
8 |
* Author URI: http://unlimited-elements.com
|
9 |
* Text Domain: unlimited-elements-for-elementor
|
10 |
* Domain Path: /languages
|
4 |
* Plugin URI: http://unlimited-elements.com
|
5 |
* Description: Unlimited Elements - Huge Widgets Pack for Elementor Website Builder, with html/css/js widget creator and editor
|
6 |
* Author: Unlimited Elements
|
7 |
+
* Version: 1.5.11
|
8 |
* Author URI: http://unlimited-elements.com
|
9 |
* Text Domain: unlimited-elements-for-elementor
|
10 |
* Domain Path: /languages
|
views/objects/addon_view_childparams.class.php
CHANGED
@@ -777,6 +777,21 @@ function {{uc_id}}_start(){
|
|
777 |
return($arrParams);
|
778 |
}
|
779 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
780 |
/**
|
781 |
* get custom fields text
|
782 |
*/
|
@@ -872,9 +887,12 @@ function {{uc_id}}_start(){
|
|
872 |
*/
|
873 |
private function getChildParams_post_addAuthor($arrParams){
|
874 |
|
875 |
-
$strCode = "";
|
876 |
$strCode .= "{% set author = getPostAuthor([param_prefix].author_id) %}\n\n";
|
877 |
-
$strCode .= "{{author.id}} {{author.name}} {{author.email}}\n";
|
|
|
|
|
|
|
878 |
|
879 |
$arrParams[] = $this->createChildParam("getPostAuthor", null, array("raw_insert_text"=>$strCode));
|
880 |
|
@@ -1160,6 +1178,7 @@ function {{uc_id}}_start(){
|
|
1160 |
$arrParams = $this->getChildParams_post_addAuthor($arrParams);
|
1161 |
$arrParams = $this->getChildParams_post_addPostMeta($arrParams);
|
1162 |
$arrParams = $this->getChildParams_post_putHtmlData($arrParams);
|
|
|
1163 |
|
1164 |
$isWooAdded = false;
|
1165 |
|
777 |
return($arrParams);
|
778 |
}
|
779 |
|
780 |
+
/**
|
781 |
+
* get number of post comments
|
782 |
+
*/
|
783 |
+
private function getChildParams_post_numComments($arrParams){
|
784 |
+
|
785 |
+
$strText = "\n";
|
786 |
+
$strText .= "{% set num_comments = ucfunc(\"get_num_comments\", [param_prefix].id) %} \n\n";
|
787 |
+
$strText .= "{{num_comments}} \n\n";
|
788 |
+
|
789 |
+
$arrParams[] = $this->createChildParam("num_comments", null, array("raw_insert_text"=>$strText));
|
790 |
+
|
791 |
+
return($arrParams);
|
792 |
+
}
|
793 |
+
|
794 |
+
|
795 |
/**
|
796 |
* get custom fields text
|
797 |
*/
|
887 |
*/
|
888 |
private function getChildParams_post_addAuthor($arrParams){
|
889 |
|
890 |
+
$strCode = "{# Use this function this way: getPostAuthor(username, getMeta=true/false, getAvatar=true/false) #}\n\n";
|
891 |
$strCode .= "{% set author = getPostAuthor([param_prefix].author_id) %}\n\n";
|
892 |
+
$strCode .= "{{author.id}} {{author.name}} {{author.email}}\n\n";
|
893 |
+
$strCode .= "{% set author2 = getPostAuthor([param_prefix].author_id,true,true) %}\n\n";
|
894 |
+
$strCode .= "<img src=\"{{author2.avatar_url|raw}}\">\n\n";
|
895 |
+
$strCode .= "{{printVar(author2)}}\n";
|
896 |
|
897 |
$arrParams[] = $this->createChildParam("getPostAuthor", null, array("raw_insert_text"=>$strCode));
|
898 |
|
1178 |
$arrParams = $this->getChildParams_post_addAuthor($arrParams);
|
1179 |
$arrParams = $this->getChildParams_post_addPostMeta($arrParams);
|
1180 |
$arrParams = $this->getChildParams_post_putHtmlData($arrParams);
|
1181 |
+
$arrParams = $this->getChildParams_post_numComments($arrParams);
|
1182 |
|
1183 |
$isWooAdded = false;
|
1184 |
|