PluginProbe ʕ •ᴥ•ʔ
Kubio AI Page Builder / 2.1.1
Kubio AI Page Builder v2.1.1
2.9.1 2.9.0 2.8.6 2.8.5 2.8.4 2.8.3 2.8.2 2.8.1 trunk 1.0.0 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.9.0 2.0.0 2.1.1 2.1.2 2.1.3 2.2.0 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.5 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.6.1 2.6.2 2.6.3 2.6.5 2.6.6 2.6.7 2.7.0 2.7.1 2.7.2 2.7.3 2.8.0
kubio / lib / preview / menu-preview.php
kubio / lib / preview Last commit date
autosaves-preview.php 2 years ago index.php 3 years ago menu-preview.php 2 years ago site-data-preview.php 4 years ago
menu-preview.php
127 lines
1 <?php
2
3 use IlluminateAgnostic\Arr\Support\Arr;
4
5 function kubio_preview_menu_item( $item, $initial_item, $menu_term_id = 0, $item_index = 0 ) {
6
7 $order = Arr::get( $item, 'order', $item_index );
8
9 return (object) array_merge(
10 array(
11 'object_id' => 0,
12 'object' => '',
13 'menu_item_parent' => 0,
14 'position' => 1,
15 'type' => '',
16 'title' => '',
17 'url' => '',
18 'target' => '',
19 'attr_title' => '',
20 'description' => '',
21 'classes' => '',
22 'xfn' => '',
23 'status' => '',
24 'original_title' => '',
25 'nav_menu_term_id' => 0,
26 'type_label' => '',
27 'current' => false,
28 'menu_order' => 1,
29 ),
30 (array) $initial_item,
31 array(
32 'object_id' => $item['objectId'],
33 'object' => $item['objectId'],
34 'menu_item_parent' => $item['parent'],
35 'position' => $order,
36 'menu_order' => ( $item['parent'] * 1000 ) + $order,
37 'type' => $item['type'],
38 'title' => $item['label'],
39 'url' => $item['url'],
40 'original_title' => $item['label'],
41 'nav_menu_term_id' => $menu_term_id,
42 'db_id' => $item['id'],
43 'ID' => $item['id'],
44 'post_parent' => $item['id'] ? wp_get_post_parent_id( $item['id'] ) : $item['id'],
45 'target' => $item['target'],
46 )
47 );
48 }
49
50 add_action(
51 'kubio/preview/handle_custom_entities',
52 function ( $data ) {
53 $kind = Arr::get( $data, 'kind' );
54 $name = Arr::get( $data, 'name' );
55
56 if ( $kind === 'kubio' && $name === 'menu' ) {
57 $menu_data = json_decode( Arr::get( $data, 'data' ), true );
58 $items = Arr::get( (array) $menu_data, 'items' );
59 $menu = Arr::get( (array) $menu_data, 'menu' );
60
61 add_filter(
62 'wp_get_nav_menu_items',
63 function ( $menu_items, $current_menu, $args ) use ( $items, $menu ) {
64
65 if ( $cache = wp_cache_get( intval( $current_menu->term_id ), 'kubio/preview-menus' ) ) {
66 return $cache;
67 }
68
69 if ( intval( $current_menu->term_id ) === intval( $menu['term_id'] ) ) {
70 $mapped_items = array();
71
72 foreach ( $items as $item_index => $item ) {
73
74 $initial_item = null;
75
76 foreach ( $menu_items as $menu_item ) {
77 if ( intval( $menu_item->db_id ) === intval( $item['id'] ) ) {
78 $initial_item = $menu_item;
79 break;
80 }
81 }
82
83 $mapped_items[] = kubio_preview_menu_item( $item, $initial_item, intval( $menu['term_id'] ), $item_index );
84 }
85
86 wp_cache_add( intval( $current_menu->term_id ), $mapped_items, 'kubio/preview-menus' );
87
88 } else {
89 $mapped_items = $menu_items;
90 }
91
92 return $mapped_items;
93 },
94 10,
95 3
96 );
97 }
98
99 }
100 );
101
102
103 function kubio_nav_menu_locations_preview( $locations ) {
104
105 if ( ! kubio_is_page_preview() ) {
106 return $locations;
107 }
108
109 $global_data_locations = kubio_get_global_data( 'menuLocations', array() );
110
111 foreach ( $global_data_locations as $global_data_location ) {
112 $location = $global_data_location['name'];
113 $menu_id = $global_data_location['menu'];
114
115 if ( $menu_id ) {
116 $locations[ $location ] = $menu_id;
117 }
118 }
119
120 return $locations;
121 }
122
123 add_filter(
124 'theme_mod_nav_menu_locations',
125 'kubio_nav_menu_locations_preview'
126 );
127