bcbGetCurrentLanguage() ]; // Add Buttonize page data if (Settings::getSetting("include_page_data", false)) { // Get page categories $pageCategories = array_map(function ($category) { return $category->cat_ID; }, get_the_category()); // Collect page data $pageData = array_merge([ "page_id" => get_the_ID(), "categories" => $pageCategories, "is_frontpage" => is_front_page(), "is_404" => is_404(), "user_roles" => PermissionCheck::getUserRoles() ], $pageData); } // Define page data $buttonizerData = "if(!window._buttonizer) { window._buttonizer = {}; };var _buttonizer_page_data = " . json_encode($pageData) . ";window._buttonizer.data = { ..._buttonizer_page_data, ...window._buttonizer.data };"; echo ''; } }, 10); // Add integration script add_action('wp_footer', function () { if (Settings::getSetting("site_id")) { // Buttonizer integration script $buttonizerSnippet = "(function(n,t,c,d){if(t.getElementById(d)){return}var o=t.createElement('script');o.id=d;(o.async=!0),(o.src='https://cdn.buttonizer.io/embed.js'),(o.onload=function(){window.Buttonizer?window.Buttonizer.init(c):window.addEventListener('buttonizer_script_loaded',()=>window.Buttonizer.init(c))}),t.head.appendChild(o)})(window,document,'" . Settings::getSetting("site_id") . "','buttonizer_script')"; // GDPR Compliance check if (Settings::getSetting("wait_until_consent", false)) { $buttonizerSnippet = "// Buttonizer snippet container function enableButtonizer() {" . $buttonizerSnippet . "}; // Buttonizer consent given, load content if(window.buttonizer_consent_given){ enableButtonizer(); }"; } echo ''; } }, 11); // Validator only available after WP 4.9 function BcbIsValidUUID($uuid) { $regex = '/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/'; return (bool) preg_match($regex, $uuid); } // Buttonizer widget shortcode function bcbWidgetShortcode($atts) { // Get attributes $atts = shortcode_atts( array( 'id' => '', ), $atts ); // Make sure the ID exists and is a valid UUID if (!isset($atts['id']) || !is_string($atts['id']) || !BcbIsValidUUID($atts['id'])) return ""; return '
'; }; function bcbInitFunction() { if (!shortcode_exists("buttonizer")) { add_shortcode('buttonizer', 'bcbWidgetShortcode'); } } add_action('init', 'bcbInitFunction'); // Add admin menu add_action('admin_bar_menu', function ($bar) { Admin::wordpressAdminBar($bar); }, 100); /** * Initialize Buttonizer API endpoints */ add_action('rest_api_init', function () { new Api(); });