PluginProbe
WP Directory Kit / 1.4.8
WP Directory Kit v1.4.8
1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 1.4.0 1.4.1 All 35 releases
← All changes | filters.php +330 -773 trunk1.4.8 View file →
@@ -1,162 +1,175 @@
1 1 <?php
2 -if (! defined('ABSPATH')) {
3 - exit; // Exit if accessed directly.
2 +if ( ! defined( 'ABSPATH' ) ) {
3 + exit; // Exit if accessed directly.
4 4 }
5 5
6 6 /* fix for redirect */
7 7 add_action('init', 'wdk_do_output_buffer');
8 -function wdk_do_output_buffer()
9 -{
8 +function wdk_do_output_buffer() {
10 9 ob_start();
11 -}
10 +}
12 11
13 12 /* add elementor body class */
14 -add_filter('body_class', function ($classes) {
13 +add_filter( 'body_class', function( $classes ) {
15 14 global $wp_query;
16 15 global $wdk_listing_id;
17 16 global $wdk_listing_page_id;
18 - if (isset($wp_query->post))
19 - if ($wp_query->post->post_type == 'wdk-listing') {
20 - $wdk_listing_id = $wp_query->post->ID;
21 - $wdk_listing_page_id = get_option('wdk_listing_page');
22 - if (!empty($wdk_listing_page_id) && get_post_status($wdk_listing_page_id) == 'publish') {
23 - return array_merge($classes, array('elementor-page-' . $wdk_listing_page_id));
24 - }
17 + if(isset($wp_query->post))
18 + if($wp_query->post->post_type == 'wdk-listing')
19 + {
20 + $wdk_listing_id = $wp_query->post->ID;
21 + $wdk_listing_page_id = get_option('wdk_listing_page');
22 + if(!empty($wdk_listing_page_id) && get_post_status($wdk_listing_page_id) =='publish')
23 + {
24 + return array_merge( $classes, array( 'elementor-page-'.$wdk_listing_page_id ) );
25 25 }
26 + }
27 +
28 + return array_merge( $classes, array( 'class-name' ) );
29 +} );
26 30
27 - return array_merge($classes, array('class-name'));
28 -});
31 +add_filter('the_content', 'wdk_content');
29 32
30 -add_filter('the_content', 'wdk_content');
31 -
32 -function wdk_content($content)
33 -
34 -{
33 +function wdk_content( $content )
34 +{
35 35 global $wp_query;
36 36 global $wdk_listing_id;
37 37 global $wdk_listing_page_id;
38 - if (isset($wp_query->post))
39 - if ($wp_query->post->post_type == 'wdk-listing') {
40 - $wdk_listing_id = $wp_query->post->ID;
41 - $wdk_listing_page_id = get_option('wdk_listing_page');
42 - if (!empty($wdk_listing_page_id) && get_post_status($wdk_listing_page_id) == 'publish') {
43 - global $Winter_MVC_WDK;
44 - $Winter_MVC_WDK->load_helper('listing');
38 + if(isset($wp_query->post))
39 + if($wp_query->post->post_type == 'wdk-listing')
40 + {
41 + $wdk_listing_id = $wp_query->post->ID;
42 + $wdk_listing_page_id = get_option('wdk_listing_page');
43 + if(!empty($wdk_listing_page_id) && get_post_status($wdk_listing_page_id) =='publish')
44 + {
45 + global $Winter_MVC_WDK;
46 + $Winter_MVC_WDK->load_helper('listing');
45 47
46 - if (
47 - (
48 - wdk_field_value('is_activated', $wdk_listing_id, false) && wdk_field_value('is_approved', $wdk_listing_id, false)) ||
49 - (get_current_user_id() != 0 && get_current_user_id() == wdk_field_value('user_id_editor', $wdk_listing_id, false)) ||
48 + if(
49 + (
50 + wdk_field_value('is_activated', $wdk_listing_id,false) && wdk_field_value('is_approved', $wdk_listing_id,false)) ||
51 + (get_current_user_id() != 0 && get_current_user_id() == wdk_field_value('user_id_editor', $wdk_listing_id,false)) ||
50 52 (get_current_user_id() != 0 && wmvc_user_in_role('administrator'))
51 53 ) {
52 54
53 - $Winter_MVC_WDK->model('listing_m');
54 - $Winter_MVC_WDK->listing_m->update_counter($wdk_listing_id);
55 + $Winter_MVC_WDK->model('listing_m');
56 + $Winter_MVC_WDK->listing_m->update_counter($wdk_listing_id);
57 +
58 + if(wdk_get_option('wdk_membership_is_enable_subscriptions') && wdk_get_option('wdk_membership_subscriptions_view_listing_enabled') && function_exists('run_wdk_membership')){
59 + /* if required subscription with View details listing */
55 60
56 - if (wdk_get_option('wdk_membership_is_enable_subscriptions') && wdk_get_option('wdk_membership_subscriptions_view_listing_enabled') && function_exists('run_wdk_membership')) {
57 - /* if required subscription with View details listing */
61 + /* if not login, return alert for ask login */
62 + if(is_user_logged_in()) {
58 63
59 - /* if not login, return alert for ask login */
60 - if (is_user_logged_in()) {
64 + global $Winter_MVC_wdk_membership;
65 + $Winter_MVC_wdk_membership->model('subscription_m');
66 + $Winter_MVC_wdk_membership->model('subscription_user_m');
67 + $user_subscriptions_listings_view = $Winter_MVC_wdk_membership->subscription_user_m->get_pagination(NULL, FALSE, array('is_activated'=>1,'is_view_private_listings'=>1));
61 68
62 - global $Winter_MVC_wdk_membership;
63 - $Winter_MVC_wdk_membership->model('subscription_m');
64 - $Winter_MVC_wdk_membership->model('subscription_user_m');
65 - $user_subscriptions_listings_view = $Winter_MVC_wdk_membership->subscription_user_m->get_pagination(NULL, FALSE, array('is_activated' => 1, 'is_view_private_listings' => 1));
66 -
67 - /* if not allow subscription, return alert for subscription on dash page */
68 - if (empty($user_subscriptions_listings_view)) {
69 - $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">' . esc_html__('Required subscription for "View Listings Details", please', 'wpdirectorykit') . ' <a href="' . esc_url(wdk_dash_url('dash_page=membership')) . '">' . esc_html__('purchase subscription here', 'wpdirectorykit') . '</a></p></div>';
70 - } else {
71 - if (class_exists('Elementor\Plugin')) {
72 - $content = '';
73 - $elementor_instance = Elementor\Plugin::instance();
74 - $content = $elementor_instance->frontend->get_builder_content_for_display($wdk_listing_page_id);
75 - }
69 + /* if not allow subscription, return alert for subscription on dash page */
70 + if(empty($user_subscriptions_listings_view)){
71 + $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">'.esc_html__('Required subscription for "View Listings Details", please', 'wpdirectorykit').' <a href="'.esc_url(wdk_dash_url('dash_page=membership')).'">'.esc_html__('purchase subscription here', 'wpdirectorykit').'</a></p></div>';
72 + } else {
73 + if(class_exists('Elementor\Plugin'))
74 + {
75 + $content = '';
76 + $elementor_instance = Elementor\Plugin::instance();
77 + $content = $elementor_instance->frontend->get_builder_content_for_display($wdk_listing_page_id);
76 78 }
77 - } else {
78 - $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">' . esc_html__('Required subscription for "View Listings Details", please', 'wpdirectorykit') . ' <a href="' . wdk_login_url(wdk_server_current_url(), esc_html__('Login for open Listing', 'wpdirectorykit')) . '">' . esc_html__('register or login here', 'wpdirectorykit') . '</a></p></div>';
79 79 }
80 + } else {
81 + $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">'.esc_html__('Required subscription for "View Listings Details", please', 'wpdirectorykit').' <a href="'.wdk_login_url(wdk_server_current_url(), esc_html__('Login for open Listing', 'wpdirectorykit')).'">'.esc_html__('register or login here', 'wpdirectorykit').'</a></p></div>';
80 82 }
81 - /* if login required */ elseif (get_option('wdk_membership_login_required_listing_preview') && !is_user_logged_in()) {
82 - if (get_option('wdk_membership_login_page')) {
83 - wp_redirect(wdk_url_suffix(get_permalink(get_option('wdk_membership_login_page')), 'redirect_to=' . urlencode(wdk_current_url()) . '&custom_message=' . urlencode(esc_html__('Please login for open Listing', 'wpdirectorykit'))));
84 - // exit();
85 - } else {
86 - wp_redirect(wp_login_url(wdk_current_url()));
83 +
84 + }
85 + /* if login required */
86 + elseif(get_option('wdk_membership_login_required_listing_preview') && !is_user_logged_in()){
87 + if(get_option('wdk_membership_login_page')){
88 + wp_redirect(wdk_url_suffix(get_permalink(get_option('wdk_membership_login_page')),'redirect_to='.urlencode(wdk_current_url()).'&custom_message='.urlencode(esc_html__('Please login for open Listing', 'wpdirectorykit'))));
89 + // exit();
90 + } else {
91 + wp_redirect(wp_login_url(wdk_current_url()));
92 + }
93 + }
94 + else {
95 + if(class_exists('Elementor\Plugin'))
96 + {
97 + $content = '';
98 +
99 + if(!wdk_field_value('is_approved', $wdk_listing_id, false) || !wdk_field_value('is_activated', $wdk_listing_id, false)) {
100 + $content = '<div style="margin: 35px auto;max-width:768px;margin-bottom: 35px"><p class="wdk_alert wdk_alert-danger">'.esc_html__('Listing is not activated/approved and not visible for public', 'wpdirectorykit').'</p></div>';
87 101 }
88 - } else {
89 - if (class_exists('Elementor\Plugin')) {
90 - $content = '';
91 102
92 - if (!wdk_field_value('is_approved', $wdk_listing_id, false) || !wdk_field_value('is_activated', $wdk_listing_id, false)) {
93 - $content = '<div style="margin: 35px auto;max-width:768px;margin-bottom: 35px"><p class="wdk_alert wdk_alert-danger">' . esc_html__('Listing is not activated/approved and not visible for public', 'wpdirectorykit') . '</p></div>';
94 - }
103 + $elementor_instance = Elementor\Plugin::instance();
104 + $content .= $elementor_instance->frontend->get_builder_content_for_display($wdk_listing_page_id);
105 +
106 + $custom_css = '';
95 107
96 - $elementor_instance = Elementor\Plugin::instance();
97 - $content .= $elementor_instance->frontend->get_builder_content_for_display($wdk_listing_page_id);
108 + $wdk_listing_id;
109 + $Winter_MVC_WDK->model('field_m');
98 110
99 - $custom_css = '';
111 + $Winter_MVC_WDK->db->where(array('field_type !='=> 'SECTION'));
112 + $fields = $Winter_MVC_WDK->field_m->get();
100 113
101 - $wdk_listing_id;
102 - $Winter_MVC_WDK->model('field_m');
114 + foreach($fields as $field) {
115 + if(wdk_field_value ($field->idfield, $wdk_listing_id)) continue;
103 116
104 - $Winter_MVC_WDK->db->where(array('field_type !=' => 'SECTION'));
105 - $fields = $Winter_MVC_WDK->field_m->get();
117 + if(!empty($custom_css)) $custom_css .= ',';
106 118
107 - foreach ($fields as $field) {
108 - if (wdk_field_value($field->idfield, $wdk_listing_id)) continue;
119 + $custom_css .= '.wdk_'.$field->idfield.'_hide_empty';
120 + }
109 121
110 - if (!empty($custom_css)) $custom_css .= ',';
122 + if(!wdk_field_value ('lat', $wdk_listing_id, false) || !wdk_field_value ('lng', $wdk_listing_id)) {
123 + if(!empty($custom_css)) $custom_css .= ',';
124 + $custom_css .= '.wdk_map_hide_empty';
125 + }
111 126
112 - $custom_css .= '.wdk_' . $field->idfield . '_hide_empty';
113 - }
127 + if(!wdk_field_value ('is_featured', $wdk_listing_id, false)) {
128 + if(!empty($custom_css)) $custom_css .= ',';
129 + $custom_css .= '.wdk_is_featured_hide_empty';
130 + }
114 131
115 - if (!wdk_field_value('lat', $wdk_listing_id, false) || !wdk_field_value('lng', $wdk_listing_id)) {
116 - if (!empty($custom_css)) $custom_css .= ',';
117 - $custom_css .= '.wdk_map_hide_empty';
118 - }
132 + $custom_css .= '{display: none !important}';
119 133
120 - if (!wdk_field_value('is_featured', $wdk_listing_id, false)) {
121 - if (!empty($custom_css)) $custom_css .= ',';
122 - $custom_css .= '.wdk_is_featured_hide_empty';
123 - }
134 + wp_enqueue_style('wdk-custom-inline', WPDIRECTORYKIT_URL.'public/css/custom-inline.css');
135 + wp_add_inline_style( 'wdk-custom-inline', $custom_css);
124 136
125 - $custom_css .= '{display: none !important}';
126 -
127 - wp_enqueue_style('wdk-custom-inline', WPDIRECTORYKIT_URL . 'public/css/custom-inline.css');
128 - wp_add_inline_style('wdk-custom-inline', $custom_css);
129 - }
130 137 }
131 - } else {
132 - $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">' . esc_html__('Listing missing or not activated', 'wpdirectorykit') . ', <a href="' . get_home_url() . '">' . esc_html__('return to Homepage', 'wpdirectorykit') . '</a></p></div>';
133 138 }
139 +
134 140 } else {
135 - $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">' . esc_html__('Missing listing Preview Page', 'wpdirectorykit') . ', <a href="' . esc_url(get_admin_url()) . 'admin.php?page=wdk_settings&function=import_demo">' . esc_html__('Import demo Page', 'wpdirectorykit') . '</a></p></div>';
141 + $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">'.esc_html__('Listing missing or not activated', 'wpdirectorykit').', <a href="'.get_home_url().'">'.esc_html__('return to Homepage', 'wpdirectorykit').'</a></p></div>';
136 142 }
143 + } else {
144 + $content = '<div style="margin: 35px auto;max-width:768px"><p class="wdk_alert wdk_alert-danger">'.esc_html__('Missing listing Preview Page', 'wpdirectorykit').', <a href="'.esc_url(get_admin_url()).'admin.php?page=wdk_settings&function=import_demo">'.esc_html__('Import demo Page', 'wpdirectorykit').'</a></p></div>';
137 145 }
146 +
147 + }
138 148 return $content;
139 149 }
140 150
141 -function wdk_do_header()
142 -{
151 +function wdk_do_header() {
143 152 // get all elementor pro builder conditions
144 153 $pro_theme_builder_conditions = get_option('elementor_pro_theme_builder_conditions');
145 154 $listing_page_id = get_option('wdk_listing_page');
146 155
147 - if (!empty($pro_theme_builder_conditions)) {
148 - foreach ($pro_theme_builder_conditions['header'] as $header_post_id => $header_on_pages) {
149 - foreach ($header_on_pages as $pages) {
150 - $accepted_page_id = substr($pages, strrpos($pages, '/') + 1);
156 + if(!empty($pro_theme_builder_conditions))
157 + {
158 + foreach($pro_theme_builder_conditions['header'] as $header_post_id => $header_on_pages)
159 + {
160 + foreach($header_on_pages as $pages)
161 + {
162 + $accepted_page_id = substr($pages, strrpos($pages, '/')+1);
151 163
152 - if ($accepted_page_id == $listing_page_id) {
164 + if($accepted_page_id == $listing_page_id)
165 + {
153 166 // render header content
154 167
155 168 $elementor_instance = \Elementor\Plugin::instance();
156 169 $content = $elementor_instance->frontend->get_builder_content_for_display($header_post_id);
157 -
158 - echo wp_kses_post($content);
170 +
171 + echo wp_kses_post( $content );
159 172 return;
160 173 }
161 174 }
162 175 }
@@ -162,26 +175,29 @@
162 175 }
163 176 }
164 177 }
165 178
166 -function wdk_do_footer()
167 -{
179 +function wdk_do_footer() {
168 180 // get all elementor pro builder conditions
169 181 $pro_theme_builder_conditions = get_option('elementor_pro_theme_builder_conditions');
170 182 $listing_page_id = get_option('wdk_listing_page');
171 183
172 - if (!empty($pro_theme_builder_conditions)) {
173 - foreach ($pro_theme_builder_conditions['footer'] as $footer_post_id => $footer_on_pages) {
174 - foreach ($footer_on_pages as $pages) {
175 - $accepted_page_id = substr($pages, strrpos($pages, '/') + 1);
184 + if(!empty($pro_theme_builder_conditions))
185 + {
186 + foreach($pro_theme_builder_conditions['footer'] as $footer_post_id => $footer_on_pages)
187 + {
188 + foreach($footer_on_pages as $pages)
189 + {
190 + $accepted_page_id = substr($pages, strrpos($pages, '/')+1);
176 191
177 - if ($accepted_page_id == $listing_page_id) {
192 + if($accepted_page_id == $listing_page_id)
193 + {
178 194 // render footer content
179 195
180 196 $elementor_instance = \Elementor\Plugin::instance();
181 197 $content = $elementor_instance->frontend->get_builder_content_for_display($footer_post_id);
182 -
183 - echo wp_kses_post($content);
198 +
199 + echo wp_kses_post( $content );
184 200 return;
185 201 }
186 202 }
187 203 }
@@ -189,9 +205,10 @@
189 205 }
190 206
191 207 function wdk_do_body_class($classes)
192 208 {
193 - if (class_exists('Elementor\Plugin')) {
209 + if(class_exists('Elementor\Plugin'))
210 + {
194 211 $elementor_instance = \Elementor\Plugin::instance();
195 212 $classes = $elementor_instance->frontend->body_class();
196 213 }
197 214
@@ -197,275 +214,262 @@
197 214
198 215 return $classes;
199 216 }
200 217
201 -function wdk_page_template($template)
202 -{
218 +function wdk_page_template ($template) {
203 219 global $wp_query;
204 - if (isset($wp_query->post))
205 - if ($wp_query->post->post_type == 'wdk-listing') {
206 - $listing_page_id = get_option('wdk_listing_page');
207 - $template_elem = get_post_meta($listing_page_id, '_wp_page_template', true);
220 + if(isset($wp_query->post))
221 + if($wp_query->post->post_type == 'wdk-listing')
222 + {
223 + $listing_page_id = get_option('wdk_listing_page');
224 + $template_elem = get_post_meta($listing_page_id, '_wp_page_template', true);
208 225
209 - if ($template_elem == 'elementor_theme') {
210 - // for elementor pro theme builder basic support
211 - $template_elem = 'elementor_canvas';
226 + if($template_elem == 'elementor_theme')
227 + {
228 + // for elementor pro theme builder basic support
229 + $template_elem = 'elementor_canvas';
212 230
213 - add_filter('body_class', 'wdk_do_body_class');
214 - add_action('elementor/page_templates/canvas/before_content', 'wdk_do_header', 0);
215 - add_action('elementor/page_templates/canvas/after_content', 'wdk_do_footer', 0);
216 - }
231 + add_filter( 'body_class', 'wdk_do_body_class' );
232 + add_action( 'elementor/page_templates/canvas/before_content', 'wdk_do_header' , 0 );
233 + add_action( 'elementor/page_templates/canvas/after_content', 'wdk_do_footer' , 0 );
234 + }
217 235
218 - if ($template_elem == 'elementor_canvas' || $template_elem == 'elementor_header_footer') {
219 - /**
220 - * @var \Elementor\Modules\PageTemplates\Module $page_templates_module
221 - */
222 - if (class_exists('Elementor\Plugin')) {
223 - $page_templates_module = Elementor\Plugin::instance()->modules_manager->get_modules('page-templates');
224 - $template = $page_templates_module->get_template_path($template_elem);
225 - }
236 + if($template_elem == 'elementor_canvas' || $template_elem == 'elementor_header_footer' ){
237 + /**
238 + * @var \Elementor\Modules\PageTemplates\Module $page_templates_module
239 + */
240 + if(class_exists('Elementor\Plugin'))
241 + {
242 + $page_templates_module = Elementor\Plugin::instance()->modules_manager->get_modules( 'page-templates' );
243 + $template = $page_templates_module->get_template_path( $template_elem );
226 244 }
227 245 }
246 + }
228 247 return $template;
229 248 }
230 -add_filter('single_template', 'wdk_page_template');
249 +add_filter ('single_template', 'wdk_page_template');
231 250
232 251 add_action('admin_bar_menu', 'wdk_add_toolbar_items', 100);
233 -function wdk_add_toolbar_items($admin_bar)
234 -{
252 +function wdk_add_toolbar_items($admin_bar){
235 253 global $wp_query;
236 - if (isset($wp_query->post))
237 - if ($wp_query->post->post_type == 'wdk-listing') {
238 - $admin_bar->add_menu(array(
239 - 'id' => 'edit',
240 - 'title' => __('Edit Listing', 'wpdirectorykit'),
241 - 'href' => admin_url('admin.php?page=wdk_listing&id=' . $wp_query->post->ID),
242 - ));
243 - }
254 + if(isset($wp_query->post))
255 + if ($wp_query->post->post_type == 'wdk-listing') {
256 + $admin_bar->add_menu(array(
257 + 'id' => 'edit',
258 + 'title' => __('Edit Listing', 'wpdirectorykit'),
259 + 'href' => admin_url('admin.php?page=wdk_listing&id='.$wp_query->post->ID),
260 + ));
261 + }
244 262 }
245 263
246 -if (get_option('wdk_slug_listing_preview_page')) {
247 - function wdk_custom_listing_preview_page_slug($args, $post_type)
248 - {
249 -
250 - if (get_option('wdk_slug_listing_preview_page_changed')) {
264 +if(get_option('wdk_slug_listing_preview_page')){
265 + function wdk_custom_listing_preview_page_slug( $args, $post_type ) {
266 +
267 + if(get_option('wdk_slug_listing_preview_page_changed')){
251 268 update_option('wdk_slug_listing_preview_page_changed', 0);
252 269 flush_rewrite_rules();
253 270 }
254 271
255 - /*item post type slug*/
256 - if ('wdk-listing' === $post_type) {
257 - $args['rewrite']['slug'] = get_option('wdk_slug_listing_preview_page');
272 + /*item post type slug*/
273 + if ( 'wdk-listing' === $post_type ) {
274 + $args['rewrite']['slug'] = get_option('wdk_slug_listing_preview_page');
258 275 }
259 -
276 +
260 277 return $args;
261 278 }
262 - add_filter('register_post_type_args', 'wdk_custom_listing_preview_page_slug', 10, 2);
279 + add_filter( 'register_post_type_args', 'wdk_custom_listing_preview_page_slug', 10, 2 );
263 280 }
264 281
265 -// Hook example, custom page title for
266 -add_filter('document_title_parts', function ($title_parts_array) {
267 - global $wp_query;
268 - if (isset($wp_query->post) && $wp_query->post->post_type === 'wdk-listing') {
269 - $title_parts_array['title'] = wdk_listing_seo_title();
270 - }
271 - return $title_parts_array;
272 -});
273 -
274 282 /* seo wdk feature, wp overwrite wp_head */
275 -add_action('wp_head', 'wdk_seo_metatags');
276 -function wdk_seo_metatags()
277 -{
283 +add_action( 'wp_head', 'wdk_seo_metatags');
284 +function wdk_seo_metatags(){
278 285 global $wp_query;
279 - if (isset($wp_query->post))
280 - if ($wp_query->post->post_type == 'wdk-listing') {
281 - $wdk_listing_id = $wp_query->post->ID;
282 - if ($wdk_listing_id) {
283 - global $Winter_MVC_WDK;
284 - $Winter_MVC_WDK->model('field_m');
285 - $Winter_MVC_WDK->load_helper('listing');
286 + if(isset($wp_query->post))
287 + if($wp_query->post->post_type == 'wdk-listing')
288 + {
289 + $wdk_listing_id = $wp_query->post->ID;
290 + if($wdk_listing_id) {
291 + global $Winter_MVC_WDK;
292 + $Winter_MVC_WDK->model('field_m');
293 + $Winter_MVC_WDK->load_helper('listing');
294 +
295 + echo '<meta name="title" content="'.esc_attr(wp_get_document_title()).'">'.PHP_EOL;
296 + echo '<meta property="og:type" content="'.esc_attr(get_post_type()).'" />'.PHP_EOL;
297 + echo '<meta property="og:title" content="'.esc_attr(wp_get_document_title()).'" />'.PHP_EOL;
286 298
287 - $seo_title = wp_get_document_title();
299 + if(get_option('wdk_seo_description')) {
300 + echo '<meta name="description" content="'.esc_attr(wp_trim_words(wp_strip_all_tags(wpautop(wdk_field_value(get_option('wdk_seo_description'), $wdk_listing_id))), 20)).'">'.PHP_EOL;
301 + echo '<meta property="og:description" content="'.esc_attr(wp_trim_words(wp_strip_all_tags(wpautop(wdk_field_value(get_option('wdk_seo_description'), $wdk_listing_id))), 20)).'">'.PHP_EOL;
302 + }
303 +
304 + if(get_option('wdk_seo_keywords')) {
305 + echo '<meta name="keywords" content="'.esc_attr(wp_trim_words(wp_strip_all_tags(wpautop(wdk_field_value(get_option('wdk_seo_keywords'), $wdk_listing_id))), 20)).'">'.PHP_EOL;
306 + }
288 307
289 - echo '<meta name="title" content="' . esc_attr($seo_title) . '">' . PHP_EOL;
290 - echo '<meta property="og:type" content="' . esc_attr(get_post_type()) . '" />' . PHP_EOL;
291 - echo '<meta property="og:title" content="' . esc_attr($seo_title) . '" />' . PHP_EOL;
292 -
293 - if (get_option('wdk_seo_description')) {
294 - echo '<meta name="description" content="' . esc_attr(wp_trim_words(wp_strip_all_tags(wpautop(wdk_field_value(get_option('wdk_seo_description'), $wdk_listing_id))), 20)) . '">' . PHP_EOL;
295 - echo '<meta property="og:description" content="' . esc_attr(wp_trim_words(wp_strip_all_tags(wpautop(wdk_field_value(get_option('wdk_seo_description'), $wdk_listing_id))), 20)) . '">' . PHP_EOL;
296 - }
297 -
298 - if (get_option('wdk_seo_keywords')) {
299 - echo '<meta name="keywords" content="' . esc_attr(wp_trim_words(wp_strip_all_tags(wpautop(wdk_field_value(get_option('wdk_seo_keywords'), $wdk_listing_id))), 20)) . '">' . PHP_EOL;
300 - }
301 -
302 - if (!in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))) {
303 - echo '<meta property="og:image" content="' . esc_url(wdk_image_src(array('listing_images' => wdk_field_value('listing_images', $wdk_listing_id)), 'full')) . '" />' . PHP_EOL;
304 - }
308 + if(!in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))){
309 + echo '<meta property="og:image" content="'.esc_url(wdk_image_src(array('listing_images'=>wdk_field_value('listing_images', $wdk_listing_id)), 'full')).'" />'.PHP_EOL;
305 310 }
306 311 }
312 + }
307 313 }
308 314
309 315 /* disable some sw_seo feature if Yost seo plugin detected, for only for listing preview page and profile page */
310 -add_action('template_redirect', 'wdk_disable_seo');
311 -function wdk_disable_seo()
312 -{
316 +add_action( 'template_redirect', 'wdk_disable_seo' );
317 +function wdk_disable_seo() {
313 318 global $wp_query;
314 - if (isset($wp_query->post))
315 - if ($wp_query->post->post_type == 'wdk-listing') {
316 - if (in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))) {
317 - add_filter('wpseo_title', '__return_false');
318 - add_filter('wpseo_metadesc', '__return_false');
319 - add_filter('wpseo_opengraph_url', '__return_false');
320 - add_filter('wpseo_opengraph_title', '__return_false');
321 - add_filter('wpseo_opengraph_image', '__return_false');
322 - add_filter('wpseo_opengraph_type', '__return_false');
323 - add_filter('wpseo_opengraph_desc', '__return_false');
324 - }
319 + if(isset($wp_query->post))
320 + if($wp_query->post->post_type == 'wdk-listing')
321 + {
322 + if(in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))){
323 + add_filter( 'wpseo_title', '__return_false');
324 + add_filter( 'wpseo_metadesc', '__return_false');
325 + add_filter( 'wpseo_opengraph_url', '__return_false');
326 + add_filter( 'wpseo_opengraph_title', '__return_false');
327 + add_filter( 'wpseo_opengraph_image', '__return_false');
328 + add_filter( 'wpseo_opengraph_type', '__return_false');
329 + add_filter( 'wpseo_opengraph_desc', '__return_false');
325 330 }
331 + }
326 332 }
327 333
328 -function wdk_yoast_presentation($presentation)
329 -{
334 +function wdk_yoast_presentation($presentation) {
330 335 global $wp_query;
331 - if (isset($wp_query->post))
332 - if ($wp_query->post->post_type == 'wdk-listing') {
333 - $wdk_listing_id = $wp_query->post->ID;
334 - if ($wdk_listing_id) {
335 - global $Winter_MVC_WDK;
336 - $Winter_MVC_WDK->model('field_m');
337 - $Winter_MVC_WDK->load_helper('listing');
336 + if(isset($wp_query->post))
337 + if ($wp_query->post->post_type == 'wdk-listing')
338 + {
339 + $wdk_listing_id = $wp_query->post->ID;
340 + if($wdk_listing_id) {
341 + global $Winter_MVC_WDK;
342 + $Winter_MVC_WDK->model('field_m');
343 + $Winter_MVC_WDK->load_helper('listing');
338 344
339 - $presentation->open_graph_images = [
340 - [
341 - 'url' => esc_url(wdk_image_src(array('listing_images' => wdk_field_value('listing_images', $wdk_listing_id)), 'full')),
342 - ]
343 - ];
344 - }
345 + $presentation->open_graph_images = [
346 + [
347 + 'url' => esc_url(wdk_image_src(array('listing_images'=>wdk_field_value('listing_images', $wdk_listing_id)), 'full')),
348 + ]
349 + ];
350 +
345 351 }
352 + }
346 353 return $presentation;
347 354 }
348 355 add_filter('wpseo_frontend_presentation', 'wdk_yoast_presentation', 30);
349 356
350 -add_filter('wp_kses_allowed_html', 'wpdirectorykit_wpkses_post_iframe', 10, 2);
351 -function wpdirectorykit_wpkses_post_iframe($tags, $context)
352 -{
353 - if ('post' === $context) {
354 - $tags['iframe'] = array(
355 - 'src' => true,
356 - 'height' => true,
357 - 'width' => true,
358 - 'frameborder' => true,
359 - 'allowfullscreen' => true,
360 - );
361 - }
362 - return $tags;
357 +add_filter( 'wp_kses_allowed_html', 'wpdirectorykit_wpkses_post_iframe', 10, 2 );
358 +function wpdirectorykit_wpkses_post_iframe( $tags, $context ) {
359 + if ( 'post' === $context ) {
360 + $tags['iframe'] = array(
361 + 'src' => true,
362 + 'height' => true,
363 + 'width' => true,
364 + 'frameborder' => true,
365 + 'allowfullscreen' => true,
366 + );
367 + }
368 + return $tags;
363 369 }
364 370
365 -add_action('wdk-membership/dash/homepage/widgets', function () {
366 - if (!current_user_can('edit_own_listings') && !wmvc_user_in_role('administrator')) return false;
367 -
371 +add_action('wdk-membership/dash/homepage/widgets', function() {
372 + if(!current_user_can('edit_own_listings') && !wmvc_user_in_role('administrator')) return false;
373 +
368 374 global $Winter_MVC_WDK;
369 375 $Winter_MVC_WDK->model('listing_m');
370 376 $total_items = $Winter_MVC_WDK->listing_m->total(array(), TRUE, get_current_user_id());
371 - if (function_exists('wdk_dash_url')) {
372 -?>
373 - <div class="wdk-col-12 wdk-col-md-3 wdk-membership-dash-widget_listings">
374 - <a href="<?php echo esc_url(wdk_dash_url('dash_page=listings')); ?>" class="wdk-membership-dash-widget">
375 - <span class="wdk-content">
376 - <span class="icon"><span class="dashicons dashicons-location"></span></span>
377 - </span>
378 - <span class="wdk-side">
379 - <span class="title"><?php echo esc_html__('Listings', 'wpdirectorykit'); ?></span>
380 - <span class="wdk-count"><?php echo esc_html($total_items); ?></span>
381 - </span>
382 - </a>
383 - </div>
384 - <?php
377 + if(function_exists('wdk_dash_url')){
378 + ?>
379 + <div class="wdk-col-12 wdk-col-md-3 wdk-membership-dash-widget_listings">
380 + <a href="<?php echo esc_url(wdk_dash_url('dash_page=listings'));?>" class="wdk-membership-dash-widget">
381 + <span class="wdk-content">
382 + <span class="icon"><span class="dashicons dashicons-location"></span></span>
383 + </span>
384 + <span class="wdk-side">
385 + <span class="title"><?php echo esc_html__('Listings','wpdirectorykit');?></span>
386 + <span class="wdk-count"><?php echo esc_html($total_items);?></span>
387 + </span>
388 + </a>
389 + </div>
390 +<?php
385 391 }
386 -}, 1);
392 +},1);
387 393
388 -add_action('wdk-membership/dash/homepage/widgets', function () {
394 +add_action('wdk-membership/dash/homepage/widgets', function() {
389 395 global $Winter_MVC_WDK;
390 396 $Winter_MVC_WDK->model('messages_m');
391 397 $total_items = $Winter_MVC_WDK->messages_m->total_merge(array(), TRUE, get_current_user_id());
392 - if (function_exists('wdk_dash_url')) {
398 + if(function_exists('wdk_dash_url')){
393 399 ?>
394 - <div class="wdk-col-12 wdk-col-md-3 wdk-membership-dash-widget_messsages">
395 - <a href="<?php echo esc_url(wdk_dash_url('dash_page=messages')); ?>" class="wdk-membership-dash-widget">
396 - <span class="wdk-content">
397 - <span class="icon"><span class="dashicons dashicons-email"></span></span>
398 - </span>
399 - <span class="wdk-side">
400 - <span class="title"><?php echo esc_html__('Messages', 'wpdirectorykit'); ?></span>
401 - <span class="wdk-count"><?php echo esc_html($total_items); ?></span>
402 - </span>
403 - </a>
404 - </div>
405 - <?php
400 + <div class="wdk-col-12 wdk-col-md-3 wdk-membership-dash-widget_messsages">
401 + <a href="<?php echo esc_url(wdk_dash_url('dash_page=messages'));?>" class="wdk-membership-dash-widget">
402 + <span class="wdk-content">
403 + <span class="icon"><span class="dashicons dashicons-email"></span></span>
404 + </span>
405 + <span class="wdk-side">
406 + <span class="title"><?php echo esc_html__('Messages','wpdirectorykit');?></span>
407 + <span class="wdk-count"><?php echo esc_html($total_items);?></span>
408 + </span>
409 + </a>
410 + </div>
411 +<?php
406 412 }
407 413 });
408 414
409 -add_filter('woocommerce_enable_setup_wizard', '__return_false');
415 +add_filter( 'woocommerce_enable_setup_wizard', '__return_false' );
410 416
411 417
412 418 /* detected in smart search location and replace to location id */
413 -add_action('template_redirect', 'wdk_search_parameters');
414 -function wdk_search_parameters()
415 -{
419 +add_action( 'template_redirect', 'wdk_search_parameters' );
420 +function wdk_search_parameters() {
416 421 global $wp_query;
417 - if (!empty($_GET['field_search'])) {
422 + if(!empty($_GET['field_search'])) {
418 423 global $Winter_MVC_WDK;
419 424 $Winter_MVC_WDK->model('location_m');
420 - $location = $Winter_MVC_WDK->location_m->get_by(array('location_title' => wdk_esc_sql(sanitize_text_field($_GET['field_search']))), TRUE);
421 - if ($location) {
425 + $location = $Winter_MVC_WDK->location_m->get_by(array('location_title'=>sanitize_text_field($_GET['field_search'])), TRUE);
426 + if($location) {
422 427 $url = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
423 -
424 - $query_link = substr($url, strpos($url, '?') + 1);
428 +
429 + $query_link = substr($url, strpos($url, '?')+1);
425 430 $clear_link = substr($url, 0, strpos($url, '?'));
426 431
427 432 $string_par = array();
428 - parse_str($query_link, $string_par);
433 + parse_str( $query_link, $string_par);
429 434 unset($string_par['field_search']);
430 435 $string_par['search_location'] = $location->idlocation;
431 -
432 - $new_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . '://' . $clear_link . '?' . http_build_query($string_par);
436 +
437 + $new_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http").'://'.$clear_link.'?'.http_build_query($string_par);
433 438 wp_redirect($new_url);
434 - exit;
439 + exit;
435 440 }
441 +
436 442 }
443 +
437 444 }
438 445
439 -add_filter('plugin_action_links_wpdirectorykit/wpdirectorykit.php', 'wdk_buy_link');
440 -function wdk_buy_link($links)
441 -{
442 - // Build and escape the URL.
443 - $url = esc_url(get_admin_url() . 'admin.php?page=wdk_addons');
444 - // Create the link.
445 - $settings_link = "<a style=\"color:rgb(0, 163, 42);font-weight:bold;\" href='$url'>" . esc_html__('Check Premium Features', 'wpdirectorykit') . '</a>';
446 - // Adds the link to the end of the array.
446 +add_filter( 'plugin_action_links_wpdirectorykit/wpdirectorykit.php', 'wdk_buy_link' );
447 +function wdk_buy_link( $links ) {
448 + // Build and escape the URL.
449 + $url = esc_url( get_admin_url().'admin.php?page=wdk_addons' );
450 + // Create the link.
451 + $settings_link = "<a style=\"color:rgb(0, 163, 42);font-weight:bold;\" href='$url'>" . __( 'Check Premium Features', 'wpdirectorykit') . '</a>';
452 + // Adds the link to the end of the array.
447 453 $links[] = $settings_link;
448 - return $links;
454 + return $links;
449 455 }
450 456
451 457
452 -add_filter('wpdirectorykit/listing/field/value', 'wdk_filter_field_format_date', 2, 10);
453 -if (!function_exists('wdk_filter_field_format_date')) {
454 - function wdk_filter_field_format_date($field_value = '', $field_id = NULL, $number_format = TRUE)
455 - {
456 - if (in_array($field_id, array('date', 'date-modified'))) {
457 - $field_value = wdk_get_date($field_value, TRUE);
458 +add_filter( 'wpdirectorykit/listing/field/value', 'wdk_filter_field_format_date', 2, 10);
459 +if(!function_exists('wdk_filter_field_format_date')) {
460 + function wdk_filter_field_format_date ($field_value = '', $field_id = NULL, $number_format = TRUE) {
461 + if(in_array($field_id, array('date', 'date-modified'))) {
462 + $field_value = wdk_get_date($field_value, TRUE);
458 463 }
459 -
464 +
460 465 return $field_value;
461 466 }
462 467 }
463 468
464 -
469 +
465 470 // fix sitemap issue
466 -function wdk_modify_sitemap_index($content)
467 -{
471 +function wdk_modify_sitemap_index($content) {
468 472 // Modify the $content as needed
469 473 // For example, replace & with &amp;
470 474 $content = str_replace('&', '&amp;', $content);
471 475 return $content;
@@ -473,29 +477,30 @@
473 477
474 478 // Hook the filter to the wpseo_sitemap_index filter hook
475 479 add_filter('wpseo_sitemap_index', 'wdk_modify_sitemap_index');
476 480
477 -if (false) {
481 +if(false) {
478 482 // Hook example, custom page title for
479 - add_filter('document_title_parts', function ($title_parts_array) {
483 + add_filter( 'document_title_parts', function( $title_parts_array ) {
480 484 global $wp_query;
481 - if (isset($wp_query->post))
482 - if ($wp_query->post->post_type == 'wdk-listing') {
483 - $wdk_listing_id = $wp_query->post->ID;
484 - if ($wdk_listing_id) {
485 - global $Winter_MVC_WDK;
486 - $Winter_MVC_WDK->model('field_m');
487 - $Winter_MVC_WDK->load_helper('listing');
488 -
489 - $title_parts_array['title'] = wp_strip_all_tags(wpautop(wdk_field_value('post_title', $wdk_listing_id) . ' - ' . wdk_field_value('address', $wdk_listing_id)));
490 - }
485 + if(isset($wp_query->post))
486 + if($wp_query->post->post_type == 'wdk-listing')
487 + {
488 + $wdk_listing_id = $wp_query->post->ID;
489 + if($wdk_listing_id) {
490 + global $Winter_MVC_WDK;
491 + $Winter_MVC_WDK->model('field_m');
492 + $Winter_MVC_WDK->load_helper('listing');
493 +
494 + $title_parts_array['title'] = wp_strip_all_tags(wpautop(wdk_field_value('post_title', $wdk_listing_id).' - '.wdk_field_value('address', $wdk_listing_id)));
491 495 }
496 + }
492 497 return $title_parts_array;
493 - });
498 + } );
494 499 }
495 500
496 -add_filter('tiny_mce_before_init', function ($init) {
497 - if (get_option('wdk_disable_toolbar_on_content_editor')) {
501 +add_filter('tiny_mce_before_init', function($init){
502 + if(get_option('wdk_disable_toolbar_on_content_editor')) {
498 503 $init['wpautop'] = false;
499 504 $init['toolbar'] = false;
500 505 }
501 506
@@ -504,480 +509,32 @@
504 509
505 510 /*
506 511 * configuration number_format_i18n
507 512 */
508 -add_filter('init', function ($init) {
509 -
510 - if (!get_option('wdk_disable_custom_muber_format'))
511 - if (get_option('wdk_number_format_decimal_point') || get_option('wdk_number_format_thousands_sep')) {
512 - global $wp_locale;
513 - if (get_option('wdk_number_format_decimal_point'))
514 - $wp_locale->number_format['decimal_point'] = get_option('wdk_number_format_decimal_point');
515 -
516 - if (get_option('wdk_number_format_thousands_sep'))
517 - $wp_locale->number_format['thousands_sep'] = get_option('wdk_number_format_thousands_sep');
518 - }
513 +add_filter('init', function($init){
514 + if(get_option('wdk_number_format_decimal_point') || get_option('wdk_number_format_thousands_sep')) {
515 + global $wp_locale;
516 + if(get_option('wdk_number_format_decimal_point'))
517 + $wp_locale->number_format['decimal_point'] = get_option('wdk_number_format_decimal_point');
518 +
519 + if(get_option('wdk_number_format_thousands_sep'))
520 + $wp_locale->number_format['thousands_sep'] = get_option('wdk_number_format_thousands_sep');
521 + }
519 522 });
520 523
521 -add_filter('wdk/listings/results', function ($listings) {
524 +add_filter( 'wdk/listings/results', function($listings) {
522 525 global $Winter_MVC_WDK;
523 526 $Winter_MVC_WDK->model('field_m');
524 527 $Winter_MVC_WDK->load_helper('listing');
525 528
526 529 $listings_ids = array();
527 - foreach ($listings as $listing) {
530 + foreach($listings as $listing) {
528 531 $listings_ids[] = $listing->post_id;
529 532 }
530 533
531 - if (!empty($listings_ids)) {
534 + if(!empty($listings_ids)) {
532 535 $Winter_MVC_WDK->listing_m->update_listings_views($listings_ids);
533 536 }
534 537
535 538 return $listings;
536 -});
537 -
538 -add_filter('body_class', function ($classes) {
539 -
540 - if (isset($_GET['popup'])) {
541 - $classes[] = 'popup-mode';
542 - }
543 -
544 - return $classes;
545 -});
546 -
547 -add_action('init', function () {
548 - $required_version = '1.0.5';
549 - $plugin_file = 'wdk-membership/wdk-membership.php';
550 -
551 - if (!file_exists(WP_PLUGIN_DIR . '/' . $plugin_file)) {
552 - return;
553 - }
554 -
555 - if (! function_exists('get_plugins')) {
556 - require_once ABSPATH . 'wp-admin/includes/plugin.php';
557 - }
558 -
559 - $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
560 -
561 - if (is_plugin_active($plugin_file) && isset($plugin_data['Version']) && version_compare($plugin_data['Version'], $required_version, '<')) {
562 -
563 - if (isset($_GET['page']) && !empty($plugin_data['TextDomain']) && strpos($_GET['page'], $plugin_data['TextDomain']) === 0) {
564 - $message = '<span class="dashicons dashicons-warning"></span> &nbsp;&nbsp;' . esc_html__('Important!', 'wpdirectorykit') . '<br>';
565 - $message .= wdk_sprintf(
566 - /* translators: 1: Opening p tag, 2: Closing p tag, 3: Closing a tag, 4: Opening a tag for Gumroad, 5: Opening a tag for WP Rollback, 6: Opening a tag for contact page. */
567 - __('%1$sYou need to update WDK Membership Addon to ensure compatibility with the latest plugin version. You can download the latest addons from your Gumroad account: %4$shttps://gumroad.com/library%3$s%2$s or update via freemius, depends where you purchased our premium plugin.
568 - %1$sIf you prefer to continue using older plugin versions, please note that this increases security risks and is not recommended. However, you can roll back to a previous version using the following plugin: %5$shttps://wordpress.org/plugins/wp-rollback/%3$s%2$s
569 - %1$sIf you experience any issues or need assistance, feel free to contact us through any available channel. We continue to provide fully human-based support: %6$shttps://wpdirectorykit.com/contact/%3$s%2$s', 'wpdirectorykit'),
570 - '<p>',
571 - '</p>',
572 - '</a>',
573 - '<a target="_blank" href="https://gumroad.com/library">',
574 - '<a target="_blank" href="https://wordpress.org/plugins/wp-rollback/">',
575 - '<a target="_blank" href="https://wpdirectorykit.com/contact/">'
576 - );
577 - wdk_notify_admin('wdk_notify_wpdirectorykit_required_version_' . $plugin_data['TextDomain'], $message, '', 'notice notice-error wdk-notice-upgrade');
578 - }
579 - }
580 -});
581 -
582 -
583 -
584 -add_action('admin_footer', function () {
585 -
586 - if (file_exists(WPDIRECTORYKIT_PATH . 'premium_functions.php')) {
587 - return;
588 - }
589 -
590 - if (!current_user_can('manage_options')) {
591 - return;
592 - }
593 -
594 - $user_id = get_current_user_id();
595 - $last_closed = (int) get_user_meta($user_id, '_wdk_admin_popup_closed', true);
596 -
597 - // 14 days = 1209600 seconds
598 - if ($last_closed && (time() - $last_closed) < 1209600) {
599 - return;
600 - }
601 - ?>
602 - <div id="wdk-admin-popup">
603 - <div class="wdk-admin-popup-inner">
604 - <button id="wdk-admin-popup-close" class="wdk-admin-popup-close">&times;</button>
605 -
606 - <div class="wdk-popup-header">
607 - <h2>🚀 <?php echo esc_html__('Welcome to our free WP Directory Kit plugin!', 'wpdirectorykit'); ?></h2>
608 - </div>
609 -
610 - <div class="wdk-popup-content">
611 -
612 - <p>💬 <?php echo esc_html__('If you encounter any issues, please contact us via Telegram, WhatsApp, or email.', 'wpdirectorykit'); ?></p>
613 -
614 - <p class="wdk-contact">
615 - <strong>📩 <?php echo esc_html__('Telegram', 'wpdirectorykit'); ?>:</strong>
616 - <a href="https://t.me/wpdirectorykit" target="_blank">https://t.me/wpdirectorykit</a><br>
617 -
618 - <strong>📱 <?php echo esc_html__('WhatsApp', 'wpdirectorykit'); ?>:</strong>
619 - <a href="https://wa.me/+385959055516" target="_blank">https://wa.me/+385959055516</a>
620 - </p>
621 -
622 - <p class="wdk-links">
623 - ✨ <?php echo esc_html__('Check out our premium features here:', 'wpdirectorykit'); ?><br>
624 - <a href="https://wpdirectorykit.com/plugins/" target="_blank">https://wpdirectorykit.com/plugins/</a>
625 - </p>
626 -
627 - <p class="wdk-links">
628 - 🎨 <?php echo esc_html__('and other cool designs here:', 'wpdirectorykit'); ?><br>
629 - <a href="https://wpdirectorykit.com/themes/" target="_blank">https://wpdirectorykit.com/themes/</a>
630 - </p>
631 -
632 - <p class="wdk-features">
633 - ⚙️ <?php echo esc_html__('We offer everything you need for a professional directory website, including login and registration, a front-end dashboard, agent search, individual agent pages, booking, multi-currency support, import tools, favorites, reviews, listing comparisons, SVG maps, live chat, and much more!', 'wpdirectorykit'); ?>
634 - </p>
635 -
636 - <p class="wdk-footer-note">
637 - ❤️ <?php echo esc_html__('Please consider supporting our work by purchasing one of our premium features — we’ll do our very best to assist you!', 'wpdirectorykit'); ?>
638 - </p>
639 -
640 - <!-- ACTION BUTTONS -->
641 - <div class="wdk-actions">
642 - <button class="wdk-btn wdk-dismiss wdk-admin-popup-close"><?php echo esc_html__('Not interested', 'wpdirectorykit'); ?></button>
643 -
644 - <a href="https://wpdirectorykit.com/plugins/" target="_blank" class="wdk-btn wdk-primary wdk-premium">
645 - <?php echo esc_html__('Check premium plugins', 'wpdirectorykit'); ?>
646 - </a>
647 - </div>
648 -
649 - </div>
650 - </div>
651 -
652 - <?php
653 - $popup_css = '
654 - #wdk-admin-popup {
655 - position: fixed;
656 - inset: 0;
657 - background: rgba(0,0,0,0.6);
658 - backdrop-filter: blur(6px);
659 - display: flex;
660 - justify-content: center;
661 - align-items: center;
662 - z-index: 99999;
663 - opacity: 0;
664 - visibility: hidden;
665 - transition: all .3s ease;
666 - }
667 - #wdk-admin-popup.show {
668 - opacity: 1;
669 - visibility: visible;
670 - }
671 - .wdk-admin-popup-inner {
672 - background: linear-gradient(135deg, #ffffff, #f9fafb);
673 - padding: 35px;
674 - width: 700px;
675 - max-width: calc(100% - 30px);
676 - border-radius: 16px;
677 - box-shadow: 0 20px 60px rgba(0,0,0,0.25);
678 - transform: translateY(20px);
679 - transition: all .3s ease;
680 - position: relative;
681 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
682 - line-height: 1.6;
683 - }
684 - #wdk-admin-popup.show .wdk-admin-popup-inner {
685 - transform: translateY(0);
686 - }
687 - #wdk-admin-popup-close {
688 - position: absolute;
689 - top: 12px;
690 - right: 14px;
691 - border: none;
692 - background: transparent;
693 - font-size: 22px;
694 - cursor: pointer;
695 - opacity: .6;
696 - }
697 - #wdk-admin-popup-close:hover {
698 - opacity: 1;
699 - }
700 - .wdk-popup-header h2 {
701 - margin: 0 0 15px;
702 - font-size: 22px;
703 - }
704 - .wdk-popup-content p {
705 - margin: 12px 0;
706 - color: #444;
707 - }
708 - .wdk-contact {
709 - background: #f3f4f6;
710 - padding: 12px;
711 - border-radius: 10px;
712 - }
713 - .wdk-links {
714 - background: #eef2ff;
715 - padding: 12px;
716 - border-radius: 10px;
717 - }
718 - .wdk-features {
719 - font-size: 13px;
720 - color: #555;
721 - }
722 - .wdk-footer-note {
723 - font-size: 13px;
724 - color: #777;
725 - }
726 - .wdk-popup-content a {
727 - color: #4f46e5;
728 - text-decoration: none;
729 - word-break: break-all;
730 - }
731 - .wdk-popup-content a:hover {
732 - text-decoration: underline;
733 - }
734 - .wdk-actions {
735 - margin-top: 25px;
736 - display: flex;
737 - justify-content: flex-start;
738 - gap: 10px;
739 - }
740 - .wdk-btn {
741 - padding: 10px 16px;
742 - border-radius: 8px;
743 - border: none;
744 - cursor: pointer;
745 - font-weight: 600;
746 - text-decoration: none;
747 - transition: all .15s;
748 - }
749 - .wdk-btn:hover {
750 - filter: brightness(0.95);
751 - text-decoration: none;
752 - }
753 - .wdk-dismiss {
754 - background: #eee;
755 - }
756 - .wdk-popup-content .wdk-primary {
757 - background: #4f46e5;
758 - color: #fff;
759 - text-decoration: none;
760 - }
761 - ';
762 -
763 - // Enqueue a WordPress built-in style to attach inline CSS to, or register a custom handle.
764 - wp_register_style('wdk-admin-popup', false);
765 - wp_enqueue_style('wdk-admin-popup');
766 - wp_add_inline_style('wdk-admin-popup', $popup_css);
767 - ?>
768 - <?php
769 - $popup_js = "
770 -document.addEventListener('DOMContentLoaded', function() {
771 - const popup = document.getElementById('wdk-admin-popup');
772 -
773 - if (popup) {
774 - setTimeout(() => popup.classList.add('show'), 2000);
775 -
776 - const closeBtns = document.querySelectorAll('.wdk-admin-popup-close');
777 -
778 - function closePopup() {
779 - popup.classList.remove('show');
780 -
781 - fetch(ajaxurl, {
782 - method: 'POST',
783 - headers: {
784 - 'Content-Type': 'application/x-www-form-urlencoded'
785 - },
786 - body: 'action=wdk_close_popup'
787 - });
788 - }
789 -
790 - if (closeBtns && closeBtns.length > 0) {
791 - closeBtns.forEach(btn => {
792 - btn.addEventListener('click', closePopup);
793 - });
794 - }
795 -
796 - popup.addEventListener('click', function(e) {
797 - if (e.target === popup) {
798 - closePopup();
799 - }
800 - });
801 -
802 - }
803 -});
804 -";
805 - wp_register_script('wdk-admin-popup', false);
806 - wp_enqueue_script('wdk-admin-popup');
807 - wp_add_inline_script('wdk-admin-popup', $popup_js);
808 - ?>
809 - </div>
810 -<?php
811 -});
812 -
813 -add_action('wp_ajax_wdk_close_popup', function () {
814 - if (!current_user_can('manage_options')) {
815 - wp_die();
816 - }
817 -
818 - update_user_meta(get_current_user_id(), '_wdk_admin_popup_closed', time());
819 -
820 - wp_die();
821 -});
822 -
823 -
824 -add_filter('body_class', function ($classes) {
825 - if (get_option('wdk_disable_outline_on_focus')) {
826 - $classes[] = 'wdk_disable_outline_on_focus';
827 - }
828 - return $classes;
829 -});
830 -
831 -
832 -
833 -
834 -add_action('wdk/listing/edit/aboveform', function () {
835 -
836 - if (function_exists('fpai_register_settings')) return false;
837 -
838 -
839 - $popup_css = '
840 - .fpai-ai-button {
841 - display: inline-flex;
842 - align-items: center;
843 - gap: 8px;
844 - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
845 - color: white;
846 - padding: 12px 20px;
847 - border-radius: 25px;
848 - cursor: pointer;
849 - font-weight: 600;
850 - font-size: 14px;
851 - box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
852 - transition: all 0.3s ease;
853 - margin-bottom: 15px;
854 - border: none;
855 - position: relative;
856 - overflow: hidden;
857 - }
858 -
859 - .fpai-ai-button .fpai-button-text {
860 - color: #fff;
861 - }
862 -
863 - .fpai-ai-button:hover {
864 - transform: translateY(-2px);
865 - box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
866 - background: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
867 - }
868 -
869 - .fpai-ai-button:active {
870 - transform: translateY(0);
871 - }
872 -
873 - .fpai-ai-button.active {
874 - background: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
875 - transform: translateY(-1px);
876 - }
877 -
878 - /* Stars Container with Animation */
879 - .fpai-stars-container {
880 - display: flex;
881 - gap: 2px;
882 - }
883 -
884 - .fpai-star {
885 - display: inline-block;
886 - animation: sparkle 2s infinite;
887 - font-size: 12px;
888 - }
889 -
890 - .fpai-star:nth-child(1) {
891 - animation-delay: 0s;
892 - }
893 -
894 - .fpai-star:nth-child(2) {
895 - animation-delay: 0.7s;
896 - }
897 -
898 - .fpai-star:nth-child(3) {
899 - animation-delay: 1.4s;
900 - }
901 -
902 - @keyframes sparkle {
903 -
904 - 0%,
905 - 100% {
906 - opacity: 0.3;
907 - transform: scale(0.8) rotate(0deg);
908 - }
909 -
910 - 50% {
911 - opacity: 1;
912 - transform: scale(1.2) rotate(180deg);
913 - }
914 - }
915 -
916 - ';
917 -
918 - // Enqueue a WordPress built-in style to attach inline CSS to, or register a custom handle.
919 - wp_register_style('wdk-admin-popup', false);
920 - wp_enqueue_style('wdk-admin-popup');
921 - wp_add_inline_style('wdk-admin-popup', $popup_css);
922 -
923 - wp_enqueue_script('thickbox');
924 - wp_enqueue_style('thickbox');
925 -?>
926 - <a class="fpai-ai-button fpai-pro"
927 - <?php if (!file_exists(ABSPATH . 'wp-content/plugins/form-populate-with-ai/form-populate-with-ai.php')): ?>
928 - data-button-succuss="<?php echo esc_attr__('Install', 'wpdirectorykit'); ?>"
929 - data-title="<?php echo esc_attr__('Form Populate with AI', 'wpdirectorykit'); ?>"
930 - data-content="<?php echo esc_attr__('Please install our free plugin AI Form Populate to use this feature and button should open our website with plugin details', 'wpdirectorykit'); ?>"
931 - data-action="<?php echo esc_url(admin_url('plugin-install.php?tab=plugin-information&plugin=form-populate-with-ai&TB_iframe=true&width=600&height=550' )); ?>"
932 - <?php elseif (file_exists(ABSPATH . 'wp-content/plugins/form-populate-with-ai/form-populate-with-ai.php') && !function_exists('fpai_register_settings')): ?>
933 - data-button-succuss="<?php echo esc_attr__('Activate', 'wpdirectorykit'); ?>"
934 - data-title="<?php echo esc_attr__('Form Populate with AI', 'wpdirectorykit'); ?>"
935 - data-content="<?php echo esc_attr__('Please install our free plugin AI Form Populate to use this feature and button should open our website with plugin details', 'wpdirectorykit'); ?>"
936 -
937 - data-action="<?php echo esc_url(admin_url('plugin-install.php?tab=plugin-information&plugin=form-populate-with-ai&TB_iframe=true&width=600&height=550' )); ?>"
938 - <?php endif; ?>
939 - >
940 - <span class="fpai-stars-container">
941 - <span class="fpai-star">⭐</span>
942 - <span class="fpai-star">✨</span>
943 - <span class="fpai-star">🌟</span>
944 - </span>
945 - <span class="fpai-button-text"><?php echo esc_html__('Populate with AI', 'wpdirectorykit'); ?></span>
946 - </a>
947 -
948 - <script>
949 -jQuery(document).ready(function ($) {
950 - if (typeof jQuery.fn.confirm == 'function') {
951 - jQuery('.fpai-pro').off().on('click', function (e) {
952 - e.preventDefault();
953 - var self = jQuery(this)
954 - jQuery.confirm({
955 - boxWidth: '400px',
956 - useBootstrap: false,
957 - title: self.data('title'),
958 - content: self.data('content'),
959 - buttons: {
960 - cancel: function () {
961 - return true;
962 - },
963 - somethingElse: {
964 - text: self.data('button-succuss'),
965 - btnClass: 'btn-blue activate-now',
966 - keys: ['enter', 'shift'],
967 - action: function () {
968 - tb_show(
969 - self.data('title'),
970 - self.data('action')
971 - );
972 - }
973 - }
974 - }
975 - });
976 - return false;
977 - });
978 - }
979 - });
980 - </script>
981 -
982 -<?php
983 -});
539 +} )
540 +?>