' . esc_html__('Audit', 'wdbasic') . ''); return $links; } ); /** ¿WdBasic ha consultado la web en los últimos 14 días? */ function wdbasic_is_connected() { $last = (int) get_option('wdbasic_last_contact', 0); return $last && (time() - $last) < 14 * DAY_IN_SECONDS; } /** Dirección del alta en WdBasic, con la web y el idioma ya rellenados. */ function wdbasic_connect_url() { return add_query_arg( array( 'url' => rawurlencode(home_url('/')), 'lang' => rawurlencode(get_user_locale()), 'from' => 'plugin', ), WDBASIC_SERVICE_URL . '/start' ); } /** Aviso de bienvenida tras activar, solo para administradores y hasta que lo cierren. */ add_action( 'admin_notices', function () { if (!current_user_can('manage_options') || !get_transient('wdbasic_show_welcome') || get_user_meta(get_current_user_id(), 'wdbasic_welcome_dismissed', true)) { return; } $screen = get_current_screen(); if ($screen && 'toplevel_page_wdbasic' === $screen->id) { return; } $dismiss = wp_nonce_url(admin_url('admin-post.php?action=wdbasic_dismiss_welcome'), 'wdbasic_dismiss_welcome'); printf( '
', esc_html__('Your free SEO and site health audit is ready.', 'wdbasic'), esc_url(admin_url('admin.php?page=wdbasic')), esc_html__('See the results', 'wdbasic'), esc_url($dismiss), esc_html__('Dismiss', 'wdbasic') ); } ); add_action( 'admin_post_wdbasic_dismiss_welcome', function () { check_admin_referer('wdbasic_dismiss_welcome'); update_user_meta(get_current_user_id(), 'wdbasic_welcome_dismissed', 1); wp_safe_redirect(wp_get_referer() ? wp_get_referer() : admin_url()); exit; } ); add_action( 'admin_post_wdbasic_refresh', function () { if (!current_user_can('manage_options')) { wp_die(esc_html__('You are not allowed to do this.', 'wdbasic')); } check_admin_referer('wdbasic_refresh'); wdbasic_get_audit(true); wp_safe_redirect(admin_url('admin.php?page=wdbasic')); exit; } ); add_action( 'admin_enqueue_scripts', function ($hook) { if ('toplevel_page_wdbasic' !== $hook) { return; } wp_register_style('wdbasic-admin', false, array(), WDBASIC_VERSION); wp_enqueue_style('wdbasic-admin'); wp_add_inline_style( 'wdbasic-admin', '.wdb-wrap{max-width:1000px}.wdb-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}@media(max-width:960px){.wdb-grid{grid-template-columns:1fr}} .wdb-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;padding:20px;margin-bottom:16px} .wdb-score{display:flex;align-items:center;gap:20px}.wdb-score b{font-size:48px;line-height:1} .wdb-ok{color:#008a20}.wdb-mid{color:#b26200}.wdb-bad{color:#b32d2e} .wdb-issue{border-left:4px solid #dcdcde;padding:12px 16px;margin:12px 0;background:#fff} .wdb-issue.critical{border-color:#b32d2e}.wdb-issue.warning{border-color:#dba617}.wdb-issue.info{border-color:#72aee6} .wdb-issue h3{margin:0 0 6px;font-size:15px}.wdb-issue p{margin:6px 0}.wdb-how{color:#3c434a} .wdb-tag{font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin-right:6px} .wdb-connect ul{list-style:disc;margin-left:18px}.wdb-small{color:#646970;font-size:12px} .wdb-acct h2{margin-top:0}.wdb-acct dl{margin:0}.wdb-acct .wdb-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid #f0f0f1} .wdb-acct dt{color:#50575e}.wdb-acct dd{margin:0;font-weight:600;text-align:right}.wdb-acct h3{font-size:13px;margin:16px 0 6px} .wdb-acct ul{margin:0 0 0 18px;list-style:disc}.wdb-pending{background:#fcf0f1;border-radius:6px;padding:12px;margin:12px 0}' ); } ); function wdbasic_render_page() { if (!current_user_can('manage_options')) { return; } $audit = wdbasic_get_audit(); $score = (int) $audit['score']; $class = $score >= 80 ? 'wdb-ok' : ($score >= 50 ? 'wdb-mid' : 'wdb-bad'); $labels = array( 'critical' => __('Fix first', 'wdbasic'), 'warning' => __('Improve', 'wdbasic'), 'info' => __('Good to know', 'wdbasic'), ); $refresh = wp_nonce_url(admin_url('admin-post.php?action=wdbasic_refresh'), 'wdbasic_refresh'); $connected = wdbasic_is_connected(); $summary = $connected ? get_option('wdbasic_summary') : false; $paid_full = is_array($summary) && in_array($summary['plan'], array('assistant', 'growth'), true); ?>