PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / 1.4.1
Starter Sites & Templates by Neve v1.4.1
1.4.1 1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / includes / Importers / WP / Elementor_Meta_Handler.php
templates-patterns-collection / includes / Importers / WP Last commit date
Atomic_Wind_Meta_Handler.php 3 months ago Beaver_Data_Fix.php 5 years ago Beaver_ParserXML.php 5 years ago Elementor_Meta_Handler.php 3 months ago WP_Import.php 3 months ago WXR_Parser.php 5 years ago WXR_Parser_SimpleXML.php 4 years ago WXR_Parser_XML.php 5 years ago
Elementor_Meta_Handler.php
108 lines
1 <?php
2 /**
3 * Elementor Meta import handler.
4 *
5 * This is needed because by default, the importer breaks our JSON meta.
6 *
7 * @package templates-patterns-collection
8 */
9
10 namespace TIOB\Importers\WP;
11
12 use TIOB\Importers\Helpers\Helper;
13 use TIOB\Importers\Helpers\Slug_Mapping;
14
15 /**
16 * Class Elementor_Meta_Handler
17 *
18 * @package templates-patterns-collection
19 */
20 class Elementor_Meta_Handler {
21 use Helper;
22
23 /**
24 * Elementor meta key.
25 *
26 * @var string
27 */
28 private $meta_key = '_elementor_data';
29
30 /**
31 * Meta value.
32 *
33 * @var null
34 */
35 private $value = null;
36
37 /**
38 * Imported site url.
39 *
40 * @var null
41 */
42 private $import_url = null;
43
44 /**
45 * Elementor_Meta_Handler constructor.
46 *
47 * @param string $unfiltered_value the unfiltered meta value.
48 * @param string $site_url the site url.
49 */
50 public function __construct( $unfiltered_value, $site_url ) {
51 $this->value = $unfiltered_value;
52 $this->import_url = $site_url;
53 Slug_Mapping::register_source_url( $site_url );
54 }
55
56 /**
57 * Filter the meta to allow escaped JSON values.
58 */
59 public function filter_meta() {
60 add_filter( 'sanitize_post_meta_' . $this->meta_key, array( $this, 'allow_escaped_json_meta' ), 10, 3 );
61 }
62
63 /**
64 * Allow JSON escaping.
65 *
66 * @param string $val meta value.
67 * @param string $key meta key.
68 * @param string $type meta type.
69 *
70 * @return array|string
71 */
72 public function allow_escaped_json_meta( $val, $key, $type ) {
73 if ( empty( $this->value ) ) {
74 return $val;
75 }
76
77 $this->value = $this->replace_image_urls( $this->value );
78 $this->replace_link_urls();
79
80 return $this->value;
81 }
82
83 /**
84 * Replace link urls.
85 *
86 * @return void
87 */
88 private function replace_link_urls() {
89 $decoded_meta = json_decode( $this->value, true );
90 if ( ! is_array( $decoded_meta ) ) {
91 return;
92 }
93
94 array_walk_recursive(
95 $decoded_meta,
96 function ( &$value ) {
97 if ( filter_var( $value, FILTER_VALIDATE_URL ) === false ) {
98 return;
99 }
100
101 $value = Slug_Mapping::rewrite_value( $value );
102 }
103 );
104
105 $this->value = json_encode( $decoded_meta );
106 }
107 }
108