PluginProbe ʕ •ᴥ•ʔ
WP Chat App / 3.6.9
WP Chat App v3.6.9
3.8.1 3.8.2 trunk 2.6 3.4 3.4.1 3.4.2 3.4.4 3.4.5 3.4.6 3.5 3.6 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0
wp-whatsapp / includes / Recommended / Recommended.php
wp-whatsapp / includes / Recommended Last commit date
assets 1 year ago views 1 year ago Recommended.php 1 year ago
Recommended.php
558 lines
1 <?php
2 defined( 'ABSPATH' ) || exit;
3 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
4
5 if ( ! class_exists( 'YayRecommended' ) ) {
6 class YayRecommended {
7
8 public $plugin_prefix = '';
9 public $sub_menu_slug = '';
10 public $recommended_plugin = array();
11
12 public function __construct( $plugin_prefix ) {
13 $this->plugin_prefix = $plugin_prefix;
14 $this->recommended_plugin = $this->get_recommended_plugins();
15 $this->do_hooks();
16 }
17
18 public function do_hooks() {
19 add_action(
20 'init',
21 function () {
22 add_action( 'admin_menu', array( $this, 'admin_menu' ) );
23 add_action( 'admin_footer', array( $this, 'add_global_script_styles' ) );
24 add_action( 'wp_ajax_yay_recommended_get_plugin_data', array( $this, 'yay_recommended_get_plugin_data' ) );
25 add_action( 'wp_ajax_yay_recommended_activate_plugin', array( $this, 'yay_recommended_activate_plugin' ) );
26 add_action( 'wp_ajax_yay_recommended_upgrade_plugin', array( $this, 'yay_recommended_upgrade_plugin' ) );
27 }
28 );
29 }
30
31 private function get_recommended_plugins() {
32 $recommended_plugins = array(
33 'filebird' => array(
34 'slug' => 'filebird',
35 'name' => 'FileBird - WordPress Media Library Folders & File Manager',
36 'short_description' => 'Organize thousands of WordPress media files in folders / categories at ease.',
37 'icon' => 'https://ps.w.org/filebird/assets/icon-128x128.gif?rev=2299145',
38 'download_link' => 'https://downloads.wordpress.org/plugin/filebird.zip',
39 'type' => array( 'featured' ),
40 'version' => 0,
41 ),
42 'yaymail' => array(
43 'slug' => 'yaymail',
44 'name' => 'YayMail - WooCommerce Email Customizer',
45 'short_description' => 'Customize WooCommerce email templates with live preview & drag and drop email builder.',
46 'icon' => 'https://ps.w.org/yaymail/assets/icon-256x256.gif?rev=2599198',
47 'download_link' => 'https://downloads.wordpress.org/plugin/yaymail.zip',
48 'type' => array( 'featured', 'woocommerce' ),
49 'version' => 0,
50 ),
51 'yaycurrency' => array(
52 'slug' => 'yaycurrency',
53 'name' => 'YayCurrency - WooCommerce Multi-Currency Switcher',
54 'short_description' => 'WooCommerce Multi-Currency made easy, powerful, and flexible.',
55 'icon' => 'https://ps.w.org/yaycurrency/assets/icon-256x256.png?rev=3056587',
56 'download_link' => 'https://downloads.wordpress.org/plugin/yaycurrency.zip',
57 'type' => array( 'featured', 'woocommerce' ),
58 'version' => 0,
59 ),
60 'yayswatches' => array(
61 'slug' => 'yayswatches',
62 'name' => 'YaySwatches - Variation Swatches for WooCommerce',
63 'short_description' => 'Optimize your variable product showcase with color swatches, image swatches, custom images, buttons, and more!',
64 'icon' => 'https://ps.w.org/yayswatches/assets/icon-256x256.png?rev=3056591',
65 'download_link' => 'https://downloads.wordpress.org/plugin/yayswatches.zip',
66 'type' => array( 'woocommerce' ),
67 'version' => 0,
68 ),
69 'yayextra' => array(
70 'slug' => 'yayextra',
71 'name' => 'YayExtra - WooCommerce Extra Product Options',
72 'short_description' => 'Add WooCommerce product options like personal engraving, print-on-demand items, gifts, custom canvas prints, and personalized products.',
73 'icon' => 'https://ps.w.org/yayextra/assets/icon-256x256.png?rev=3056586',
74 'download_link' => 'https://downloads.wordpress.org/plugin/yayextra.zip',
75 'type' => array( 'woocommerce' ),
76 'version' => 0,
77 ),
78 'yaypricing' => array(
79 'slug' => 'yaypricing',
80 'name' => 'YayPricing - WooCommerce Dynamic Pricing & Discounts',
81 'short_description' => 'Offer automatic pricing and discounts to design a powerful marketing strategy for your WooCommerce store.',
82 'icon' => 'https://ps.w.org/yaypricing/assets/icon-256x256.png?rev=3056580',
83 'download_link' => 'https://downloads.wordpress.org/plugin/yaypricing.zip',
84 'type' => array( 'woocommerce' ),
85 'version' => 0,
86 ),
87 'yaysmtp' => array(
88 'slug' => 'yaysmtp',
89 'name' => 'YaySMTP - Simple WP SMTP Mail',
90 'short_description' => 'Send WordPress emails successfully with WP Mail SMTP via your favorite Mailer.',
91 'icon' => 'https://ps.w.org/yaysmtp/assets/icon-256x256.png?rev=3056583',
92 'download_link' => 'https://downloads.wordpress.org/plugin/yaysmtp.zip',
93 'type' => array( 'featured', 'marketing' ),
94 'version' => 0,
95 ),
96 'wp-whatsapp' => array(
97 'slug' => 'wp-whatsapp',
98 'name' => 'WP Chat App',
99 'short_description' => 'Integrate WhatsApp experience directly into your WordPress website.',
100 'icon' => 'https://ps.w.org/wp-whatsapp/assets/icon-256x256.png?rev=2725670',
101 'download_link' => 'https://downloads.wordpress.org/plugin/wp-whatsapp.zip',
102 'type' => array( 'featured' ),
103 'version' => 0,
104 ),
105 'filester' => array(
106 'slug' => 'filester',
107 'name' => 'Filester - File Manager Pro',
108 'short_description' => 'Best WordPress file manager without FTP access. Clean design. No need to upgrade because this…',
109 'icon' => 'https://ps.w.org/filester/assets/icon-256x256.gif?rev=2305540',
110 'download_link' => 'https://downloads.wordpress.org/plugin/filester.zip',
111 'type' => array( 'management' ),
112 'version' => 0,
113 ),
114 'cf7-multi-step' => array(
115 'slug' => 'cf7-multi-step',
116 'name' => 'Multi Step for Contact Form 7',
117 'short_description' => 'Break your looooooong form into user-friendly steps.',
118 'icon' => 'https://ps.w.org/cf7-multi-step/assets/icon-256x256.png?rev=1994366',
119 'download_link' => 'https://downloads.wordpress.org/plugin/cf7-multi-step.zip',
120 'type' => array( 'management' ),
121 'version' => 0,
122 ),
123 'cf7-database' => array(
124 'slug' => 'cf7-database',
125 'name' => 'Database for Contact Form 7',
126 'short_description' => 'Automatically save all data submitted via Contact Form 7 to your database.',
127 'icon' => 'https://ps.w.org/cf7-database/assets/icon-128x128.png?rev=1614091',
128 'download_link' => 'https://downloads.wordpress.org/plugin/cf7-database.zip',
129 'type' => array( 'management' ),
130 'version' => 0,
131 ),
132 'wp-duplicate-page' => array(
133 'slug' => 'wp-duplicate-page',
134 'name' => 'WP Duplicate Page',
135 'short_description' => 'Clone WordPress page, post, custom post types.',
136 'icon' => 'https://ps.w.org/wp-duplicate-page/assets/icon-256x256.gif?rev=2432962',
137 'download_link' => 'https://downloads.wordpress.org/plugin/wp-duplicate-page.zip',
138 'type' => array( 'management' ),
139 'version' => 0,
140 ),
141 'notibar' => array(
142 'slug' => 'notibar',
143 'name' => 'Notibar - Notification Bar for WordPress',
144 'short_description' => 'Customizer for sticky header, notification bar, alert, promo code, marketing campaign, top banner.',
145 'icon' => 'https://ps.w.org/notibar/assets/icon-256x256.png?rev=2387855',
146 'download_link' => 'https://downloads.wordpress.org/plugin/notibar.zip',
147 'type' => array( 'marketing' ),
148 'version' => 0,
149 ),
150 );
151 return $recommended_plugins;
152 }
153
154 public function admin_menu() {
155 $this->sub_menu_slug = add_submenu_page( 'nta_whatsapp', __( 'Recommended Plugins', 'filebird' ), __( 'Recommended Plugins', 'filebird' ), 'manage_options', 'nta_whatsapp_recommended_plugins', array( $this, 'recommended_plugins_view' ) );
156 }
157
158 public function recommended_plugins_view() {
159 if ( function_exists( 'WC' ) ) {
160 $featured_tab = '<li class="plugin-install-tab plugin-install-featured" data-tab="featured"><a href="#" >Featured</a> </li>';
161 $woo_tab = '<li class="plugin-install-tab plugin-install-woocommerce" data-tab="woocommerce"><a href="#" class="current" aria-current="page">WooCommerce</a> </li>';
162 } else {
163 $featured_tab = '<li class="plugin-install-tab plugin-install-featured" data-tab="featured"><a href="#" class="current" aria-current="page">Featured</a> </li>';
164 $woo_tab = '<li class="plugin-install-tab plugin-install-woocommerce" data-tab="woocommerce"><a href="#" >WooCommerce</a> </li>';
165 }
166 ?>
167 <style>
168 .yay-recommended-plugins-layout {
169 margin-top: 20px;
170 }
171 .wrap .notice, .wrap .error, div.updated {
172 display: none !important;
173 }
174 .yay-recommended-plugins-layout-header {
175 background: #fff;
176 box-sizing: border-box;
177 padding: 0;
178 z-index: 1001;
179 }
180
181 .yay-recommended-plugins-header{
182 display: flex;
183 flex-wrap: wrap;
184 justify-content: space-between;
185 align-items: center;
186 position: relative;
187 box-sizing: border-box;
188 margin: 12px 0 25px;
189 padding: 0 10px;
190 width: 100%;
191 box-shadow: 0 1px 1px rgb(0 0 0 / 4%);
192 border: 1px solid #c3c4c7;
193 background: #fff;
194 color: #50575e;
195 font-size: 13px;
196 }
197 .yay-recommended-plugins-header-title {
198 font-size: 1.2em;
199 margin-left: 8px;
200 }
201 .yay-recommended-plugins-layout .plugin-card .desc, .plugin-card .name {
202 margin-right: 0;
203 }
204 .yay-recommended-plugins-layout .plugin-card-bottom {
205 display: flex;
206 justify-content: space-between;
207 align-items: center;
208 }
209 .yay-recommended-plugins-layout .plugin-action-buttons,
210 .yay-recommended-plugins-layout .plugin-action-buttons li,
211 .plugin-card .column-rating, .plugin-card .column-updated {
212 margin-bottom: 0;
213 }
214 .yay-recommended-plugins-layout .loading-process {
215 pointer-events: none;
216 }
217 .yay-recommended-plugins-layout .column-rating {
218 min-height: 30px;
219 line-height: 30px;
220 }
221 .yay-recommended-plugins-layout .plugin-status-inactive {
222 color: #ff4d4f;
223 }
224 .yay-recommended-plugins-layout .plugin-status-active {
225 color: #52c41a;
226 }
227 .yay-recommended-plugins-layout .plugin-status-not-install {
228 color: #1d2327;
229 }
230 @media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) {
231 .yay-recommended-plugins-layout .plugin-card .column-compatibility,
232 .yay-recommended-plugins-layout .plugin-card .column-updated {
233 width: calc(100% - 220px);
234 }
235 .yay-recommended-plugins-layout .plugin-action-buttons li .button,
236 .yay-recommended-plugins-layout .plugin-action-buttons {
237 margin: 0;
238 }
239 }
240 </style>
241 <div class="wrap">
242 <div class="yay-recommended-plugins-layout">
243 <div class="yay-recommended-plugins-layout-header">
244 <div class="wp-filter yay-recommended-plugins-header">
245 <h2 class="yay-recommended-plugins-header-title"><?php esc_attr_e( 'Recommended Plugins', 'filebird' ); ?></h2>
246 <ul class="filter-links">
247 <?php
248 echo wp_kses_post( $featured_tab );
249 ?>
250 <li class="plugin-install-tab plugin-install-all" data-tab="all"><a href="#">All</a></li>
251 <?php
252 echo wp_kses_post( $woo_tab );
253 ?>
254 <li class="plugin-install-tab plugin-install-management" data-tab="management"><a href="#">Management</a> </li>
255 <li class="plugin-install-tab plugin-install-marketing" data-tab="marketing"><a href="#">Marketing</a></li>
256 </ul>
257 </div>
258 </div>
259 <div class="wp-list-table widefat plugin-install">
260 <div id="the-list"></div>
261 </div>
262 </div>
263 </div>
264 <?php
265 }
266
267 public function add_global_script_styles() {
268 $screen = get_current_screen();
269 if ( $screen->base !== $this->sub_menu_slug ) {
270 return;
271 }
272 $active_wc = function_exists( 'WC' );
273 wp_enqueue_script( 'plugin-install' );
274 wp_enqueue_script( 'thickbox' );
275 wp_enqueue_style( 'thickbox' );
276 wp_register_script( "{$this->plugin_prefix}-yayrecommended", plugin_dir_url( __FILE__ ) . '/assets/js/recommended.js', array( 'jquery' ), '1.0', true );
277 wp_localize_script(
278 "{$this->plugin_prefix}-yayrecommended",
279 'yayRecommended',
280 array(
281 'nonce' => wp_create_nonce( 'yay_recommended_nonce' ),
282 'admin_ajax' => admin_url( 'admin-ajax.php' ),
283 'woo_active' => $active_wc,
284 )
285 );
286 wp_enqueue_script( "{$this->plugin_prefix}-yayrecommended" );
287 }
288
289 public function yay_recommended_get_plugin_data() {
290 try {
291 if ( isset( $_POST['tab'] ) ) {
292 $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
293 if ( ! wp_verify_nonce( $nonce, 'yay_recommended_nonce' ) ) {
294 wp_send_json_error( array( 'mess' => __( 'Nonce is invalid', 'filebird' ) ) );
295 }
296 $tab = sanitize_text_field( $_POST['tab'] );
297 $recommended_plugins = array();
298 $recommended_data = apply_filters( 'yay_recommended_plugins_excluded', $this->recommended_plugin );
299 foreach ( $recommended_data as $key => $plugin ) {
300 if ( in_array( $tab, $plugin['type'] ) || 'all' === $tab ) {
301 $recommended_plugins[ $key ] = $plugin;
302 }
303 }
304 ob_start();
305 $path = plugin_dir_path( __FILE__ ) . '/views/content.php';
306 include $path;
307 $html = ob_get_contents();
308 ob_end_clean();
309 wp_send_json_success(
310 array(
311 'mess' => __( 'Get data success', 'filebird' ),
312 'html' => $html,
313 )
314 );
315 }
316 } catch ( \Exception $ex ) {
317 wp_send_json_error(
318 array(
319 'mess' => __( 'Error exception.', 'filebird' ),
320 array(
321 'error' => $ex,
322 ),
323 )
324 );
325 } catch ( \Error $ex ) {
326 wp_send_json_error(
327 array(
328 'mess' => __( 'Error.', 'filebird' ),
329 array(
330 'error' => $ex,
331 ),
332 )
333 );
334 }
335 }
336
337 public function yay_recommended_activate_plugin() {
338 try {
339 if ( isset( $_POST['file'] ) ) {
340 $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
341 if ( ! wp_verify_nonce( $nonce, 'yay_recommended_nonce' ) ) {
342 wp_send_json_error( array( 'mess' => __( 'Nonce is invalid', 'filebird' ) ) );
343 }
344 $file = sanitize_text_field( $_POST['file'] );
345 $result = activate_plugin( $file );
346
347 if ( is_wp_error( $result ) ) {
348 wp_send_json_error(
349 array(
350 'mess' => $result->get_error_message(),
351 )
352 );
353 }
354 wp_send_json_success(
355 array(
356 'mess' => __( 'Activate success', 'filebird' ),
357 )
358 );
359 }
360 } catch ( \Exception $ex ) {
361 wp_send_json_error(
362 array(
363 'mess' => __( 'Error exception.', 'filebird' ),
364 array(
365 'error' => $ex,
366 ),
367 )
368 );
369 } catch ( \Error $ex ) {
370 wp_send_json_error(
371 array(
372 'mess' => __( 'Error.', 'filebird' ),
373 array(
374 'error' => $ex,
375 ),
376 )
377 );
378 }
379 }
380
381 public function yay_recommended_upgrade_plugin() {
382 try {
383 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
384 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
385 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
386 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
387 if ( isset( $_POST['plugin'] ) ) {
388 $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
389 if ( ! wp_verify_nonce( $nonce, 'yay_recommended_nonce' ) ) {
390 wp_send_json_error( array( 'mess' => __( 'Nonce is invalid', 'filebird' ) ) );
391 }
392 $plugin = sanitize_text_field( $_POST['plugin'] );
393 $type = isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : 'install';
394 $skin = new \WP_Ajax_Upgrader_Skin();
395 $upgrader = new \Plugin_Upgrader( $skin );
396 if ( 'install' === $type ) {
397 $result = $upgrader->install( $plugin );
398 if ( is_wp_error( $result ) ) {
399 wp_send_json_error(
400 array(
401 'mess' => $result->get_error_message(),
402 )
403 );
404 }
405 $args = array(
406 'slug' => $upgrader->result['destination_name'],
407 'fields' => array(
408 'short_description' => true,
409 'icons' => true,
410 'banners' => false,
411 'added' => false,
412 'reviews' => false,
413 'sections' => false,
414 'requires' => false,
415 'rating' => false,
416 'ratings' => false,
417 'downloaded' => false,
418 'last_updated' => false,
419 'tags' => false,
420 'compatibility' => false,
421 'homepage' => false,
422 'donate_link' => false,
423 ),
424 );
425 $plugin_data = plugins_api( 'plugin_information', $args );
426 if ( $plugin_data && ! is_wp_error( $plugin_data ) ) {
427 $install_status = install_plugin_install_status( $plugin_data );
428 $active_plugin = activate_plugin( $install_status['file'] );
429 if ( is_wp_error( $active_plugin ) ) {
430 wp_send_json_error(
431 array(
432 'mess' => $active_plugin->get_error_message(),
433 )
434 );
435 } else {
436 wp_send_json_success(
437 array(
438 'mess' => __( 'Install success', 'filebird' ),
439 )
440 );
441 }
442 } else {
443 wp_send_json_error(
444 array(
445 'mess' => 'Error',
446 )
447 );
448 }
449 } else {
450 $is_active = is_plugin_active( $plugin );
451 $result = $upgrader->upgrade( $plugin );
452 if ( is_wp_error( $result ) ) {
453 wp_send_json_error(
454 array(
455 'mess' => $result->get_error_message(),
456 )
457 );
458 } else {
459 activate_plugin( $plugin );
460 wp_send_json_success(
461 array(
462 'mess' => __( 'Update success', 'filebird' ),
463 'active' => $is_active,
464 )
465 );
466 }
467 }
468 }
469 } catch ( \Exception $ex ) {
470 wp_send_json_error(
471 array(
472 'mess' => __( 'Error exception.', 'filebird' ),
473 array(
474 'error' => $ex,
475 ),
476 )
477 );
478 } catch ( \Error $ex ) {
479 wp_send_json_error(
480 array(
481 'mess' => __( 'Error.', 'filebird' ),
482 array(
483 'error' => $ex,
484 ),
485 )
486 );
487 }
488 }
489
490 public function check_pro_version_exists( $plugin_detail ) {
491 $exist_pro_ver = false;
492 $all_plugin = get_plugins();
493 if ( 'filebird' === $plugin_detail['slug'] ) {
494 $exist_pro_ver = array_key_exists( 'filebird-pro/filebird.php', $all_plugin ) === true ? 'filebird-pro/filebird.php' : false;
495 }
496 if ( 'yaymail' === $plugin_detail['slug'] ) {
497 if ( array_key_exists( 'yaymail-pro/yaymail.php', $all_plugin ) ) {
498 $exist_pro_ver = 'yaymail-pro/yaymail.php';
499 } elseif ( array_key_exists( 'email-customizer-for-woocommerce/yaymail.php', $all_plugin ) ) {
500 $exist_pro_ver = 'email-customizer-for-woocommerce/yaymail.php';
501 }
502 }
503 if ( 'yaycurrency' === $plugin_detail['slug'] ) {
504 if ( array_key_exists( 'yaycurrency-pro/yay-currency.php', $all_plugin ) ) {
505 $exist_pro_ver = 'yaycurrency-pro/yay-currency.php';
506 } elseif ( array_key_exists( 'multi-currency-switcher/yay-currency.php', $all_plugin ) ) {
507 $exist_pro_ver = 'multi-currency-switcher/yay-currency.php';
508 }
509 }
510 if ( 'yaysmtp' === $plugin_detail['slug'] ) {
511 $exist_pro_ver = array_key_exists( 'yaysmtp-pro/yay-smtp.php', $all_plugin ) === true ? 'yaysmtp-pro/yay-smtp.php' : false;
512 }
513 if ( 'yayswatches' === $plugin_detail['slug'] ) {
514 $exist_pro_ver = array_key_exists( 'yayswatches-pro/yay-swatches.php', $all_plugin ) === true ? 'yayswatches-pro/yay-swatches.php' : false;
515 }
516 if ( 'yayextra' === $plugin_detail['slug'] ) {
517 $exist_pro_ver = array_key_exists( 'yayextra-pro/yayextra.php', $all_plugin ) === true ? 'yayextra-pro/yayextra.php' : false;
518 }
519 if ( 'yaypricing' === $plugin_detail['slug'] ) {
520 $exist_pro_ver = array_key_exists( 'yaypricing-pro/yaypricing.php', $all_plugin ) === true ? 'yaypricing-pro/yaypricing.php' : false;
521 }
522 if ( 'cf7-multi-step' === $plugin_detail['slug'] ) {
523 $exist_pro_ver = array_key_exists( 'contact-form-7-multi-step-pro/contact-form-7-multi-step.php', $all_plugin ) === true ? 'contact-form-7-multi-step-pro/contact-form-7-multi-step.php' : false;
524 }
525 if ( 'cf7-database' === $plugin_detail['slug'] ) {
526 $exist_pro_ver = array_key_exists( 'contact-form-7-database-pro/cf7-database.php', $all_plugin ) === true ? 'contact-form-7-database-pro/cf7-database.php' : false;
527 }
528 if ( 'wp-whatsapp' === $plugin_detail['slug'] ) {
529 $exist_pro_ver = array_key_exists( 'whatsapp-for-wordpress/whatsapp.php', $all_plugin ) === true ? 'whatsapp-for-wordpress/whatsapp.php' : false;
530 }
531 return $exist_pro_ver;
532 }
533 }
534 }
535
536 if ( ! class_exists( 'NjtWhatsAppRecommended' ) ) {
537 class NjtWhatsAppRecommended extends YayRecommended {
538
539 public function __construct( $plugin_prefix ) {
540 parent::__construct( $plugin_prefix );
541 add_filter( 'yay_recommended_plugins_excluded', array( $this, 'exclude_recommended_plugins' ), 10, 1 );
542 }
543
544 public function exclude_recommended_plugins( $plugins ) {
545 if ( array_key_exists( 'wp-whatsapp', $plugins ) ) {
546 unset( $plugins['wp-whatsapp'] );
547 }
548 return $plugins;
549 }
550
551 public function admin_menu() {
552 $this->sub_menu_slug = add_submenu_page( 'nta_whatsapp', __( 'Recommended Plugins', 'wp-whatsapp' ), __( 'Recommended Plugins', 'wp-whatsapp' ), 'manage_options', 'nta_whatsapp_recommended_plugins', array( $this, 'recommended_plugins_view' ) );
553 }
554 }
555
556 new NjtWhatsAppRecommended( 'wp-whatsapp' );
557 }
558