Version Description
- Notice: FIFU Premium has now a 30-day money-back guarantee; notice: support to WooCommerce Import and WP All Import are available only in the Premium version now; improvement: integration with User Submitted Posts plugin.
Download this release
Release Info
Developer | marceljm |
Plugin | Featured Image From URL |
Version | 3.4.3 |
Comparing to | |
See all releases |
Code changes from version 3.4.2 to 3.4.3
- admin/html/menu.html +43 -71
- admin/meta-box.php +0 -24
- admin/rapid-addon.php +0 -1256
- admin/strings.php +7 -0
- admin/wai-addon.php +0 -51
- featured-image-from-url.php +1 -2
- readme.txt +8 -8
admin/html/menu.html
CHANGED
@@ -2302,8 +2302,44 @@
|
|
2302 |
</div>
|
2303 |
|
2304 |
<div class="box">
|
2305 |
-
<h2><?php $fifu['title']['
|
2306 |
<div class="greybox">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2307 |
<?php $fifu['import']['desc']() ?>
|
2308 |
<br/>
|
2309 |
<br/>
|
@@ -2312,41 +2348,9 @@
|
|
2312 |
<ul>
|
2313 |
<li><a href="#tabs-3"><?php $fifu['import']['tab']['import']() ?></a></li>
|
2314 |
<li><a href="#tabs-1"><?php $fifu['import']['tab']['custom']() ?></a></li>
|
2315 |
-
<li><a href="#tabs-2"><?php $fifu['import']['tab']['custom']() ?> (premium)</a></li>
|
2316 |
<li><a href="#tabs-4"><?php $fifu['import']['tab']['priority']() ?></a></li>
|
2317 |
</ul>
|
2318 |
<div id="tabs-1">
|
2319 |
-
|
2320 |
-
<table style="text-align:left">
|
2321 |
-
<tr>
|
2322 |
-
<th>
|
2323 |
-
</th>
|
2324 |
-
<th>
|
2325 |
-
<?php $fifu['import']['custom']['key']() ?>
|
2326 |
-
</th>
|
2327 |
-
</tr>
|
2328 |
-
<tr>
|
2329 |
-
<th>
|
2330 |
-
<?php $fifu['import']['custom']['image']() ?>
|
2331 |
-
</th>
|
2332 |
-
<th>
|
2333 |
-
fifu_image_url
|
2334 |
-
</th>
|
2335 |
-
</tr>
|
2336 |
-
<tr>
|
2337 |
-
<th>
|
2338 |
-
<?php $fifu['import']['custom']['alt']() ?>
|
2339 |
-
</th>
|
2340 |
-
<th>
|
2341 |
-
fifu_image_alt
|
2342 |
-
</th>
|
2343 |
-
</tr>
|
2344 |
-
</table>
|
2345 |
-
|
2346 |
-
<br/>
|
2347 |
-
</div>
|
2348 |
-
|
2349 |
-
<div id="tabs-2">
|
2350 |
<table style="text-align:left">
|
2351 |
<tr>
|
2352 |
<th>
|
@@ -2454,40 +2458,6 @@
|
|
2454 |
</div>
|
2455 |
</div>
|
2456 |
|
2457 |
-
<div class="box">
|
2458 |
-
<h2><?php $fifu['title']['grid']() ?></h2>
|
2459 |
-
<div class="greybox">
|
2460 |
-
<?php $fifu['grid']['desc']() ?>
|
2461 |
-
</div>
|
2462 |
-
<br>
|
2463 |
-
<table style="text-align:left">
|
2464 |
-
<tr>
|
2465 |
-
<th>
|
2466 |
-
<form
|
2467 |
-
id="fifu_form_grid_category"
|
2468 |
-
action="javascript:void(0)"
|
2469 |
-
method="post">
|
2470 |
-
<input
|
2471 |
-
type="submit"
|
2472 |
-
href="javascript:void(0)"
|
2473 |
-
id="fifu_toggle_grid_category"
|
2474 |
-
onclick="invert('grid_category')"
|
2475 |
-
name="fifu_toggle_grid_category"
|
2476 |
-
class="<?php echo $enable_grid_category; ?>"
|
2477 |
-
value=""
|
2478 |
-
style="display:block;border:none">
|
2479 |
-
|
2480 |
-
<input
|
2481 |
-
type="hidden"
|
2482 |
-
id="fifu_input_grid_category"
|
2483 |
-
name="fifu_input_grid_category"
|
2484 |
-
value="" >
|
2485 |
-
</form>
|
2486 |
-
</th>
|
2487 |
-
</tr>
|
2488 |
-
</table>
|
2489 |
-
</div>
|
2490 |
-
|
2491 |
<div class="box">
|
2492 |
<div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
|
2493 |
<h2><?php $fifu['title']['fields']() ?></h2>
|
@@ -2576,8 +2546,10 @@
|
|
2576 |
|
2577 |
<div id="tabs-p">
|
2578 |
<div class="box">
|
|
|
2579 |
<h2><?php $fifu['title']['addon']() ?></h2>
|
2580 |
-
|
|
|
2581 |
<?php $fifu['addon']['desc']() ?>
|
2582 |
<br/>
|
2583 |
<br/>
|
@@ -2671,7 +2643,7 @@
|
|
2671 |
<i class="fab fa-facebook" style="font-size:30px"></i>
|
2672 |
</td>
|
2673 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2674 |
-
<i class="fas fa-
|
2675 |
</td>
|
2676 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2677 |
<i class="fas fa-tachometer-alt" style="font-size:30px"></i>
|
@@ -2682,7 +2654,7 @@
|
|
2682 |
<i><?php $fifu['support']['facebook']() ?></i>
|
2683 |
</td>
|
2684 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2685 |
-
<i><?php $fifu['support']['
|
2686 |
</td>
|
2687 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2688 |
<i><?php $fifu['support']['speed']() ?></i>
|
@@ -2693,7 +2665,7 @@
|
|
2693 |
<?php $fifu['support']['facebook-desc']() ?>
|
2694 |
</td>
|
2695 |
<td style="vertical-align: top;">
|
2696 |
-
<?php $fifu['support']['
|
2697 |
</td>
|
2698 |
<td style="vertical-align: top;">
|
2699 |
<?php $fifu['support']['speed-desc']() ?>
|
2302 |
</div>
|
2303 |
|
2304 |
<div class="box">
|
2305 |
+
<h2><?php $fifu['title']['grid']() ?></h2>
|
2306 |
<div class="greybox">
|
2307 |
+
<?php $fifu['grid']['desc']() ?>
|
2308 |
+
</div>
|
2309 |
+
<br>
|
2310 |
+
<table style="text-align:left">
|
2311 |
+
<tr>
|
2312 |
+
<th>
|
2313 |
+
<form
|
2314 |
+
id="fifu_form_grid_category"
|
2315 |
+
action="javascript:void(0)"
|
2316 |
+
method="post">
|
2317 |
+
<input
|
2318 |
+
type="submit"
|
2319 |
+
href="javascript:void(0)"
|
2320 |
+
id="fifu_toggle_grid_category"
|
2321 |
+
onclick="invert('grid_category')"
|
2322 |
+
name="fifu_toggle_grid_category"
|
2323 |
+
class="<?php echo $enable_grid_category; ?>"
|
2324 |
+
value=""
|
2325 |
+
style="display:block;border:none">
|
2326 |
+
|
2327 |
+
<input
|
2328 |
+
type="hidden"
|
2329 |
+
id="fifu_input_grid_category"
|
2330 |
+
name="fifu_input_grid_category"
|
2331 |
+
value="" >
|
2332 |
+
</form>
|
2333 |
+
</th>
|
2334 |
+
</tr>
|
2335 |
+
</table>
|
2336 |
+
</div>
|
2337 |
+
|
2338 |
+
<div class="box">
|
2339 |
+
<div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
|
2340 |
+
<h2><?php $fifu['title']['import']() ?></h2>
|
2341 |
+
|
2342 |
+
<div class="greybox" id="grad2">
|
2343 |
<?php $fifu['import']['desc']() ?>
|
2344 |
<br/>
|
2345 |
<br/>
|
2348 |
<ul>
|
2349 |
<li><a href="#tabs-3"><?php $fifu['import']['tab']['import']() ?></a></li>
|
2350 |
<li><a href="#tabs-1"><?php $fifu['import']['tab']['custom']() ?></a></li>
|
|
|
2351 |
<li><a href="#tabs-4"><?php $fifu['import']['tab']['priority']() ?></a></li>
|
2352 |
</ul>
|
2353 |
<div id="tabs-1">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2354 |
<table style="text-align:left">
|
2355 |
<tr>
|
2356 |
<th>
|
2458 |
</div>
|
2459 |
</div>
|
2460 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2461 |
<div class="box">
|
2462 |
<div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
|
2463 |
<h2><?php $fifu['title']['fields']() ?></h2>
|
2546 |
|
2547 |
<div id="tabs-p">
|
2548 |
<div class="box">
|
2549 |
+
<div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
|
2550 |
<h2><?php $fifu['title']['addon']() ?></h2>
|
2551 |
+
|
2552 |
+
<div class="greybox" id="grad2">
|
2553 |
<?php $fifu['addon']['desc']() ?>
|
2554 |
<br/>
|
2555 |
<br/>
|
2643 |
<i class="fab fa-facebook" style="font-size:30px"></i>
|
2644 |
</td>
|
2645 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2646 |
+
<i class="fas fa-money-bill-alt" style="font-size:30px"></i>
|
2647 |
</td>
|
2648 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2649 |
<i class="fas fa-tachometer-alt" style="font-size:30px"></i>
|
2654 |
<i><?php $fifu['support']['facebook']() ?></i>
|
2655 |
</td>
|
2656 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2657 |
+
<i><?php $fifu['support']['money']() ?></i>
|
2658 |
</td>
|
2659 |
<td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
|
2660 |
<i><?php $fifu['support']['speed']() ?></i>
|
2665 |
<?php $fifu['support']['facebook-desc']() ?>
|
2666 |
</td>
|
2667 |
<td style="vertical-align: top;">
|
2668 |
+
<?php $fifu['support']['money-desc']() ?>
|
2669 |
</td>
|
2670 |
<td style="vertical-align: top;">
|
2671 |
<?php $fifu['support']['speed-desc']() ?>
|
admin/meta-box.php
CHANGED
@@ -195,32 +195,8 @@ function fifu_update_or_delete_ctgr($post_id, $field, $url) {
|
|
195 |
delete_term_meta($post_id, $field, $url);
|
196 |
}
|
197 |
|
198 |
-
function fifu_wai_save($post_id, $is_ctgr) {
|
199 |
-
if ($is_ctgr) {
|
200 |
-
$url = get_term_meta($post_id, 'fifu_image_url', true);
|
201 |
-
$alt = get_term_meta($post_id, 'fifu_image_alt', true);
|
202 |
-
fifu_update_or_delete_ctgr($post_id, 'fifu_image_url', $url);
|
203 |
-
fifu_update_or_delete_ctgr($post_id, 'fifu_image_alt', $alt);
|
204 |
-
} else {
|
205 |
-
$url = get_post_meta($post_id, 'fifu_image_url', true);
|
206 |
-
$alt = get_term_meta($post_id, 'fifu_image_alt', true);
|
207 |
-
fifu_update_or_delete($post_id, 'fifu_image_url', $url);
|
208 |
-
fifu_update_or_delete($post_id, 'fifu_image_alt', $alt);
|
209 |
-
}
|
210 |
-
}
|
211 |
-
|
212 |
add_action('before_delete_post', 'fifu_db_before_delete_post');
|
213 |
|
214 |
-
/* regular woocommerce import */
|
215 |
-
|
216 |
-
add_action('woocommerce_product_import_inserted_product_object', 'fifu_woocommerce_import');
|
217 |
-
|
218 |
-
function fifu_woocommerce_import($object) {
|
219 |
-
$post_id = $object->get_id();
|
220 |
-
fifu_wai_save($post_id, null);
|
221 |
-
fifu_update_fake_attach_id($post_id);
|
222 |
-
}
|
223 |
-
|
224 |
/* plugin: wcfm */
|
225 |
|
226 |
function fifu_is_wcfm_active() {
|
195 |
delete_term_meta($post_id, $field, $url);
|
196 |
}
|
197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
add_action('before_delete_post', 'fifu_db_before_delete_post');
|
199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
/* plugin: wcfm */
|
201 |
|
202 |
function fifu_is_wcfm_active() {
|
admin/rapid-addon.php
DELETED
@@ -1,1256 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* RapidAddon
|
4 |
-
*
|
5 |
-
* @package WP All Import RapidAddon
|
6 |
-
* @copyright Copyright (c) 2014, Soflyy
|
7 |
-
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
8 |
-
* @version 1.1.1
|
9 |
-
*/
|
10 |
-
/* https://github.com/soflyy/wp-all-import-rapid-addon/edit/master/rapid-addon.php */
|
11 |
-
|
12 |
-
if (!class_exists('RapidAddon')) {
|
13 |
-
|
14 |
-
class RapidAddon {
|
15 |
-
|
16 |
-
public $name;
|
17 |
-
public $slug;
|
18 |
-
public $fields;
|
19 |
-
public $options = array();
|
20 |
-
public $accordions = array();
|
21 |
-
public $image_sections = array();
|
22 |
-
public $import_function;
|
23 |
-
public $post_saved_function;
|
24 |
-
public $notice_text;
|
25 |
-
public $logger = null;
|
26 |
-
public $when_to_run = false;
|
27 |
-
public $image_options = array(
|
28 |
-
'download_images' => 'yes',
|
29 |
-
'download_featured_delim' => ',',
|
30 |
-
'download_featured_image' => '',
|
31 |
-
'gallery_featured_image' => '',
|
32 |
-
'gallery_featured_delim' => ',',
|
33 |
-
'featured_image' => '',
|
34 |
-
'featured_delim' => ',',
|
35 |
-
'search_existing_images' => 1,
|
36 |
-
'is_featured' => 0,
|
37 |
-
'create_draft' => 'no',
|
38 |
-
'set_image_meta_title' => 0,
|
39 |
-
'image_meta_title_delim' => ',',
|
40 |
-
'image_meta_title' => '',
|
41 |
-
'set_image_meta_caption' => 0,
|
42 |
-
'image_meta_caption_delim' => ',',
|
43 |
-
'image_meta_caption' => '',
|
44 |
-
'set_image_meta_alt' => 0,
|
45 |
-
'image_meta_alt_delim' => ',',
|
46 |
-
'image_meta_alt' => '',
|
47 |
-
'set_image_meta_description' => 0,
|
48 |
-
'image_meta_description_delim' => ',',
|
49 |
-
'image_meta_description_delim_logic' => 'separate',
|
50 |
-
'image_meta_description' => '',
|
51 |
-
'auto_rename_images' => 0,
|
52 |
-
'auto_rename_images_suffix' => '',
|
53 |
-
'auto_set_extension' => 0,
|
54 |
-
'new_extension' => '',
|
55 |
-
'do_not_remove_images' => 1,
|
56 |
-
'search_existing_images_logic' => 'by_url'
|
57 |
-
);
|
58 |
-
protected $isWizard = true;
|
59 |
-
|
60 |
-
function __construct($name, $slug) {
|
61 |
-
$this->name = $name;
|
62 |
-
$this->slug = $slug;
|
63 |
-
if (!empty($_GET['id'])) {
|
64 |
-
$this->isWizard = false;
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
-
function set_import_function($name) {
|
69 |
-
$this->import_function = $name;
|
70 |
-
}
|
71 |
-
|
72 |
-
function set_post_saved_function($name) {
|
73 |
-
$this->post_saved_function = $name;
|
74 |
-
}
|
75 |
-
|
76 |
-
function is_active_addon($post_type = null) {
|
77 |
-
|
78 |
-
if (!is_plugin_active('wp-all-import-pro/wp-all-import-pro.php') and ! is_plugin_active('wp-all-import/plugin.php')) {
|
79 |
-
return false;
|
80 |
-
}
|
81 |
-
|
82 |
-
$addon_active = false;
|
83 |
-
|
84 |
-
if ($post_type !== null) {
|
85 |
-
if (@in_array($post_type, $this->active_post_types) or empty($this->active_post_types)) {
|
86 |
-
$addon_active = true;
|
87 |
-
}
|
88 |
-
}
|
89 |
-
|
90 |
-
if ($addon_active) {
|
91 |
-
|
92 |
-
$current_theme = wp_get_theme();
|
93 |
-
|
94 |
-
$parent_theme = $current_theme->parent();
|
95 |
-
|
96 |
-
$theme_name = $current_theme->get('Name');
|
97 |
-
|
98 |
-
$addon_active = (@in_array($theme_name, $this->active_themes) or empty($this->active_themes)) ? true : false;
|
99 |
-
|
100 |
-
if (!$addon_active and $parent_theme) {
|
101 |
-
$parent_theme_name = $parent_theme->get('Name');
|
102 |
-
$addon_active = (@in_array($parent_theme_name, $this->active_themes) or empty($this->active_themes)) ? true : false;
|
103 |
-
}
|
104 |
-
|
105 |
-
if ($addon_active and ! empty($this->active_plugins)) {
|
106 |
-
|
107 |
-
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
108 |
-
|
109 |
-
foreach ($this->active_plugins as $plugin) {
|
110 |
-
if (!is_plugin_active($plugin)) {
|
111 |
-
$addon_active = false;
|
112 |
-
break;
|
113 |
-
}
|
114 |
-
}
|
115 |
-
}
|
116 |
-
}
|
117 |
-
|
118 |
-
if ($this->when_to_run == "always") {
|
119 |
-
$addon_active = true;
|
120 |
-
}
|
121 |
-
|
122 |
-
return apply_filters('rapid_is_active_add_on', $addon_active, $post_type, $this->slug);
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
*
|
127 |
-
* Add-On Initialization
|
128 |
-
*
|
129 |
-
* @param array $conditions - list of supported themes and post types
|
130 |
-
*
|
131 |
-
*/
|
132 |
-
function run($conditions = array()) {
|
133 |
-
|
134 |
-
if (empty($conditions)) {
|
135 |
-
$this->when_to_run = "always";
|
136 |
-
}
|
137 |
-
|
138 |
-
@$this->active_post_types = (!empty($conditions['post_types'])) ? $conditions['post_types'] : array();
|
139 |
-
@$this->active_themes = (!empty($conditions['themes'])) ? $conditions['themes'] : array();
|
140 |
-
@$this->active_plugins = (!empty($conditions['plugins'])) ? $conditions['plugins'] : array();
|
141 |
-
|
142 |
-
add_filter('pmxi_addons', array($this, 'wpai_api_register'));
|
143 |
-
add_filter('wp_all_import_addon_parse', array($this, 'wpai_api_parse'));
|
144 |
-
add_filter('wp_all_import_addon_import', array($this, 'wpai_api_import'));
|
145 |
-
add_filter('wp_all_import_addon_saved_post', array($this, 'wpai_api_post_saved'));
|
146 |
-
add_filter('pmxi_options_options', array($this, 'wpai_api_options'));
|
147 |
-
add_filter('wp_all_import_image_sections', array($this, 'additional_sections'), 10, 1);
|
148 |
-
add_filter('pmxi_custom_types', array($this, 'filter_post_types'), 10, 2);
|
149 |
-
add_filter('pmxi_post_list_order', array($this, 'sort_post_types'), 10, 1);
|
150 |
-
add_filter('wp_all_import_post_type_image', array($this, 'post_type_image'), 10, 1);
|
151 |
-
add_action('pmxi_extend_options_featured', array($this, 'wpai_api_metabox'), 10, 2);
|
152 |
-
add_action('admin_init', array($this, 'admin_notice_ignore'));
|
153 |
-
}
|
154 |
-
|
155 |
-
function parse($data) {
|
156 |
-
|
157 |
-
if (!$this->is_active_addon($data['import']->options['custom_type']))
|
158 |
-
return false;
|
159 |
-
|
160 |
-
$parsedData = $this->helper_parse($data, $this->options_array());
|
161 |
-
return $parsedData;
|
162 |
-
}
|
163 |
-
|
164 |
-
function add_field($field_slug, $field_name, $field_type, $enum_values = null, $tooltip = "", $is_html = true, $default_text = '') {
|
165 |
-
|
166 |
-
$field = array("name" => $field_name, "type" => $field_type, "enum_values" => $enum_values, "tooltip" => $tooltip, "is_sub_field" => false, "is_main_field" => false, "slug" => $field_slug, "is_html" => $is_html, 'default_text' => $default_text);
|
167 |
-
|
168 |
-
$this->fields[$field_slug] = $field;
|
169 |
-
|
170 |
-
if (!empty($enum_values)) {
|
171 |
-
foreach ($enum_values as $key => $value) {
|
172 |
-
if (is_array($value)) {
|
173 |
-
if ($field['type'] == 'accordion') {
|
174 |
-
$this->fields[$value['slug']]['is_sub_field'] = true;
|
175 |
-
} else {
|
176 |
-
foreach ($value as $n => $param) {
|
177 |
-
if (is_array($param) and ! empty($this->fields[$param['slug']])) {
|
178 |
-
$this->fields[$param['slug']]['is_sub_field'] = true;
|
179 |
-
}
|
180 |
-
}
|
181 |
-
}
|
182 |
-
}
|
183 |
-
}
|
184 |
-
}
|
185 |
-
|
186 |
-
return $field;
|
187 |
-
}
|
188 |
-
|
189 |
-
function add_acf_field($field) {
|
190 |
-
$this->fields[$field->post_name] = array(
|
191 |
-
'type' => 'acf',
|
192 |
-
'field_obj' => $field
|
193 |
-
);
|
194 |
-
}
|
195 |
-
|
196 |
-
private $acfGroups = array();
|
197 |
-
|
198 |
-
function use_acf_group($acf_group) {
|
199 |
-
$this->add_text(
|
200 |
-
'<div class="postbox acf_postbox default acf_signle_group rad4">
|
201 |
-
<h3 class="hndle" style="margin-top:0;"><span>' . $acf_group['title'] . '</span></h3>
|
202 |
-
<div class="inside">');
|
203 |
-
$acf_fields = get_posts(array('posts_per_page' => -1, 'post_type' => 'acf-field', 'post_parent' => $acf_group['ID'], 'post_status' => 'publish', 'orderby' => 'menu_order', 'order' => 'ASC'));
|
204 |
-
if (!empty($acf_fields)) {
|
205 |
-
foreach ($acf_fields as $field) {
|
206 |
-
$this->add_acf_field($field);
|
207 |
-
}
|
208 |
-
}
|
209 |
-
$this->add_text('</div></div>');
|
210 |
-
$this->acfGroups[] = $acf_group['ID'];
|
211 |
-
add_filter('wp_all_import_acf_is_show_group', array($this, 'acf_is_show_group'), 10, 2);
|
212 |
-
}
|
213 |
-
|
214 |
-
function acf_is_show_group($is_show, $acf_group) {
|
215 |
-
return (in_array($acf_group['ID'], $this->acfGroups)) ? false : true;
|
216 |
-
}
|
217 |
-
|
218 |
-
/**
|
219 |
-
*
|
220 |
-
* Add an option to WP All Import options list
|
221 |
-
*
|
222 |
-
* @param string $slug - option name
|
223 |
-
* @param string $default_value - default option value
|
224 |
-
*
|
225 |
-
*/
|
226 |
-
function add_option($slug, $default_value = '') {
|
227 |
-
$this->options[$slug] = $default_value;
|
228 |
-
}
|
229 |
-
|
230 |
-
function options_array() {
|
231 |
-
|
232 |
-
$options_list = array();
|
233 |
-
|
234 |
-
if (!empty($this->fields)) {
|
235 |
-
|
236 |
-
foreach ($this->fields as $field_slug => $field_params) {
|
237 |
-
if (in_array($field_params['type'], array('title', 'plain_text', 'acf')))
|
238 |
-
continue;
|
239 |
-
$default_value = '';
|
240 |
-
if (!empty($field_params['enum_values'])) {
|
241 |
-
foreach ($field_params['enum_values'] as $key => $value) {
|
242 |
-
$default_value = $key;
|
243 |
-
break;
|
244 |
-
}
|
245 |
-
}
|
246 |
-
$options_list[$field_slug] = $default_value;
|
247 |
-
}
|
248 |
-
}
|
249 |
-
|
250 |
-
if (!empty($this->options)) {
|
251 |
-
foreach ($this->options as $slug => $value) {
|
252 |
-
$options_arr[$slug] = $value;
|
253 |
-
}
|
254 |
-
}
|
255 |
-
|
256 |
-
$options_arr[$this->slug] = $options_list;
|
257 |
-
$options_arr['rapid_addon'] = plugin_basename(__FILE__);
|
258 |
-
|
259 |
-
return $options_arr;
|
260 |
-
}
|
261 |
-
|
262 |
-
function wpai_api_options($all_options) {
|
263 |
-
|
264 |
-
$all_options = $all_options + $this->options_array();
|
265 |
-
|
266 |
-
return $all_options;
|
267 |
-
}
|
268 |
-
|
269 |
-
function wpai_api_register($addons) {
|
270 |
-
|
271 |
-
if (empty($addons[$this->slug])) {
|
272 |
-
$addons[$this->slug] = 1;
|
273 |
-
}
|
274 |
-
|
275 |
-
return $addons;
|
276 |
-
}
|
277 |
-
|
278 |
-
function wpai_api_parse($functions) {
|
279 |
-
|
280 |
-
$functions[$this->slug] = array($this, 'parse');
|
281 |
-
return $functions;
|
282 |
-
}
|
283 |
-
|
284 |
-
function wpai_api_post_saved($functions) {
|
285 |
-
$functions[$this->slug] = array($this, 'post_saved');
|
286 |
-
return $functions;
|
287 |
-
}
|
288 |
-
|
289 |
-
function wpai_api_import($functions) {
|
290 |
-
|
291 |
-
$functions[$this->slug] = array($this, 'import');
|
292 |
-
return $functions;
|
293 |
-
}
|
294 |
-
|
295 |
-
function post_saved($importData) {
|
296 |
-
|
297 |
-
if (is_callable($this->post_saved_function))
|
298 |
-
call_user_func($this->post_saved_function, $importData['pid'], $importData['import'], $importData['logger']);
|
299 |
-
}
|
300 |
-
|
301 |
-
function import($importData, $parsedData) {
|
302 |
-
|
303 |
-
if (!$this->is_active_addon($importData['post_type'])) {
|
304 |
-
return;
|
305 |
-
}
|
306 |
-
|
307 |
-
$import_options = $importData['import']['options'][$this->slug];
|
308 |
-
|
309 |
-
// echo "<pre>";
|
310 |
-
// print_r($import_options);
|
311 |
-
// echo "</pre>";
|
312 |
-
|
313 |
-
if (!empty($parsedData)) {
|
314 |
-
|
315 |
-
$this->logger = $importData['logger'];
|
316 |
-
|
317 |
-
$post_id = $importData['pid'];
|
318 |
-
$index = $importData['i'];
|
319 |
-
$data = array();
|
320 |
-
if (!empty($this->fields)) {
|
321 |
-
foreach ($this->fields as $field_slug => $field_params) {
|
322 |
-
if (in_array($field_params['type'], array('title', 'plain_text')))
|
323 |
-
continue;
|
324 |
-
switch ($field_params['type']) {
|
325 |
-
|
326 |
-
case 'image':
|
327 |
-
|
328 |
-
// import the specified image, then set the value of the field to the image ID in the media library
|
329 |
-
|
330 |
-
$image_url_or_path = $parsedData[$field_slug][$index];
|
331 |
-
|
332 |
-
$download = $import_options['download_image'][$field_slug];
|
333 |
-
|
334 |
-
$uploaded_image = PMXI_API::upload_image($post_id, $image_url_or_path, $download, $importData['logger'], true, "", "images", true, $importData['articleData']);
|
335 |
-
|
336 |
-
$data[$field_slug] = array(
|
337 |
-
"attachment_id" => $uploaded_image,
|
338 |
-
"image_url_or_path" => $image_url_or_path,
|
339 |
-
"download" => $download
|
340 |
-
);
|
341 |
-
|
342 |
-
break;
|
343 |
-
|
344 |
-
case 'file':
|
345 |
-
|
346 |
-
$image_url_or_path = $parsedData[$field_slug][$index];
|
347 |
-
|
348 |
-
$download = $import_options['download_image'][$field_slug];
|
349 |
-
|
350 |
-
$uploaded_file = PMXI_API::upload_image($post_id, $image_url_or_path, $download, $importData['logger'], true, "", "files", true, $importData['articleData']);
|
351 |
-
|
352 |
-
$data[$field_slug] = array(
|
353 |
-
"attachment_id" => $uploaded_file,
|
354 |
-
"image_url_or_path" => $image_url_or_path,
|
355 |
-
"download" => $download
|
356 |
-
);
|
357 |
-
|
358 |
-
break;
|
359 |
-
|
360 |
-
default:
|
361 |
-
// set the field data to the value of the field after it's been parsed
|
362 |
-
$data[$field_slug] = $parsedData[$field_slug][$index];
|
363 |
-
break;
|
364 |
-
}
|
365 |
-
|
366 |
-
// apply mapping rules if they exist
|
367 |
-
if (!empty($import_options['mapping'][$field_slug])) {
|
368 |
-
$mapping_rules = json_decode($import_options['mapping'][$field_slug], true);
|
369 |
-
|
370 |
-
if (!empty($mapping_rules) and is_array($mapping_rules)) {
|
371 |
-
foreach ($mapping_rules as $rule_number => $map_to) {
|
372 |
-
if (isset($map_to[trim($data[$field_slug])])) {
|
373 |
-
$data[$field_slug] = trim($map_to[trim($data[$field_slug])]);
|
374 |
-
break;
|
375 |
-
}
|
376 |
-
}
|
377 |
-
}
|
378 |
-
}
|
379 |
-
// --------------------
|
380 |
-
}
|
381 |
-
}
|
382 |
-
|
383 |
-
call_user_func($this->import_function, $post_id, $data, $importData['import'], $importData['articleData'], $importData['logger']);
|
384 |
-
}
|
385 |
-
}
|
386 |
-
|
387 |
-
function wpai_api_metabox($post_type, $current_values) {
|
388 |
-
|
389 |
-
if (!$this->is_active_addon($post_type)) {
|
390 |
-
return;
|
391 |
-
}
|
392 |
-
|
393 |
-
echo $this->helper_metabox_top($this->name);
|
394 |
-
|
395 |
-
$visible_fields = 0;
|
396 |
-
|
397 |
-
foreach ($this->fields as $field_slug => $field_params) {
|
398 |
-
if ($field_params['is_sub_field'])
|
399 |
-
continue;
|
400 |
-
$visible_fields++;
|
401 |
-
}
|
402 |
-
|
403 |
-
$counter = 0;
|
404 |
-
|
405 |
-
foreach ($this->fields as $field_slug => $field_params) {
|
406 |
-
|
407 |
-
// do not render sub fields
|
408 |
-
if ($field_params['is_sub_field'])
|
409 |
-
continue;
|
410 |
-
|
411 |
-
$counter++;
|
412 |
-
|
413 |
-
$this->render_field($field_params, $field_slug, $current_values, $visible_fields == $counter);
|
414 |
-
|
415 |
-
//if ( $field_params['type'] != 'accordion' ) echo "<br />";
|
416 |
-
}
|
417 |
-
|
418 |
-
echo $this->helper_metabox_bottom();
|
419 |
-
|
420 |
-
if (!empty($this->image_sections)) {
|
421 |
-
$is_images_section_enabled = apply_filters('wp_all_import_is_images_section_enabled', true, $post_type);
|
422 |
-
foreach ($this->image_sections as $k => $section) {
|
423 |
-
$section_options = array();
|
424 |
-
foreach ($this->image_options as $slug => $value) {
|
425 |
-
$section_options[$section['slug'] . $slug] = $value;
|
426 |
-
}
|
427 |
-
if (!$is_images_section_enabled and ! $k) {
|
428 |
-
$section_options[$section['slug'] . 'is_featured'] = 1;
|
429 |
-
}
|
430 |
-
PMXI_API::add_additional_images_section($section['title'], $section['slug'], $current_values, '', true, false, $section['type']);
|
431 |
-
}
|
432 |
-
}
|
433 |
-
}
|
434 |
-
|
435 |
-
function render_field($field_params, $field_slug, $current_values, $in_the_bottom = false) {
|
436 |
-
|
437 |
-
if (!isset($current_values[$this->slug][$field_slug])) {
|
438 |
-
$current_values[$this->slug][$field_slug] = isset($field_params['default_text']) ? $field_params['default_text'] : '';
|
439 |
-
}
|
440 |
-
|
441 |
-
if ($field_params['type'] == 'text') {
|
442 |
-
|
443 |
-
PMXI_API::add_field(
|
444 |
-
'simple',
|
445 |
-
$field_params['name'],
|
446 |
-
array(
|
447 |
-
'tooltip' => $field_params['tooltip'],
|
448 |
-
'field_name' => $this->slug . "[" . $field_slug . "]",
|
449 |
-
'field_value' => ( $current_values[$this->slug][$field_slug] == '' && $this->isWizard ) ? $field_params['default_text'] : $current_values[$this->slug][$field_slug]
|
450 |
-
)
|
451 |
-
);
|
452 |
-
} else if ($field_params['type'] == 'textarea') {
|
453 |
-
|
454 |
-
PMXI_API::add_field(
|
455 |
-
'textarea',
|
456 |
-
$field_params['name'],
|
457 |
-
array(
|
458 |
-
'tooltip' => $field_params['tooltip'],
|
459 |
-
'field_name' => $this->slug . "[" . $field_slug . "]",
|
460 |
-
'field_value' => ( $current_values[$this->slug][$field_slug] == '' && $this->isWizard ) ? $field_params['default_text'] : $current_values[$this->slug][$field_slug]
|
461 |
-
)
|
462 |
-
);
|
463 |
-
} else if ($field_params['type'] == 'wp_editor') {
|
464 |
-
|
465 |
-
PMXI_API::add_field(
|
466 |
-
'wp_editor',
|
467 |
-
$field_params['name'],
|
468 |
-
array(
|
469 |
-
'tooltip' => $field_params['tooltip'],
|
470 |
-
'field_name' => $this->slug . "[" . $field_slug . "]",
|
471 |
-
'field_value' => ( $current_values[$this->slug][$field_slug] == '' && $this->isWizard ) ? $field_params['default_text'] : $current_values[$this->slug][$field_slug]
|
472 |
-
)
|
473 |
-
);
|
474 |
-
} else if ($field_params['type'] == 'image' or $field_params['type'] == 'file') {
|
475 |
-
|
476 |
-
if (!isset($current_values[$this->slug]['download_image'][$field_slug])) {
|
477 |
-
$current_values[$this->slug]['download_image'][$field_slug] = '';
|
478 |
-
}
|
479 |
-
|
480 |
-
PMXI_API::add_field(
|
481 |
-
$field_params['type'],
|
482 |
-
$field_params['name'],
|
483 |
-
array(
|
484 |
-
'tooltip' => $field_params['tooltip'],
|
485 |
-
'field_name' => $this->slug . "[" . $field_slug . "]",
|
486 |
-
'field_value' => $current_values[$this->slug][$field_slug],
|
487 |
-
'download_image' => $current_values[$this->slug]['download_image'][$field_slug],
|
488 |
-
'field_key' => $field_slug,
|
489 |
-
'addon_prefix' => $this->slug
|
490 |
-
)
|
491 |
-
);
|
492 |
-
} else if ($field_params['type'] == 'radio') {
|
493 |
-
|
494 |
-
if (!isset($current_values[$this->slug]['mapping'][$field_slug])) {
|
495 |
-
$current_values[$this->slug]['mapping'][$field_slug] = array();
|
496 |
-
}
|
497 |
-
if (!isset($current_values[$this->slug]['xpaths'][$field_slug])) {
|
498 |
-
$current_values[$this->slug]['xpaths'][$field_slug] = '';
|
499 |
-
}
|
500 |
-
|
501 |
-
PMXI_API::add_field(
|
502 |
-
'enum',
|
503 |
-
$field_params['name'],
|
504 |
-
array(
|
505 |
-
'tooltip' => $field_params['tooltip'],
|
506 |
-
'field_name' => $this->slug . "[" . $field_slug . "]",
|
507 |
-
'field_value' => $current_values[$this->slug][$field_slug],
|
508 |
-
'enum_values' => $field_params['enum_values'],
|
509 |
-
'mapping' => true,
|
510 |
-
'field_key' => $field_slug,
|
511 |
-
'mapping_rules' => $current_values[$this->slug]['mapping'][$field_slug],
|
512 |
-
'xpath' => $current_values[$this->slug]['xpaths'][$field_slug],
|
513 |
-
'addon_prefix' => $this->slug,
|
514 |
-
'sub_fields' => $this->get_sub_fields($field_params, $field_slug, $current_values)
|
515 |
-
)
|
516 |
-
);
|
517 |
-
} else if ($field_params['type'] == 'accordion') {
|
518 |
-
|
519 |
-
PMXI_API::add_field(
|
520 |
-
'accordion',
|
521 |
-
$field_params['name'],
|
522 |
-
array(
|
523 |
-
'tooltip' => $field_params['tooltip'],
|
524 |
-
'field_name' => $this->slug . "[" . $field_slug . "]",
|
525 |
-
'field_key' => $field_slug,
|
526 |
-
'addon_prefix' => $this->slug,
|
527 |
-
'sub_fields' => $this->get_sub_fields($field_params, $field_slug, $current_values),
|
528 |
-
'in_the_bottom' => $in_the_bottom
|
529 |
-
)
|
530 |
-
);
|
531 |
-
} else if ($field_params['type'] == 'acf') {
|
532 |
-
$fieldData = (!empty($field_params['field_obj']->post_content)) ? unserialize($field_params['field_obj']->post_content) : array();
|
533 |
-
$fieldData['ID'] = $field_params['field_obj']->ID;
|
534 |
-
$fieldData['id'] = $field_params['field_obj']->ID;
|
535 |
-
$fieldData['label'] = $field_params['field_obj']->post_title;
|
536 |
-
$fieldData['key'] = $field_params['field_obj']->post_name;
|
537 |
-
if (empty($fieldData['name']))
|
538 |
-
$fieldData['name'] = $field_params['field_obj']->post_excerpt;
|
539 |
-
if (function_exists('pmai_render_field')) {
|
540 |
-
echo pmai_render_field($fieldData, (!empty($current_values) ) ? $current_values : array() );
|
541 |
-
}
|
542 |
-
} else if ($field_params['type'] == 'title') {
|
543 |
-
?>
|
544 |
-
<h4 class="wpallimport-add-on-options-title"><?php _e($field_params['name'], 'wp_all_import_plugin'); ?><?php if (!empty($field_params['tooltip'])): ?><a href="#help" class="wpallimport-help" title="<?php echo $field_params['tooltip']; ?>" style="position:relative; top: -1px;">?</a><?php endif; ?></h4>
|
545 |
-
<?php
|
546 |
-
} else if ($field_params['type'] == 'plain_text') {
|
547 |
-
if ($field_params['is_html']):
|
548 |
-
echo $field_params['name'];
|
549 |
-
else:
|
550 |
-
?>
|
551 |
-
<p style="margin: 0 0 12px 0;"><?php echo $field_params['name']; ?></p>
|
552 |
-
<?php
|
553 |
-
endif;
|
554 |
-
}
|
555 |
-
}
|
556 |
-
|
557 |
-
/**
|
558 |
-
*
|
559 |
-
* Helper function for nested radio fields
|
560 |
-
*
|
561 |
-
*/
|
562 |
-
function get_sub_fields($field_params, $field_slug, $current_values) {
|
563 |
-
$sub_fields = array();
|
564 |
-
if (!empty($field_params['enum_values'])) {
|
565 |
-
foreach ($field_params['enum_values'] as $key => $value) {
|
566 |
-
$sub_fields[$key] = array();
|
567 |
-
if (is_array($value)) {
|
568 |
-
if ($field_params['type'] == 'accordion') {
|
569 |
-
$sub_fields[$key][] = $this->convert_field($value, $current_values);
|
570 |
-
} else {
|
571 |
-
foreach ($value as $k => $sub_field) {
|
572 |
-
if (is_array($sub_field) and ! empty($this->fields[$sub_field['slug']])) {
|
573 |
-
$sub_fields[$key][] = $this->convert_field($sub_field, $current_values);
|
574 |
-
}
|
575 |
-
}
|
576 |
-
}
|
577 |
-
}
|
578 |
-
}
|
579 |
-
}
|
580 |
-
return $sub_fields;
|
581 |
-
}
|
582 |
-
|
583 |
-
function convert_field($sub_field, $current_values) {
|
584 |
-
$field = array();
|
585 |
-
if (!isset($current_values[$this->slug][$sub_field['slug']])) {
|
586 |
-
$current_values[$this->slug][$sub_field['slug']] = isset($sub_field['default_text']) ? $sub_field['default_text'] : '';
|
587 |
-
}
|
588 |
-
switch ($this->fields[$sub_field['slug']]['type']) {
|
589 |
-
case 'text':
|
590 |
-
$field = array(
|
591 |
-
'type' => 'simple',
|
592 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
593 |
-
'params' => array(
|
594 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
595 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
596 |
-
'field_value' => ($current_values[$this->slug][$sub_field['slug']] == '' && $this->isWizard) ? $sub_field['default_text'] : $current_values[$this->slug][$sub_field['slug']],
|
597 |
-
'is_main_field' => $sub_field['is_main_field']
|
598 |
-
)
|
599 |
-
);
|
600 |
-
break;
|
601 |
-
case 'textarea':
|
602 |
-
$field = array(
|
603 |
-
'type' => 'textarea',
|
604 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
605 |
-
'params' => array(
|
606 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
607 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
608 |
-
'field_value' => ($current_values[$this->slug][$sub_field['slug']] == '' && $this->isWizard) ? $sub_field['default_text'] : $current_values[$this->slug][$sub_field['slug']],
|
609 |
-
'is_main_field' => $sub_field['is_main_field']
|
610 |
-
)
|
611 |
-
);
|
612 |
-
break;
|
613 |
-
case 'wp_editor':
|
614 |
-
$field = array(
|
615 |
-
'type' => 'wp_editor',
|
616 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
617 |
-
'params' => array(
|
618 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
619 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
620 |
-
'field_value' => ($current_values[$this->slug][$sub_field['slug']] == '' && $this->isWizard) ? $sub_field['default_text'] : $current_values[$this->slug][$sub_field['slug']],
|
621 |
-
'is_main_field' => $sub_field['is_main_field']
|
622 |
-
)
|
623 |
-
);
|
624 |
-
break;
|
625 |
-
case 'image':
|
626 |
-
$field = array(
|
627 |
-
'type' => 'image',
|
628 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
629 |
-
'params' => array(
|
630 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
631 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
632 |
-
'field_value' => $current_values[$this->slug][$sub_field['slug']],
|
633 |
-
'download_image' => null,
|
634 |
-
'field_key' => $sub_field['slug'],
|
635 |
-
'addon_prefix' => $this->slug,
|
636 |
-
'is_main_field' => $sub_field['is_main_field']
|
637 |
-
)
|
638 |
-
);
|
639 |
-
|
640 |
-
if (array_key_exists('download_image', $current_values[$this->slug])) {
|
641 |
-
$field['params']['download_image'] = $current_values[$this->slug]['download_image'][$sub_field['slug']];
|
642 |
-
}
|
643 |
-
break;
|
644 |
-
case 'file':
|
645 |
-
$field = array(
|
646 |
-
'type' => 'file',
|
647 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
648 |
-
'params' => array(
|
649 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
650 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
651 |
-
'field_value' => $current_values[$this->slug][$sub_field['slug']],
|
652 |
-
'download_image' => null,
|
653 |
-
'field_key' => $sub_field['slug'],
|
654 |
-
'addon_prefix' => $this->slug,
|
655 |
-
'is_main_field' => $sub_field['is_main_field']
|
656 |
-
)
|
657 |
-
);
|
658 |
-
|
659 |
-
if (array_key_exists('download_image', $current_values[$this->slug])) {
|
660 |
-
$field['params']['download_image'] = $current_values[$this->slug]['download_image'][$sub_field['slug']];
|
661 |
-
}
|
662 |
-
|
663 |
-
break;
|
664 |
-
case 'radio':
|
665 |
-
$field = array(
|
666 |
-
'type' => 'enum',
|
667 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
668 |
-
'params' => array(
|
669 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
670 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
671 |
-
'field_value' => $current_values[$this->slug][$sub_field['slug']],
|
672 |
-
'enum_values' => $this->fields[$sub_field['slug']]['enum_values'],
|
673 |
-
'mapping' => true,
|
674 |
-
'field_key' => $sub_field['slug'],
|
675 |
-
'mapping_rules' => isset($current_values[$this->slug]['mapping'][$sub_field['slug']]) ? $current_values[$this->slug]['mapping'][$sub_field['slug']] : array(),
|
676 |
-
'xpath' => isset($current_values[$this->slug]['xpaths'][$sub_field['slug']]) ? $current_values[$this->slug]['xpaths'][$sub_field['slug']] : '',
|
677 |
-
'addon_prefix' => $this->slug,
|
678 |
-
'sub_fields' => $this->get_sub_fields($this->fields[$sub_field['slug']], $sub_field['slug'], $current_values),
|
679 |
-
'is_main_field' => $sub_field['is_main_field']
|
680 |
-
)
|
681 |
-
);
|
682 |
-
break;
|
683 |
-
case 'accordion':
|
684 |
-
$field = array(
|
685 |
-
'type' => 'accordion',
|
686 |
-
'label' => $this->fields[$sub_field['slug']]['name'],
|
687 |
-
'params' => array(
|
688 |
-
'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
|
689 |
-
'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
|
690 |
-
'field_key' => $sub_field['slug'],
|
691 |
-
'addon_prefix' => $this->slug,
|
692 |
-
'sub_fields' => $this->get_sub_fields($this->fields[$sub_field['slug']], $sub_field['slug'], $current_values),
|
693 |
-
'in_the_bottom' => false
|
694 |
-
)
|
695 |
-
);
|
696 |
-
break;
|
697 |
-
default:
|
698 |
-
# code...
|
699 |
-
break;
|
700 |
-
}
|
701 |
-
return $field;
|
702 |
-
}
|
703 |
-
|
704 |
-
/**
|
705 |
-
*
|
706 |
-
* Add accordion options
|
707 |
-
*
|
708 |
-
*
|
709 |
-
*/
|
710 |
-
function add_options($main_field = false, $title = '', $fields = array()) {
|
711 |
-
|
712 |
-
if (!empty($fields)) {
|
713 |
-
|
714 |
-
if ($main_field) {
|
715 |
-
|
716 |
-
$main_field['is_main_field'] = true;
|
717 |
-
$fields[] = $main_field;
|
718 |
-
}
|
719 |
-
|
720 |
-
return $this->add_field('accordion_' . $fields[0]['slug'], $title, 'accordion', $fields);
|
721 |
-
}
|
722 |
-
}
|
723 |
-
|
724 |
-
function add_title($title = '', $tooltip = '') {
|
725 |
-
|
726 |
-
if (empty($title))
|
727 |
-
return;
|
728 |
-
|
729 |
-
return $this->add_field(sanitize_key($title) . time(), $title, 'title', null, $tooltip);
|
730 |
-
}
|
731 |
-
|
732 |
-
function add_text($text = '', $is_html = false) {
|
733 |
-
|
734 |
-
if (empty($text))
|
735 |
-
return;
|
736 |
-
|
737 |
-
$count = is_array($this->fields) ? count($this->fields) : 0;
|
738 |
-
|
739 |
-
return $this->add_field(sanitize_key($text) . time() . uniqid() . $count, $text, 'plain_text', null, "", $is_html);
|
740 |
-
}
|
741 |
-
|
742 |
-
function helper_metabox_top($name) {
|
743 |
-
|
744 |
-
return '
|
745 |
-
<style type="text/css">
|
746 |
-
.wpallimport-plugin .wpallimport-addon div.input {
|
747 |
-
margin-bottom: 15px;
|
748 |
-
}
|
749 |
-
.wpallimport-plugin .wpallimport-addon .custom-params tr td.action{
|
750 |
-
width: auto !important;
|
751 |
-
}
|
752 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-custom-fields-actions{
|
753 |
-
right:0 !important;
|
754 |
-
}
|
755 |
-
.wpallimport-plugin .wpallimport-addon table tr td.wpallimport-enum-input-wrapper{
|
756 |
-
width: 80%;
|
757 |
-
}
|
758 |
-
.wpallimport-plugin .wpallimport-addon table tr td.wpallimport-enum-input-wrapper input{
|
759 |
-
width: 100%;
|
760 |
-
}
|
761 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-custom-fields-actions{
|
762 |
-
float: right;
|
763 |
-
right: 30px;
|
764 |
-
position: relative;
|
765 |
-
border: 1px solid #ddd;
|
766 |
-
margin-bottom: 10px;
|
767 |
-
}
|
768 |
-
|
769 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options {
|
770 |
-
margin-bottom: 15px;
|
771 |
-
margin-top: -16px;
|
772 |
-
}
|
773 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options .wpallimport-content-section{
|
774 |
-
padding-bottom: 8px;
|
775 |
-
margin:0;
|
776 |
-
border: none;
|
777 |
-
padding-top: 1px;
|
778 |
-
background: #f1f2f2;
|
779 |
-
}
|
780 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options .wpallimport-collapsed-header{
|
781 |
-
padding-left: 13px;
|
782 |
-
}
|
783 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options .wpallimport-collapsed-header h3{
|
784 |
-
font-size: 14px;
|
785 |
-
margin: 6px 0;
|
786 |
-
}
|
787 |
-
|
788 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options-full-width{
|
789 |
-
bottom: -40px;
|
790 |
-
margin-bottom: 0;
|
791 |
-
margin-left: -25px;
|
792 |
-
margin-right: -25px;
|
793 |
-
position: relative;
|
794 |
-
}
|
795 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options-full-width .wpallimport-content-section{
|
796 |
-
margin:0;
|
797 |
-
border-top:1px solid #ddd;
|
798 |
-
border-bottom: none;
|
799 |
-
border-right: none;
|
800 |
-
border-left: none;
|
801 |
-
background: #f1f2f2;
|
802 |
-
}
|
803 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-sub-options-full-width .wpallimport-collapsed-header h3{
|
804 |
-
margin: 14px 0;
|
805 |
-
}
|
806 |
-
|
807 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-dependent-options{
|
808 |
-
margin-left: 1px;
|
809 |
-
margin-right: -1px;
|
810 |
-
}
|
811 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-dependent-options .wpallimport-content-section{
|
812 |
-
border: 1px solid #ddd;
|
813 |
-
border-top: none;
|
814 |
-
}
|
815 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-full-with-bottom{
|
816 |
-
margin-left: -25px;
|
817 |
-
margin-right: -25px;
|
818 |
-
}
|
819 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-full-with-not-bottom{
|
820 |
-
margin: 25px -1px 25px 1px;
|
821 |
-
}
|
822 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-full-with-not-bottom .wpallimport-content-section{
|
823 |
-
border: 1px solid #ddd;
|
824 |
-
}
|
825 |
-
.wpallimport-plugin .wpallimport-addon .wpallimport-add-on-options-title{
|
826 |
-
font-size: 14px;
|
827 |
-
margin: 45px 0 15px 0;
|
828 |
-
}
|
829 |
-
</style>
|
830 |
-
<div class="wpallimport-collapsed wpallimport-section wpallimport-addon ' . $this->slug . ' closed">
|
831 |
-
<div class="wpallimport-content-section">
|
832 |
-
<div class="wpallimport-collapsed-header">
|
833 |
-
<h3>' . __($name, 'pmxi_plugin') . '</h3>
|
834 |
-
</div>
|
835 |
-
<div class="wpallimport-collapsed-content" style="padding: 0;">
|
836 |
-
<div class="wpallimport-collapsed-content-inner">
|
837 |
-
<table class="form-table" style="max-width:none;">
|
838 |
-
<tr>
|
839 |
-
<td colspan="3">';
|
840 |
-
}
|
841 |
-
|
842 |
-
function helper_metabox_bottom() {
|
843 |
-
|
844 |
-
return ' </td>
|
845 |
-
</tr>
|
846 |
-
</table>
|
847 |
-
</div>
|
848 |
-
</div>
|
849 |
-
</div>
|
850 |
-
</div>';
|
851 |
-
}
|
852 |
-
|
853 |
-
/**
|
854 |
-
*
|
855 |
-
* simply add an additional section for attachments
|
856 |
-
*
|
857 |
-
*/
|
858 |
-
function import_files($slug, $title) {
|
859 |
-
$this->import_images($slug, $title, 'files');
|
860 |
-
}
|
861 |
-
|
862 |
-
/**
|
863 |
-
*
|
864 |
-
* simply add an additional section
|
865 |
-
*
|
866 |
-
*/
|
867 |
-
function import_images($slug, $title, $type = 'images') {
|
868 |
-
|
869 |
-
if (empty($title) or empty($slug))
|
870 |
-
return;
|
871 |
-
|
872 |
-
$section_slug = 'pmxi_' . $slug;
|
873 |
-
|
874 |
-
$this->image_sections[] = array(
|
875 |
-
'title' => $title,
|
876 |
-
'slug' => $section_slug,
|
877 |
-
'type' => $type
|
878 |
-
);
|
879 |
-
|
880 |
-
foreach ($this->image_options as $option_slug => $value) {
|
881 |
-
$this->add_option($section_slug . $option_slug, $value);
|
882 |
-
}
|
883 |
-
|
884 |
-
if (count($this->image_sections) > 1) {
|
885 |
-
add_filter('wp_all_import_is_show_add_new_images', array($this, 'filter_is_show_add_new_images'), 10, 2);
|
886 |
-
}
|
887 |
-
|
888 |
-
add_filter('wp_all_import_is_allow_import_images', array($this, 'is_allow_import_images'), 10, 2);
|
889 |
-
|
890 |
-
if (function_exists($slug))
|
891 |
-
add_action($section_slug, $slug, 10, 4);
|
892 |
-
}
|
893 |
-
|
894 |
-
/**
|
895 |
-
*
|
896 |
-
* filter to allow import images for free edition of WP All Import
|
897 |
-
*
|
898 |
-
*/
|
899 |
-
function is_allow_import_images($is_allow, $post_type) {
|
900 |
-
return ($this->is_active_addon($post_type)) ? true : $is_allow;
|
901 |
-
}
|
902 |
-
|
903 |
-
/**
|
904 |
-
*
|
905 |
-
* filter to control additional images sections
|
906 |
-
*
|
907 |
-
*/
|
908 |
-
function additional_sections($sections) {
|
909 |
-
if (!empty($this->image_sections)) {
|
910 |
-
foreach ($this->image_sections as $add_section) {
|
911 |
-
$sections[] = $add_section;
|
912 |
-
}
|
913 |
-
}
|
914 |
-
|
915 |
-
return $sections;
|
916 |
-
}
|
917 |
-
|
918 |
-
/**
|
919 |
-
*
|
920 |
-
* remove the 'Don't touch existing images, append new images' when more than one image section is in use.
|
921 |
-
*
|
922 |
-
*/
|
923 |
-
function filter_is_show_add_new_images($is_show, $post_type) {
|
924 |
-
return ($this->is_active_addon($post_type)) ? false : $is_show;
|
925 |
-
}
|
926 |
-
|
927 |
-
/**
|
928 |
-
*
|
929 |
-
* disable the default images section
|
930 |
-
*
|
931 |
-
*/
|
932 |
-
function disable_default_images($post_type = false) {
|
933 |
-
|
934 |
-
add_filter('wp_all_import_is_images_section_enabled', array($this, 'is_enable_default_images_section'), 10, 2);
|
935 |
-
}
|
936 |
-
|
937 |
-
function is_enable_default_images_section($is_enabled, $post_type) {
|
938 |
-
|
939 |
-
return ($this->is_active_addon($post_type)) ? false : true;
|
940 |
-
}
|
941 |
-
|
942 |
-
function helper_parse($parsingData, $options) {
|
943 |
-
|
944 |
-
extract($parsingData);
|
945 |
-
|
946 |
-
$data = array(); // parsed data
|
947 |
-
|
948 |
-
if (!empty($import->options[$this->slug])) {
|
949 |
-
|
950 |
-
$this->logger = $parsingData['logger'];
|
951 |
-
|
952 |
-
$cxpath = $xpath_prefix . $import->xpath;
|
953 |
-
|
954 |
-
$tmp_files = array();
|
955 |
-
|
956 |
-
foreach ($options[$this->slug] as $option_name => $option_value) {
|
957 |
-
if (isset($import->options[$this->slug][$option_name]) and $import->options[$this->slug][$option_name] != '') {
|
958 |
-
if ($import->options[$this->slug][$option_name] == "xpath") {
|
959 |
-
if ($import->options[$this->slug]['xpaths'][$option_name] == "") {
|
960 |
-
$count and $data[$option_name] = array_fill(0, $count, "");
|
961 |
-
} else {
|
962 |
-
$data[$option_name] = XmlImportParser::factory($xml, $cxpath, (string) $import->options[$this->slug]['xpaths'][$option_name], $file)->parse();
|
963 |
-
$tmp_files[] = $file;
|
964 |
-
}
|
965 |
-
} else {
|
966 |
-
$data[$option_name] = XmlImportParser::factory($xml, $cxpath, (string) $import->options[$this->slug][$option_name], $file)->parse();
|
967 |
-
$tmp_files[] = $file;
|
968 |
-
}
|
969 |
-
} else {
|
970 |
-
$data[$option_name] = array_fill(0, $count, "");
|
971 |
-
}
|
972 |
-
}
|
973 |
-
|
974 |
-
foreach ($tmp_files as $file) { // remove all temporary files created
|
975 |
-
unlink($file);
|
976 |
-
}
|
977 |
-
}
|
978 |
-
|
979 |
-
return $data;
|
980 |
-
}
|
981 |
-
|
982 |
-
function can_update_meta($meta_key, $import_options) {
|
983 |
-
|
984 |
-
//echo "<pre>";
|
985 |
-
//print_r($import_options['options']);
|
986 |
-
//echo "</pre>";
|
987 |
-
|
988 |
-
$import_options = $import_options['options'];
|
989 |
-
|
990 |
-
if ($import_options['update_all_data'] == 'yes')
|
991 |
-
return true;
|
992 |
-
|
993 |
-
if (!$import_options['is_update_custom_fields'])
|
994 |
-
return false;
|
995 |
-
|
996 |
-
if ($import_options['update_custom_fields_logic'] == "full_update")
|
997 |
-
return true;
|
998 |
-
if ($import_options['update_custom_fields_logic'] == "only" and ! empty($import_options['custom_fields_list']) and is_array($import_options['custom_fields_list']) and in_array($meta_key, $import_options['custom_fields_list']))
|
999 |
-
return true;
|
1000 |
-
if ($import_options['update_custom_fields_logic'] == "all_except" and ( empty($import_options['custom_fields_list']) or ! in_array($meta_key, $import_options['custom_fields_list']) ))
|
1001 |
-
return true;
|
1002 |
-
|
1003 |
-
return false;
|
1004 |
-
}
|
1005 |
-
|
1006 |
-
function can_update_taxonomy($tax_name, $import_options) {
|
1007 |
-
|
1008 |
-
//echo "<pre>";
|
1009 |
-
//print_r($import_options['options']);
|
1010 |
-
//echo "</pre>";
|
1011 |
-
|
1012 |
-
$import_options = $import_options['options'];
|
1013 |
-
|
1014 |
-
if ($import_options['update_all_data'] == 'yes')
|
1015 |
-
return true;
|
1016 |
-
|
1017 |
-
if (!$import_options['is_update_categories'])
|
1018 |
-
return false;
|
1019 |
-
|
1020 |
-
if ($import_options['update_categories_logic'] == "full_update")
|
1021 |
-
return true;
|
1022 |
-
if ($import_options['update_categories_logic'] == "only" and ! empty($import_options['taxonomies_list']) and is_array($import_options['taxonomies_list']) and in_array($tax_name, $import_options['taxonomies_list']))
|
1023 |
-
return true;
|
1024 |
-
if ($import_options['update_categories_logic'] == "all_except" and ( empty($import_options['taxonomies_list']) or ! in_array($tax_name, $import_options['taxonomies_list']) ))
|
1025 |
-
return true;
|
1026 |
-
|
1027 |
-
return false;
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
function can_update_image($import_options) {
|
1031 |
-
|
1032 |
-
$import_options = $import_options['options'];
|
1033 |
-
|
1034 |
-
if ($import_options['update_all_data'] == 'yes')
|
1035 |
-
return true;
|
1036 |
-
|
1037 |
-
if (!$import_options['is_update_images'])
|
1038 |
-
return false;
|
1039 |
-
|
1040 |
-
if ($import_options['is_update_images'])
|
1041 |
-
return true;
|
1042 |
-
|
1043 |
-
return false;
|
1044 |
-
}
|
1045 |
-
|
1046 |
-
function admin_notice_ignore() {
|
1047 |
-
if (isset($_GET[$this->slug . '_ignore']) && '0' == $_GET[$this->slug . '_ignore']) {
|
1048 |
-
update_option($this->slug . '_ignore', 'true');
|
1049 |
-
}
|
1050 |
-
}
|
1051 |
-
|
1052 |
-
function display_admin_notice() {
|
1053 |
-
|
1054 |
-
|
1055 |
-
if ($this->notice_text) {
|
1056 |
-
$notice_text = $this->notice_text;
|
1057 |
-
} else {
|
1058 |
-
$notice_text = $this->name . ' requires WP All Import <a href="http://www.wpallimport.com/" target="_blank">Pro</a> or <a href="http://wordpress.org/plugins/wp-all-import" target="_blank">Free</a>.';
|
1059 |
-
}
|
1060 |
-
|
1061 |
-
if (!get_option(sanitize_key($this->slug) . '_notice_ignore')) {
|
1062 |
-
?>
|
1063 |
-
|
1064 |
-
<div class="error notice is-dismissible wpallimport-dismissible" style="margin-top: 10px;" rel="<?php echo sanitize_key($this->slug); ?>">
|
1065 |
-
<p><?php
|
1066 |
-
_e(
|
1067 |
-
sprintf(
|
1068 |
-
$notice_text,
|
1069 |
-
'?' . $this->slug . '_ignore=0'
|
1070 |
-
),
|
1071 |
-
'rapid_addon_' . $this->slug
|
1072 |
-
);
|
1073 |
-
?></p>
|
1074 |
-
</div>
|
1075 |
-
|
1076 |
-
<?php
|
1077 |
-
}
|
1078 |
-
}
|
1079 |
-
|
1080 |
-
/*
|
1081 |
-
*
|
1082 |
-
* $conditions - array('themes' => array('Realia'), 'plugins' => array('plugin-directory/plugin-file.php', 'plugin-directory2/plugin-file.php'))
|
1083 |
-
*
|
1084 |
-
*/
|
1085 |
-
|
1086 |
-
function admin_notice($notice_text = '', $conditions = array()) {
|
1087 |
-
|
1088 |
-
$is_show_notice = false;
|
1089 |
-
|
1090 |
-
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
1091 |
-
|
1092 |
-
if (!is_plugin_active('wp-all-import-pro/wp-all-import-pro.php') and ! is_plugin_active('wp-all-import/plugin.php')) {
|
1093 |
-
$is_show_notice = true;
|
1094 |
-
}
|
1095 |
-
|
1096 |
-
// Supported Themes
|
1097 |
-
if (!$is_show_notice and ! empty($conditions['themes'])) {
|
1098 |
-
|
1099 |
-
$themeInfo = wp_get_theme();
|
1100 |
-
$parentInfo = $themeInfo->parent();
|
1101 |
-
$currentTheme = $themeInfo->get('Name');
|
1102 |
-
|
1103 |
-
$is_show_notice = in_array($currentTheme, $conditions['themes']) ? false : true;
|
1104 |
-
|
1105 |
-
if ($is_show_notice and $parentInfo) {
|
1106 |
-
$parent_theme = $parentInfo->get('Name');
|
1107 |
-
$is_show_notice = in_array($parent_theme, $conditions['themes']) ? false : true;
|
1108 |
-
}
|
1109 |
-
}
|
1110 |
-
|
1111 |
-
// Required Plugins
|
1112 |
-
if (!$is_show_notice and ! empty($conditions['plugins'])) {
|
1113 |
-
|
1114 |
-
$requires_counter = 0;
|
1115 |
-
foreach ($conditions['plugins'] as $plugin) {
|
1116 |
-
if (is_plugin_active($plugin))
|
1117 |
-
$requires_counter++;
|
1118 |
-
}
|
1119 |
-
|
1120 |
-
if ($requires_counter != count($conditions['plugins'])) {
|
1121 |
-
$is_show_notice = true;
|
1122 |
-
}
|
1123 |
-
}
|
1124 |
-
|
1125 |
-
if ($is_show_notice) {
|
1126 |
-
|
1127 |
-
if ($notice_text != '') {
|
1128 |
-
$this->notice_text = $notice_text;
|
1129 |
-
}
|
1130 |
-
|
1131 |
-
add_action('admin_notices', array($this, 'display_admin_notice'));
|
1132 |
-
}
|
1133 |
-
}
|
1134 |
-
|
1135 |
-
function log($m = false) {
|
1136 |
-
|
1137 |
-
$m and $this->logger and call_user_func($this->logger, $m);
|
1138 |
-
}
|
1139 |
-
|
1140 |
-
public function remove_post_type($type = '') {
|
1141 |
-
if (!empty($type)) {
|
1142 |
-
$this->add_option('post_types_to_remove', $type);
|
1143 |
-
}
|
1144 |
-
}
|
1145 |
-
|
1146 |
-
public function filter_post_types($custom_types = array(), $custom_type = '') {
|
1147 |
-
$options = $this->options_array();
|
1148 |
-
$option_key = 'post_types_to_remove';
|
1149 |
-
|
1150 |
-
if (array_key_exists($option_key, $options)) {
|
1151 |
-
$type = $options[$option_key];
|
1152 |
-
|
1153 |
-
if (!empty($type)) {
|
1154 |
-
if (!is_array($type)) {
|
1155 |
-
if (array_key_exists($type, $custom_types)) {
|
1156 |
-
unset($custom_types[$type]);
|
1157 |
-
}
|
1158 |
-
} else {
|
1159 |
-
foreach ($type as $key => $post_type) {
|
1160 |
-
if (array_key_exists($post_type, $custom_types)) {
|
1161 |
-
unset($custom_types[$post_type]);
|
1162 |
-
}
|
1163 |
-
}
|
1164 |
-
}
|
1165 |
-
}
|
1166 |
-
}
|
1167 |
-
return $custom_types;
|
1168 |
-
}
|
1169 |
-
|
1170 |
-
public function sort_post_types(array $order) {
|
1171 |
-
$options = $this->options_array();
|
1172 |
-
$option_key = 'post_type_move';
|
1173 |
-
|
1174 |
-
if (array_key_exists($option_key, $options)) {
|
1175 |
-
$move_rules = maybe_unserialize($options[$option_key]);
|
1176 |
-
|
1177 |
-
foreach ($move_rules as $rule) {
|
1178 |
-
$move_this = $rule['move_this'];
|
1179 |
-
$move_to = $rule['move_to'];
|
1180 |
-
if ($move_to > count($order)) {
|
1181 |
-
if (( $rm_key = array_search($move_this, $order) ) !== false) {
|
1182 |
-
unset($order[$rm_key]);
|
1183 |
-
}
|
1184 |
-
array_push($order, $move_this);
|
1185 |
-
} else {
|
1186 |
-
if (( $rm_key = array_search($move_this, $order) ) !== false) {
|
1187 |
-
unset($order[$rm_key]);
|
1188 |
-
}
|
1189 |
-
array_splice($order, $move_to, 0, $move_this);
|
1190 |
-
}
|
1191 |
-
}
|
1192 |
-
|
1193 |
-
return $order;
|
1194 |
-
}
|
1195 |
-
|
1196 |
-
return $order;
|
1197 |
-
}
|
1198 |
-
|
1199 |
-
public function move_post_type($move_this = null, $move_to = null) {
|
1200 |
-
$move_rules = array();
|
1201 |
-
|
1202 |
-
if (!is_array($move_this) && !is_array($move_to)) {
|
1203 |
-
$move_rules[] = array(
|
1204 |
-
'move_this' => $move_this,
|
1205 |
-
'move_to' => $move_to
|
1206 |
-
);
|
1207 |
-
} else {
|
1208 |
-
foreach ($move_this as $key => $move_post) {
|
1209 |
-
$move_rules[] = array(
|
1210 |
-
'move_this' => $move_post,
|
1211 |
-
'move_to' => $move_to[$key]
|
1212 |
-
);
|
1213 |
-
}
|
1214 |
-
}
|
1215 |
-
|
1216 |
-
$this->add_option('post_type_move', $move_rules);
|
1217 |
-
}
|
1218 |
-
|
1219 |
-
public function set_post_type_image($post_type = null, $image = null) {
|
1220 |
-
$post_type_image_rules = array();
|
1221 |
-
|
1222 |
-
if (!is_array($post_type)) {
|
1223 |
-
|
1224 |
-
$post_type_image_rules[$post_type] = array(
|
1225 |
-
'post_type' => $post_type,
|
1226 |
-
'image' => $image
|
1227 |
-
);
|
1228 |
-
} else {
|
1229 |
-
|
1230 |
-
if (count($post_type) == count($image)) {
|
1231 |
-
|
1232 |
-
foreach ($post_type as $key => $post_name) {
|
1233 |
-
$post_type_image_rules[$post_name] = array(
|
1234 |
-
'post_type' => $post_name,
|
1235 |
-
'image' => $image[$key]
|
1236 |
-
);
|
1237 |
-
}
|
1238 |
-
}
|
1239 |
-
}
|
1240 |
-
|
1241 |
-
$this->add_option('post_type_image', $post_type_image_rules);
|
1242 |
-
}
|
1243 |
-
|
1244 |
-
public function post_type_image($image) {
|
1245 |
-
$options = $this->options_array();
|
1246 |
-
$option_key = 'post_type_image';
|
1247 |
-
if (array_key_exists($option_key, $options)) {
|
1248 |
-
$post_type_image_rules = maybe_unserialize($options[$option_key]);
|
1249 |
-
return $post_type_image_rules;
|
1250 |
-
}
|
1251 |
-
return $image;
|
1252 |
-
}
|
1253 |
-
|
1254 |
-
}
|
1255 |
-
|
1256 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/strings.php
CHANGED
@@ -345,6 +345,9 @@ function fifu_get_strings_settings() {
|
|
345 |
$fifu['support']['null'] = function() {
|
346 |
_e("\"Nulled\" Premium doesn't work", FIFU_SLUG);
|
347 |
};
|
|
|
|
|
|
|
348 |
$fifu['support']['speed'] = function() {
|
349 |
_e("PageSpeed and GTmetrix issues", FIFU_SLUG);
|
350 |
};
|
@@ -363,6 +366,9 @@ function fifu_get_strings_settings() {
|
|
363 |
$fifu['support']['null-desc'] = function() {
|
364 |
_e("This plugin has NO nulled versions, but pirate versions. Don't install that. It's illegal and should ruin your site. Moreover, sales of the original premium version keep this project alive.", FIFU_SLUG);
|
365 |
};
|
|
|
|
|
|
|
366 |
$fifu['support']['speed-desc'] = function() {
|
367 |
_e("You can solve that installing Jetpack plugin. Access its \"Settings\", \"Performance\" and enable \"Speed up image load times\". You'll have a free CDN + optimized external thumbnails.", FIFU_SLUG);
|
368 |
};
|
@@ -1342,3 +1348,4 @@ function fifu_get_strings_wai() {
|
|
1342 |
|
1343 |
return $fifu;
|
1344 |
}
|
|
345 |
$fifu['support']['null'] = function() {
|
346 |
_e("\"Nulled\" Premium doesn't work", FIFU_SLUG);
|
347 |
};
|
348 |
+
$fifu['support']['money'] = function() {
|
349 |
+
_e("Does FIFU Premium work on my site?", FIFU_SLUG);
|
350 |
+
};
|
351 |
$fifu['support']['speed'] = function() {
|
352 |
_e("PageSpeed and GTmetrix issues", FIFU_SLUG);
|
353 |
};
|
366 |
$fifu['support']['null-desc'] = function() {
|
367 |
_e("This plugin has NO nulled versions, but pirate versions. Don't install that. It's illegal and should ruin your site. Moreover, sales of the original premium version keep this project alive.", FIFU_SLUG);
|
368 |
};
|
369 |
+
$fifu['support']['money-desc'] = function() {
|
370 |
+
_e("You have a 30-day money-back guarantee to test for yourself. If something goes wrong just contact the support and ask for a solution or refund.", FIFU_SLUG);
|
371 |
+
};
|
372 |
$fifu['support']['speed-desc'] = function() {
|
373 |
_e("You can solve that installing Jetpack plugin. Access its \"Settings\", \"Performance\" and enable \"Speed up image load times\". You'll have a free CDN + optimized external thumbnails.", FIFU_SLUG);
|
374 |
};
|
1348 |
|
1349 |
return $fifu;
|
1350 |
}
|
1351 |
+
|
admin/wai-addon.php
DELETED
@@ -1,51 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
include 'rapid-addon.php';
|
4 |
-
$fifu = fifu_get_strings_wai();
|
5 |
-
$fifu_wai_addon = new RapidAddon('<div style="color:#777"><span class="dashicons dashicons-camera" style="font-size:30px;padding-right:10px"></span> Featured Image from URL</div>', 'fifu_wai_addon');
|
6 |
-
$fifu_wai_addon->add_field('fifu_image_url', '<div title="fifu_image_url">' . $fifu['title']['image']() . '</div>', 'text', null, null, false, null);
|
7 |
-
$fifu_wai_addon->add_field('fifu_image_alt', '<div title="fifu_image_alt">' . $fifu['title']['title']() . '</div>', 'text', null, null, false, null);
|
8 |
-
$fifu_wai_addon->set_import_function('fifu_wai_addon_save');
|
9 |
-
$fifu_wai_addon->run();
|
10 |
-
|
11 |
-
function fifu_wai_addon_save($post_id, $data, $import_options, $article) {
|
12 |
-
$fields = array();
|
13 |
-
|
14 |
-
if (!empty($data['fifu_image_url']))
|
15 |
-
array_push($fields, 'fifu_image_url');
|
16 |
-
|
17 |
-
if (!empty($data['fifu_image_alt']))
|
18 |
-
array_push($fields, 'fifu_image_alt');
|
19 |
-
|
20 |
-
if (empty($fields)) {
|
21 |
-
if (fifu_is_off('fifu_enable_default_url'))
|
22 |
-
return;
|
23 |
-
}
|
24 |
-
|
25 |
-
$is_ctgr = $article['post_type'] == 'taxonomies';
|
26 |
-
$update = false;
|
27 |
-
foreach ($fields as $field) {
|
28 |
-
$current_value = get_post_meta($post_id, $field, true);
|
29 |
-
if ($current_value != $data[$field]) {
|
30 |
-
$update = true;
|
31 |
-
$value = $data[$field];
|
32 |
-
if ($is_ctgr)
|
33 |
-
update_term_meta($post_id, $field, $value);
|
34 |
-
else
|
35 |
-
update_post_meta($post_id, $field, $value);
|
36 |
-
}
|
37 |
-
}
|
38 |
-
|
39 |
-
global $fifu_wai_addon;
|
40 |
-
if (!$update && !$fifu_wai_addon->can_update_image($import_options))
|
41 |
-
return;
|
42 |
-
|
43 |
-
fifu_wai_save($post_id, $is_ctgr);
|
44 |
-
|
45 |
-
/* metadata */
|
46 |
-
if ($is_ctgr)
|
47 |
-
add_action('pmxi_saved_post', 'fifu_db_ctgr_update_fake_attach_id');
|
48 |
-
else
|
49 |
-
add_action('pmxi_saved_post', 'fifu_update_fake_attach_id');
|
50 |
-
}
|
51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
featured-image-from-url.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: Featured Image from URL | FIFU
|
5 |
* Plugin URI: https://fifu.app/
|
6 |
* Description: Use an external image as featured image of a post or WooCommerce product. Includes Image Search, Video, Social Tags, SEO, Lazy Load, Gallery, Automation etc.
|
7 |
-
* Version: 3.4.
|
8 |
* Author: fifu.app
|
9 |
* Author URI: https://fifu.app/
|
10 |
* WC requires at least: 4.0
|
@@ -37,7 +37,6 @@ require_once (FIFU_ADMIN_DIR . '/column.php');
|
|
37 |
require_once (FIFU_ADMIN_DIR . '/menu.php');
|
38 |
require_once (FIFU_ADMIN_DIR . '/meta-box.php');
|
39 |
require_once (FIFU_ADMIN_DIR . '/strings.php');
|
40 |
-
require_once (FIFU_ADMIN_DIR . '/wai-addon.php');
|
41 |
|
42 |
require_once (FIFU_ELEMENTOR_DIR . '/elementor-fifu-extension.php');
|
43 |
|
4 |
* Plugin Name: Featured Image from URL | FIFU
|
5 |
* Plugin URI: https://fifu.app/
|
6 |
* Description: Use an external image as featured image of a post or WooCommerce product. Includes Image Search, Video, Social Tags, SEO, Lazy Load, Gallery, Automation etc.
|
7 |
+
* Version: 3.4.3
|
8 |
* Author: fifu.app
|
9 |
* Author URI: https://fifu.app/
|
10 |
* WC requires at least: 4.0
|
37 |
require_once (FIFU_ADMIN_DIR . '/menu.php');
|
38 |
require_once (FIFU_ADMIN_DIR . '/meta-box.php');
|
39 |
require_once (FIFU_ADMIN_DIR . '/strings.php');
|
|
|
40 |
|
41 |
require_once (FIFU_ELEMENTOR_DIR . '/elementor-fifu-extension.php');
|
42 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://donorbox.org/fifu
|
|
4 |
Tags: featured, image, url, woocommerce, thumbnail
|
5 |
Requires at least: 5.3
|
6 |
Tested up to: 5.5
|
7 |
-
Stable tag: 3.4.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -56,8 +56,8 @@ Use an external image as featured image of your post, page or custom post type.
|
|
56 |
|
57 |
#### AUTOMATION
|
58 |
|
59 |
-
* WP All Import add-on
|
60 |
-
* WooCommerce import
|
61 |
* **[Premium]** WP REST API
|
62 |
* **[Premium]** WooCommerce REST API
|
63 |
* **[Premium]** Schedule metadata generation
|
@@ -195,20 +195,20 @@ Supports videos from YouTube, Vimeo, Imgur, 9GAG, Cloudinary, Tumblr and Publiti
|
|
195 |
|
196 |
== Changelog ==
|
197 |
|
|
|
|
|
|
|
198 |
= 3.4.2 =
|
199 |
* Fix: conflict with Yoast SEO plugin (FIFU will not add social tags when Yoast have a Facebook/Twitter image on post editor); fix: conflict with Jetpack plugin (FIFU was getting CDN images even when Jetpack performance settings were disabled).
|
200 |
|
201 |
= 3.4.1 =
|
202 |
* Fix: Instagram URLs.
|
203 |
|
204 |
-
= 3.4.0 =
|
205 |
-
* Notice: for users with image URLs from Instagram (FIFU Settings > Troubleshooting).
|
206 |
-
|
207 |
= others =
|
208 |
* [more](https://fifu.app/changelog/)
|
209 |
|
210 |
|
211 |
== Upgrade Notice ==
|
212 |
|
213 |
-
= 3.4.
|
214 |
-
*
|
4 |
Tags: featured, image, url, woocommerce, thumbnail
|
5 |
Requires at least: 5.3
|
6 |
Tested up to: 5.5
|
7 |
+
Stable tag: 3.4.3
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
56 |
|
57 |
#### AUTOMATION
|
58 |
|
59 |
+
* **[Premium]** WP All Import add-on
|
60 |
+
* **[Premium]** WooCommerce import
|
61 |
* **[Premium]** WP REST API
|
62 |
* **[Premium]** WooCommerce REST API
|
63 |
* **[Premium]** Schedule metadata generation
|
195 |
|
196 |
== Changelog ==
|
197 |
|
198 |
+
= 3.4.3 =
|
199 |
+
* Notice: FIFU Premium has now a 30-day money-back guarantee; notice: support to WooCommerce Import and WP All Import are available only in the Premium version now; improvement: integration with User Submitted Posts plugin.
|
200 |
+
|
201 |
= 3.4.2 =
|
202 |
* Fix: conflict with Yoast SEO plugin (FIFU will not add social tags when Yoast have a Facebook/Twitter image on post editor); fix: conflict with Jetpack plugin (FIFU was getting CDN images even when Jetpack performance settings were disabled).
|
203 |
|
204 |
= 3.4.1 =
|
205 |
* Fix: Instagram URLs.
|
206 |
|
|
|
|
|
|
|
207 |
= others =
|
208 |
* [more](https://fifu.app/changelog/)
|
209 |
|
210 |
|
211 |
== Upgrade Notice ==
|
212 |
|
213 |
+
= 3.4.3 =
|
214 |
+
* Notice: FIFU Premium has now a 30-day money-back guarantee; notice: support to WooCommerce Import and WP All Import are available only in the Premium version now; improvement: integration with User Submitted Posts plugin.
|