PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.9.5
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.9.5
4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 All 203 releases
← All changes | includes/Core/Admin.php +28 -36 4.9.2 → 4.9.5 View file →
@@ -106,9 +106,8 @@
106 106 *
107 107 * @var FAQBuilder
108 108 */
109 109 private $faq_builder;
110 - private $glossaries;
111 110
112 111 public function __construct( Container $container, PostType $type, Enqueue $assets, Settings $settings, KBMigration $kbmigration ) {
113 112 $this->container = $container;
114 113 $this->assets = $assets;
@@ -122,9 +121,8 @@
122 121 $type->init();
123 122 $type->admin_init();
124 123
125 124 $this->faq_builder = $this->container->get( FAQBuilder::class );
126 - $this->glossaries = $this->container->get( Glossaries::class );
127 125
128 126 /**
129 127 * Register usage tracking (including the daily `put_do_weekly_action` cron
130 128 * handler) on every request — WP-Cron runs with is_admin() === false, so
@@ -485,8 +483,26 @@
485 483 )
486 484 );
487 485 }
488 486
487 + // BetterDocs' own admin screens. Promotional notices are limited to these
488 + // (WP.org guideline 11), never the whole of wp-admin.
489 + $betterdocs_screens = array(
490 + 'toplevel_page_betterdocs-dashboard',
491 + 'admin_page_betterdocs-admin',
492 + 'betterdocs_page_betterdocs-admin',
493 + 'betterdocs_page_betterdocs-settings',
494 + 'betterdocs_page_betterdocs-faq',
495 + 'betterdocs_page_betterdocs-analytics',
496 + 'betterdocs_page_betterdocs-glossaries',
497 + 'betterdocs_page_betterdocs-ai-chatbot',
498 + 'betterdocs_page_betterdocs-api-docs',
499 + 'betterdocs_page_betterdocs-doc-categories',
500 + 'betterdocs_page_betterdocs-doc-tags',
501 + 'edit-doc_category',
502 + 'edit-doc_tag',
503 + );
504 +
489 505 $summer_campaign_message = '<div class="betterdocs-summer-notice-body"><p style="margin-top: 0; margin-bottom: 0;">🏖️ <strong>Summer Savings:</strong> Build AI-powered Knowledge Bases & FAQs to cut support tickets and improve user experience – now <strong>up to $100 OFF!</strong></p></div>';
490 506 $_summer_campaign_notice = array(
491 507 'thumbnail' => $this->assets->icon( 'betterdocs-logo.svg', true ),
492 508 'html' => $summer_campaign_message,
@@ -501,10 +517,11 @@
501 517 ),
502 518 'maybe_later' => array(
503 519 'label' => __( 'I’ll Grab It Later', 'betterdocs' ),
504 520 'attributes' => array(
505 - 'target' => '_blank',
506 - 'data-later' => true,
521 + 'target' => '_blank',
522 + // A promo dismissal is permanent: no 15-day re-show.
523 + 'data-dismiss' => true,
507 524 'class' => 'dismiss-btn',
508 525 ),
509 526 ),
510 527 ),
@@ -516,11 +533,11 @@
516 533 array(
517 534 'start' => $notices->time(),
518 535 'recurrence' => false,
519 536 'dismissible' => true,
520 - 'refresh' => BETTERDOCS_VERSION,
521 537 'expire' => strtotime( '11:59:59pm June 25, 2026' ),
522 538 'display_if' => ! is_plugin_active( 'betterdocs-pro/betterdocs-pro.php' ),
539 + 'screens' => $betterdocs_screens,
523 540 )
524 541 );
525 542
526 543 self::$cache_bank->create_account( $notices );
@@ -526,23 +543,9 @@
526 543 self::$cache_bank->create_account( $notices );
527 544 self::$cache_bank->calculate_deposits( $notices );
528 545 if ( method_exists( self::$cache_bank, 'clear_notices_in_' ) ) {
529 546 self::$cache_bank->clear_notices_in_(
530 - array(
531 - 'toplevel_page_betterdocs-dashboard',
532 - 'admin_page_betterdocs-admin',
533 - 'betterdocs_page_betterdocs-admin',
534 - 'betterdocs_page_betterdocs-settings',
535 - 'betterdocs_page_betterdocs-faq',
536 - 'betterdocs_page_betterdocs-analytics',
537 - 'betterdocs_page_betterdocs-glossaries',
538 - 'betterdocs_page_betterdocs-ai-chatbot',
539 - 'betterdocs_page_betterdocs-api-docs',
540 - 'betterdocs_page_betterdocs-doc-categories',
541 - 'betterdocs_page_betterdocs-doc-tags',
542 - 'edit-doc_category',
543 - 'edit-doc_tag',
544 - ),
547 + $betterdocs_screens,
545 548 $notices,
546 549 true
547 550 );
548 551 }
@@ -886,8 +889,11 @@
886 889 'analytics_older' => version_compare( betterdocs()->pro_version(), '3.3.4', '<=' ),
887 890 'betterdocs_ChatBot_plugin' => is_plugin_active( 'betterdocs-ai-chatbot/betterdocs-ai-chatbot.php' ),
888 891 'api_docs_teaser' => betterdocs()->show_api_docs_teaser(),
889 892 'glossaries_teaser' => betterdocs()->show_glossary_teaser(),
893 + 'glossaries_needs_pro_update' => betterdocs()->glossaries_needs_pro_update(),
894 + 'glossaries_min_pro_version' => betterdocs()->glossaries_min_pro_version(),
895 + 'glossaries_pro_update_url' => self_admin_url( 'plugins.php' ),
890 896 'content_intelligence_teaser' => betterdocs()->show_content_intelligence_teaser(),
891 897 'is_woocommerce_active' => class_exists( 'WooCommerce' ),
892 898 'total_doc_category_terms' => wp_count_terms( 'doc_category' ),
893 899 'current_admin_language' => Helper::get_current_admin_language(),
@@ -955,24 +961,10 @@
955 961 'betterdocs_settings' => $betterdocs_settings,
956 962 )
957 963 );
958 964
959 - // Glossaries Related Localization
960 - betterdocs()->assets->enqueue( 'betterdocs-admin-glossaries', 'admin/css/faq.css' );
961 -
962 - betterdocs()->assets->enqueue( 'betterdocs-admin-glossaries', 'admin/js/glossaries.js' );
963 -
964 - betterdocs()->assets->localize(
965 - 'betterdocs-admin-glossaries',
966 - 'betterdocsGlossary',
967 - array(
968 - 'dir_url' => BETTERDOCS_ABSURL,
969 - 'rest_url' => esc_url_raw( rest_url() ),
970 - 'free_version' => betterdocs()->version,
971 - 'nonce' => wp_create_nonce( 'wp_rest' ),
972 - 'betterdocs_settings' => $betterdocs_settings,
973 - )
974 - );
965 + // Glossaries is Pro — Pro's Core\Glossaries::enqueue() owns that bundle
966 + // and both of its localized objects (`betterdocs`, `betterdocsGlossary`).
975 967 }
976 968
977 969 /**
978 970 * All admin pages header