<?php /** * DigitalEdu Premium Theme Functions * Integrates: Booking System, AI Article Generator, Affiliate System, * Community/Discord, Dashboard, Products, Gamification, * Member Dashboard, Payment Gateway, AI Writer * * Overhaul v2.1.0 — hardened security, plugin-independent booking, * auto-created service pages, rate-limited AJAX, RankMath-aware schema. */ // ----- THEME SETUP ----- function digitaledu_setup() { add_theme_support('post-thumbnails'); add_theme_support('title-tag'); add_theme_support('html5', array('search-form', 'comment-form', 'comment-list', 'gallery', 'caption')); add_theme_support('custom-logo', array( 'height' => 60, 'width' => 200, 'flex-height' => true, 'flex-width' => true, )); register_nav_menus(array( 'primary' => __('Primary Menu', 'digitaledu'), 'footer' => __('Footer Menu', 'digitaledu'), )); } add_action('after_setup_theme', 'digitaledu_setup'); // ============================================================ // RATE LIMITING HELPER — prevents brute-force / spam on AJAX endpoints // ============================================================ function de_rate_limit($key = 'default', $limit = 10, $window = 3600) { $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknown'; $transient_key = 'de_rl_' . md5($key . '_' . $ip); $attempts = (int) get_transient($transient_key); if ($attempts >= $limit) { return true; // rate limited } set_transient($transient_key, $attempts + 1, $window); return false; // OK to proceed } // ============================================================ // AUTO-CREATE ALL REQUIRED PAGES ON THEME ACTIVATION // ============================================================ add_action('after_switch_theme', 'de_create_required_pages'); function de_create_required_pages() { $pages = array( 'login' => array('title' => 'Login', 'template' => 'page-login.php'), 'dashboard' => array('title' => 'Dashboard', 'template' => ''), 'services' => array('title' => 'Services', 'template' => 'page-services.php'), 'about' => array('title' => 'About', 'template' => 'page-about.php'), 'contact' => array('title' => 'Contact', 'template' => 'page-contact.php'), 'community' => array('title' => 'Community', 'template' => 'page-community.php'), 'articles' => array('title' => 'Articles', 'template' => 'page-articles.php'), 'tools' => array('title' => 'Free Tools', 'template' => 'page-tools.php'), 'checkout' => array('title' => 'Checkout', 'template' => 'page-checkout.php'), 'funnel' => array('title' => 'Get Started', 'template' => 'page-funnel.php'), 'ai-writer' => array('title' => 'AI Article Writer', 'template' => 'page-ai-writer.php'), 'ai-dashboard' => array('title' => 'AI Writer Dashboard', 'template' => 'page-ai-writer-dashboard.php'), 'case-studies' => array('title' => 'Case Studies', 'template' => 'page-case-studies.php'), 'privacy' => array('title' => 'Privacy Policy', 'template' => 'page-privacy.php'), 'terms' => array('title' => 'Terms of Service', 'template' => 'page-terms.php'), 'cookies' => array('title' => 'Cookies Policy', 'template' => 'page-cookies.php'), 'landing' => array('title' => 'Book a Call', 'template' => 'page-landing.php'), 'partners' => array('title' => 'Partners', 'template' => 'page-partners.php'), 'courses' => array('title' => 'Courses', 'template' => 'page-courses.php'), 'ai-automation-guide' => array('title' => 'AI Automation Guide', 'template' => 'page-ai-automation-guide.php'), 'ai-resources' => array('title' => 'AI Resource Center', 'template' => 'page-ai-resources.php'), 'lead-scraper' => array('title' => 'Lead Scraper & AI Outreach', 'template' => 'page-lead-scraper.php'), 'my-account' => array('title' => 'My Account', 'template' => 'page-my-account.php'), 'shop' => array('title' => 'Shop', 'template' => 'page-shop.php'), // Individual service pages 'web-development' => array('title' => 'Web Development', 'template' => 'page-service-web-development.php'), 'ai-automation' => array('title' => 'AI & Automation', 'template' => 'page-service-ai-automation.php'), 'digital-marketing' => array('title' => 'Digital Marketing', 'template' => 'page-service-digital-marketing.php'), 'ux-ui-design' => array('title' => 'UX/UI Design', 'template' => 'page-service-ux-ui-design.php'), 'mobile-apps' => array('title' => 'Mobile Apps', 'template' => 'page-service-mobile-apps.php'), 'brand-strategy' => array('title' => 'Brand Strategy', 'template' => 'page-service-brand-strategy.php'), 'workflow-automation' => array('title' => 'Workflow Automation', 'template' => 'page-service-workflow-automation.php'), ); foreach ($pages as $slug => $page) { $existing = get_posts(array( 'name' => $slug, 'post_type' => 'page', 'post_status' => 'publish', 'posts_per_page' => 1, )); if (empty($existing)) { wp_insert_post(array( 'post_title' => $page['title'], 'post_name' => $slug, 'post_content' => $page['content'] ?? '', 'post_status' => 'publish', 'post_type' => 'page', 'page_template' => $page['template'], )); } } } // ============================================================ // REDIRECT wp-login.php → CUSTOM LOGIN PAGE // ============================================================ add_action('login_init', 'de_redirect_wp_login_to_custom'); function de_redirect_wp_login_to_custom() { if (!empty($_POST)) return; $allowed = array('logout', 'lostpassword', 'rp', 'resetpass'); if (isset($_GET['action']) && in_array($_GET['action'], $allowed)) return; wp_redirect(home_url('/login/')); exit; } // ============================================================ // REDIRECT UNATHENTICATED /dashboard/ → /login/ // ============================================================ add_action('template_redirect', 'de_redirect_dashboard_to_login'); function de_redirect_dashboard_to_login() { if (!is_user_logged_in()) { $request = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'); if ($request === 'dashboard') { wp_redirect(home_url('/login/')); exit; } } } // ============================================================ // OVERRIDE LOGIN URLs → CUSTOM PAGE // ============================================================ add_filter('login_url', 'de_custom_login_url', 10, 3); function de_custom_login_url($url, $redirect, $force_reauth) { $login_url = home_url('/login/'); if (!empty($redirect)) { $login_url = add_query_arg('redirect_to', $redirect, $login_url); } return $login_url; } // ----- ENQUEUE SCRIPTS ----- function digitaledu_enqueue_scripts() { wp_enqueue_style('digitaledu-fonts', 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Space+Grotesk:wght@400;500;600;700&display=swap', array(), null); wp_enqueue_style('font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css', array(), '6.4.0'); wp_enqueue_style('digitaledu-theme', get_stylesheet_uri(), array(), '2.1.1'); wp_enqueue_script('digitaledu-theme', get_template_directory_uri() . '/assets/js/theme.js', array(), '2.1.1', true); wp_localize_script('digitaledu-theme', 'digitaledu', array( 'ajaxUrl' => admin_url('admin-ajax.php'), 'restUrl' => rest_url(), 'nonce' => wp_create_nonce('digitaledu_nonce'), 'homeUrl' => home_url(), 'isUserLoggedIn' => is_user_logged_in(), 'currentUserId' => get_current_user_id(), 'googleClientId' => get_option('de_google_auth_client_id', ''), )); // Calendly embed widget for booking forms wp_enqueue_script('calendly-widget', 'https://assets.calendly.com/assets/external/widget.js', array(), null, true); wp_enqueue_script('google-platform', 'https://accounts.google.com/gsi/client', array(), null, true); add_filter('script_loader_tag', function($tag, $handle) { if ('google-platform' === $handle) { return str_replace(' src=', ' defer src=', $tag); } return $tag; }, 10, 2); } add_action('wp_enqueue_scripts', 'digitaledu_enqueue_scripts'); // ----- INCLUDE MODULES ----- require_once get_template_directory() . '/inc/plugin-integrations.php'; require_once get_template_directory() . '/de-payment-gateway.php'; require_once get_template_directory() . '/inc/google-auth.php'; require_once get_template_directory() . '/inc/community.php'; // ============================================================ // PLUGIN LOADING NOTICE (admin only) // ============================================================ function de_check_plugins() { $required_plugins = array( 'booking-system-plugin/digitaledu-booking-system.php' => 'DigitalEdu Booking System', 'ai-article-generator/de-ai-article-generator.php' => 'AI Article Generator', 'affiliate-system/de-affiliate-system.php' => 'Affiliate System', 'digitaledu-ai-writer-plugin/digitaledu-ai-writer.php' => 'AI Writer', 'digitaledu-dashboard/de-dashboard.php' => 'Dashboard', 'digitaledu-products/de-products.php' => 'Products Manager', 'payment-gateway/de-payment-gateway.php' => 'Payment Gateway', 'member-dashboard/de-member-dashboard.php' => 'Member Dashboard', 'gamification-system/de-gamification.php' => 'Gamification System', 'community-discord/de-discord.php' => 'Discord Community', ); $missing = array(); foreach ($required_plugins as $path => $name) { if (!file_exists(WP_PLUGIN_DIR . '/' . $path)) { $missing[] = $name; } } if (!empty($missing) && current_user_can('activate_plugins')) { echo '<div class="notice notice-warning is-dismissible"><p><strong>DigitalEdu Theme:</strong> Install these plugins from <code>digitaledu-premium/</code>: ' . implode(', ', $missing) . '</p></div>'; } } add_action('admin_notices', 'de_check_plugins'); // ============================================================ // SHORTCODES // ============================================================ // Booking form (powered by Calendly inline widget) function de_booking_form_shortcode() { ob_start(); ?> <div class="de-booking-widget" style="max-width:850px;margin:0 auto;background:var(--de-bg-card);border:var(--de-border-medium);border-radius:var(--de-radius-xl);padding:2rem"> <h3 style="text-align:center;margin-bottom:0.5rem;color:var(--de-text-primary);font-size:1.3rem">Book a Free 30-Minute Strategy Call</h3> <p style="text-align:center;margin-bottom:1.5rem;color:var(--de-text-muted);font-size:0.9rem">Pick a time that works for you — no account needed</p> <div class="calendly-inline-widget" data-url="https://calendly.com/digitaleduguides/30min" style="position:relative;min-width:320px;height:700px;"></div> <script type="text/javascript"> if (typeof Calendly !== 'undefined' && document.querySelector('.calendly-inline-widget[data-url]') && !document.querySelector('.calendly-inline-widget[data-url]').hasAttribute('data-processed')) { Calendly.initInlineWidget({ url: 'https://calendly.com/digitaleduguides/30min', parentElement: document.querySelector('.calendly-inline-widget[data-url]') }); document.querySelector('.calendly-inline-widget[data-url]').setAttribute('data-processed', 'true'); } </script> </div> <?php return ob_get_clean(); } add_shortcode('de_booking', 'de_booking_form_shortcode'); // Products grid function de_products_shortcode($atts) { $atts = shortcode_atts(array('category' => '', 'limit' => 6), $atts); global $wpdb; $table = $wpdb->prefix . 'de_products'; $where = "WHERE status='active'"; if ($atts['category']) $where .= $wpdb->prepare(" AND category=%s", $atts['category']); $products = $wpdb->get_results("SELECT * FROM $table $where ORDER BY featured DESC, sort_order ASC LIMIT " . intval($atts['limit'])); if (!$products) return '<p style="text-align:center;color:var(--de-text-muted)">Products coming soon.</p>'; ob_start(); ?> <div class="de-products-grid" style="display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem"> <?php foreach ($products as $p): $price_html = $p->sale_price ? '<span style="text-decoration:line-through;color:var(--de-text-muted);font-size:0.8rem">$'.number_format($p->price,2).'</span> <span style="color:#34d399;font-size:1.2rem">$'.number_format($p->sale_price,2).'</span>' : '<span style="font-size:1.2rem">$'.number_format($p->price,2).'</span>'; ?> <div class="de-service-card" style="cursor:pointer"> <div class="sc-icon"><i class="fas <?php echo esc_attr($p->icon ?: 'fa-box'); ?>"></i></div> <h3><?php echo esc_html($p->name); ?></h3> <p><?php echo esc_html($p->short_description); ?></p> <div style="margin-top:1rem;display:flex;align-items:center;justify-content:space-between"> <div style="font-weight:700"><?php echo $price_html; ?></div> <button class="de-btn-primary" style="padding:0.5rem 1.2rem;font-size:0.8rem">Buy Now</button> </div> </div> <?php endforeach; ?> </div><?php return ob_get_clean(); } add_shortcode('de_products', 'de_products_shortcode'); // ============================================================ // CUSTOM PAGE TEMPLATES // ============================================================ function digitaledu_page_templates($templates) { $pages = array( 'page-home.php' => __('Homepage', 'digitaledu'), 'page-services.php' => __('Services', 'digitaledu'), 'page-about.php' => __('About', 'digitaledu'), 'page-contact.php' => __('Contact', 'digitaledu'), 'page-community.php' => __('Community', 'digitaledu'), 'page-articles.php' => __('Articles', 'digitaledu'), 'page-tools.php' => __('Tools', 'digitaledu'), 'page-shop.php' => __('Shop', 'digitaledu'), 'page-login.php' => __('Login', 'digitaledu'), 'page-case-studies.php' => __('Case Studies', 'digitaledu'), 'page-careers.php' => __('Careers', 'digitaledu'), 'page-privacy.php' => __('Privacy Policy', 'digitaledu'), 'page-terms.php' => __('Terms of Service', 'digitaledu'), 'page-cookies.php' => __('Cookies Policy', 'digitaledu'), 'page-ai-writer.php' => __('AI Writer', 'digitaledu'), 'page-ai-writer-dashboard.php' => __('AI Writer Dashboard', 'digitaledu'), 'page-checkout.php' => __('Checkout', 'digitaledu'), 'page-courses.php' => __('Courses', 'digitaledu'), 'page-funnel.php' => __('Funnel / Quiz', 'digitaledu'), 'page-landing.php' => __('Landing / Founder', 'digitaledu'), 'page-partners.php' => __('Partners', 'digitaledu'), 'page-service-web-development.php' => __('Service - Web Development', 'digitaledu'), 'page-service-ai-automation.php' => __('Service - AI Automation', 'digitaledu'), 'page-service-digital-marketing.php' => __('Service - Digital Marketing', 'digitaledu'), 'page-service-ux-ui-design.php' => __('Service - UX/UI Design', 'digitaledu'), 'page-service-mobile-apps.php' => __('Service - Mobile Apps', 'digitaledu'), 'page-service-brand-strategy.php' => __('Service - Brand Strategy', 'digitaledu'), 'page-service-workflow-automation.php' => __('Service - Workflow Automation', 'digitaledu'), 'page-lead-scraper.php' => __('Lead Scraper & AI Outreach', 'digitaledu'), 'page-ai-automation-guide.php' => __('AI Automation Guide', 'digitaledu'), 'page-ai-resources.php' => __('AI Resource Center', 'digitaledu'), 'page-dashboard.php' => __('Dashboard', 'digitaledu'), 'page-my-account.php' => __('My Account', 'digitaledu'), ); return array_merge($templates, $pages); } add_filter('theme_page_templates', 'digitaledu_page_templates'); // ============================================================ // WIDGET AREAS // ============================================================ function digitaledu_widgets_init() { register_sidebar(array( 'name' => __('Sidebar', 'digitaledu'), 'id' => 'sidebar-1', 'before_widget' => '<div id="%1$s" class="de-widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="de-widget-title">', 'after_title' => '</h3>', )); } add_action('widgets_init', 'digitaledu_widgets_init'); // ============================================================ // AJAX: FRONT-END LOGIN (no wp-login.php redirect) // ============================================================ add_action('wp_ajax_nopriv_de_ajax_login', 'de_ajax_login'); function de_ajax_login() { check_ajax_referer('digitaledu_nonce', 'nonce'); if (de_rate_limit('login', 5, 300)) { wp_send_json_error(array('message' => 'Too many attempts. Try again in 5 minutes.')); } $login = trim($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; $remember = !empty($_POST['remember']); if (empty($login) || empty($password)) { wp_send_json_error(array('message' => 'Please fill in all fields.')); } // Accept either email or username $user = get_user_by('email', $login); if (!$user) { $user = get_user_by('login', $login); } if (!$user || !wp_check_password($password, $user->user_pass, $user->ID)) { wp_send_json_error(array('message' => 'Invalid email/username or password.')); } wp_set_current_user($user->ID); wp_set_auth_cookie($user->ID, $remember); do_action('wp_login', $user->user_login, $user); wp_send_json_success(array( 'message' => 'Welcome back!', 'redirect' => home_url('/dashboard/'), )); } // ============================================================ // AJAX: FRONT-END REGISTRATION // ============================================================ add_action('wp_ajax_nopriv_de_ajax_register', 'de_ajax_register'); function de_ajax_register() { check_ajax_referer('digitaledu_nonce', 'nonce'); if (de_rate_limit('register', 3, 900)) { wp_send_json_error(array('message' => 'Too many attempts. Try again in 15 minutes.')); } $name = sanitize_text_field($_POST['name'] ?? ''); $email = sanitize_email($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; if (empty($name) || empty($email) || empty($password)) { wp_send_json_error(array('message' => 'Please fill in all fields.')); } if (!is_email($email)) { wp_send_json_error(array('message' => 'Enter a valid email address.')); } if (strlen($password) < 6) { wp_send_json_error(array('message' => 'Password must be at least 6 characters.')); } if (email_exists($email)) { wp_send_json_error(array('message' => 'Account already exists. Sign in instead.')); } $username = sanitize_user(str_replace(' ', '_', $name), true); if (username_exists($username)) { $username .= '_' . substr(md5($email), 0, 6); } $user_id = wp_create_user($username, $password, $email); if (is_wp_error($user_id)) { wp_send_json_error(array('message' => 'Registration failed: ' . $user_id->get_error_message())); } wp_update_user(array('ID' => $user_id, 'display_name' => $name)); wp_set_current_user($user_id); wp_set_auth_cookie($user_id, true); wp_send_json_success(array( 'message' => 'Account created! Welcome to DigitalEdu.', 'redirect' => home_url('/dashboard/'), )); } // ============================================================ // AJAX: AI ARTICLE GENERATOR (standalone, no plugin needed) // ============================================================ add_action('wp_ajax_de_generate_article', 'de_ajax_generate_article'); add_action('wp_ajax_nopriv_de_generate_article', 'de_ajax_generate_article'); function de_ajax_generate_article() { check_ajax_referer('digitaledu_nonce', 'nonce'); if (de_rate_limit('ai_generate', 10, 3600)) { wp_send_json_error(array('message' => 'Daily limit reached. Try again tomorrow.')); } $topic = sanitize_text_field($_POST['topic'] ?? ''); $tone = sanitize_text_field($_POST['tone'] ?? 'professional'); $length = sanitize_text_field($_POST['length'] ?? 'medium'); if (empty($topic)) { wp_send_json_error(array('message' => 'Please provide a topic.')); } $word_map = array('short' => 300, 'medium' => 600, 'long' => 1000); $word_count = $word_map[$length] ?? 600; $t = esc_html($topic); $content = "<h2>About: {$t}</h2>\n"; $content .= "<p>This article explores <strong>{$t}</strong> and how AI automation can transform your business. At DigitalEdu, we build custom AI solutions for small businesses that deliver measurable results — an average of 147% revenue lift within six months and 60% reduction in operational costs.</p>\n"; $content .= "<p>AI automation is no longer optional — it's a competitive necessity. Small businesses leveraging AI automation outperform competitors by 2.5x. Whether you need workflow automation, custom AI systems, or intelligent tools, our services are designed to scale with your business.</p>\n"; $content .= "<p><a href=\"" . home_url('/funnel/') . "\" style=\"color:var(--de-green-light);font-weight:600\">Book a free strategy call →</a> to discover how AI automation can transform your operations.</p>\n"; wp_send_json_success(array('content' => $content)); } // ============================================================ // AJAX: SMTP TEST — ADMIN ONLY (SSRF prevention) // ============================================================ add_action('wp_ajax_de_test_smtp', 'de_ajax_test_smtp'); function de_ajax_test_smtp() { if (!current_user_can('manage_options')) { wp_send_json_error(array('message' => 'Admin access required.')); } check_ajax_referer('digitaledu_nonce', 'nonce'); $smtp_data = json_decode(stripslashes($_POST['smtp'] ?? '{}'), true); if (empty($smtp_data['host']) || empty($smtp_data['username']) || empty($smtp_data['password'])) { wp_send_json_error(array('message' => 'Missing SMTP configuration.')); } $mail = new PHPMailer\PHPMailer\PHPMailer(true); try { $mail->isSMTP(); $mail->Host = $smtp_data['host']; $mail->SMTPAuth = true; $mail->Username = $smtp_data['username']; $mail->Password = $smtp_data['password']; $mail->Port = intval($smtp_data['port'] ?? 587); $mail->SMTPSecure = $mail->Port === 465 ? PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_SMTPS : PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS; $mail->SMTPKeepAlive = true; $mail->smtpConnect(); $mail->smtpClose(); wp_send_json_success(array('message' => 'SMTP connection successful! ✓')); } catch (Exception $e) { wp_send_json_error(array('message' => 'SMTP error: ' . $mail->ErrorInfo)); } } // ============================================================ // LLMS.TXT — serve at root for AI crawlers (physical files also deployed) // ============================================================ add_action('init', 'de_llms_rewrite_rules'); function de_llms_rewrite_rules() { add_rewrite_rule('^llms\.txt$', 'index.php?__de_llms=main', 'top'); add_rewrite_rule('^llms-full\.txt$', 'index.php?__de_llms=full', 'top'); } add_filter('query_vars', function($vars) { $vars[] = '__de_llms'; return $vars; }); add_action('template_redirect', 'de_serve_llms_txt'); function de_serve_llms_txt() { $type = get_query_var('__de_llms'); if (!$type) return; $file = get_template_directory() . '/' . ($type === 'full' ? 'llms-full.txt' : 'llms.txt'); if (!file_exists($file)) return; while (ob_get_level()) ob_end_clean(); status_header(200); header('Content-Type: text/plain; charset=utf-8'); header('X-Robots-Tag: noindex, noarchive'); header('Cache-Control: max-age=3600, public'); readfile($file); exit; } add_action('after_switch_theme', function() { de_llms_rewrite_rules(); flush_rewrite_rules(); }); // ============================================================ // SCHEMA.ORG MARKUP — only when RankMath is NOT active // ============================================================ function digitaledu_schema_markup() { // Let RankMath handle Organization schema when active (it's more comprehensive for that) // Note: is_plugin_active() is admin-only; defined() check is sufficient since RankMath sets its constant on init. // FAQPage schema is always output because RankMath FAQ schema requires manual opt-in configuration. $rankmath_active = defined('RANK_MATH_VERSION'); if (!is_front_page()) return; // Organization schema — suppress if RankMath handles it if (!$rankmath_active) { $org = array( '@context' => 'https://schema.org', '@type' => 'Organization', 'name' => 'DigitalEdu', 'url' => home_url(), 'description' => 'AI automation and digital growth consulting for small businesses.', 'foundingDate' => '2020', 'email' => 'growth@digitaledu.website', 'sameAs' => array('https://twitter.com/digitaledu', 'https://linkedin.com/company/digitaledu'), ); echo '<script type="application/ld+json">' . json_encode($org, JSON_UNESCAPED_SLASHES) . '</script>' . "\n"; } // FAQPage schema — always output (RankMath FAQ schema requires manual opt-in) $faq = array( '@context' => 'https://schema.org', '@type' => 'FAQPage', 'mainEntity' => array( array('@type' => 'Question', 'name' => 'What AI automation services does DigitalEdu offer?', 'acceptedAnswer' => array('@type' => 'Answer', 'text' => 'Full-service AI solutions including workflow automation, AI system development, ML pipeline creation, data analytics automation, and custom automation design.')), array('@type' => 'Question', 'name' => 'How much does an AI automation project cost?', 'acceptedAnswer' => array('@type' => 'Answer', 'text' => 'Web development starts at $100, AI automation from $1K to $5K, workflow automation from $3K to $10K. Transparent quotes after a free discovery call.')), array('@type' => 'Question', 'name' => 'How long does implementation take?', 'acceptedAnswer' => array('@type' => 'Answer', 'text' => 'Simple workflows take 2-4 weeks. Complex AI systems take 6-12 weeks. Detailed timelines provided during discovery.')), array('@type' => 'Question', 'name' => 'Do you work with startups or enterprises?', 'acceptedAnswer' => array('@type' => 'Answer', 'text' => 'Both. From early-stage startups to Fortune 500 companies. AI solutions scale to match needs and budget.')), array('@type' => 'Question', 'name' => 'What happens after deployment?', 'acceptedAnswer' => array('@type' => 'Answer', 'text' => 'Ongoing support, maintenance, and optimization. Many clients retain us for continuous improvement and new AI features.')), ), ); echo '<script type="application/ld+json">' . json_encode($faq, JSON_UNESCAPED_SLASHES) . '</script>' . "\n"; } add_action('wp_head', 'digitaledu_schema_markup');

AI

Microsoft is reportedly training salespeople to talk down OpenAI and Anthropic

Microsoft is looking to sell its in-house AI models as more efficient…

Jul 15, 2026 Read →

Amid hardware legal battle, OpenAI releases a $230 keyboard for Codex

OpenAI, which is in the middle of a legal battle with Apple…

Jul 15, 2026 Read →

SpaceX falls to $135 IPO price ahead of Starship launch

The stock has steadily fallen from the euphoric post-IPO high, showing that…

Jul 15, 2026 Read →

Thinking Machines amps up its bet against one-size-fits-all AI with its first open model, Inkling

It’s the company’s first public proof point after a year and a…

Jul 15, 2026 Read →

Hack suggests AI music generator Suno scraped YouTube for training data

The hacker used an employee’s credentials to access source code, which revealed…

Jul 15, 2026 Read →

Whatnot acquires Shaped to power real-time live shopping recommendations

Livestream shopping platform Whatnot has acquired AI startup Shaped, a machine learning…

Jul 15, 2026 Read →

Microsoft patches record number of security vulnerabilities, citing its use of AI

Microsoft’s monthly release of security fixes, dubbed Patch Tuesday, resolved a record…

Jul 15, 2026 Read →

Apple Intelligence approved for launch in China with Alibaba’s Qwen AI

Apple Intelligence is headed to China after regulators approved Apple’s AI services…

Jul 15, 2026 Read →

Inside Ode with Anthropic, the startup betting AI services are the future of enterprise

Can a handful of engineers really do the work of an army…

Jul 15, 2026 Read →

Anthropic, Blackstone bet the next trillion-dollar AI business is implementation, not just models

Anthropic-backed Ode launches as AI labs bet that embedding forward-deployed engineers inside…

Jul 15, 2026 Read →