// Shortcode: [botao_pasta dir="file://///192.168.21.2/publico/01%20-%20Modelos%20Rheserva" label="Abrir pasta" align="center" size="lg" variant="primary" target="_self"] add_shortcode('linkservidor', function($atts, $content = ''){ $a = shortcode_atts([ 'dir' => '', // file://///… ou \\host\share\pasta 'label' => '', // texto do botão (fallback: conteúdo entre [botao_pasta]...[/botao_pasta]) 'align' => 'left', // left|center|right 'size' => 'md', // sm|md|lg 'variant' => 'primary', // primary|secondary|ghost 'target' => '_self', // _self|_blank (muitos browsers ignoram _blank para file://) ], $atts, 'botao_pasta'); if (!$a['dir']) return '
[botao_pasta] faltou o parâmetro dir.
'; $raw = trim($a['dir']); // Normaliza para file://///host/share/path if (preg_match('#^file:\\/\\/#i', $raw)) { // Já é file:// — só garante que não tenha barra sobrando e mantém encoding existente $href = $raw; } else { // Provavelmente UNC \\host\share\pasta -> vira file://///host/share/pasta $p = str_replace('/', '\\', $raw); if (strpos($p, '\\\\') !== 0) $p = '\\\\' . ltrim($p, '\\'); $p = preg_replace('/^\\\\\\\\/','', $p); // remove \\ inicial $p = str_replace('\\','/', $p); // vira host/share/pasta // NÃO fazemos urldecode; deixamos como está. Se quiser encode, use %20 no shortcode. $href = 'file://///' . $p; } // Label $label = $a['label'] !== '' ? $a['label'] : trim($content); if ($label === '') $label = 'Abrir pasta'; // Estilos leves embutidos (para não depender do tema) $wrapStyle = 'margin:8px 0; text-align:' . (in_array($a['align'], ['left','center','right']) ? $a['align'] : 'left') . ';'; $sizes = [ 'sm' => 'padding:8px 12px; font-size:13px; border-radius:10px;', 'md' => 'padding:10px 16px; font-size:14px; border-radius:12px;', 'lg' => 'padding:12px 18px; font-size:15px; border-radius:14px;', ]; $sizeStyle = $sizes[$a['size']] ?? $sizes['md']; $variants = [ 'primary' => 'background:#0b57d0; color:#fff; border:1px solid #0b57d0;', 'secondary' => 'background:#f6f8ff; color:#0b57d0; border:1px solid #dbe5ff;', 'ghost' => 'background:#fff; color:#0b57d0; border:1px solid #e5e7eb;', ]; $variantStyle = $variants[$a['variant']] ?? $variants['primary']; $btnBase = 'font-family:system-ui,Segoe UI,Arial; text-decoration:none; display:inline-block; line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.08); transition:filter .15s ease;'; $hover = 'filter:brightness(0.95);'; // Observação: _blank para file:// pode ser bloqueado por alguns browsers; mantemos opção. $target = in_array($a['target'], ['_self','_blank']) ? $a['target'] : '_self'; $rel = $target === '_blank' ? ' rel="noopener"' : ''; // HTML final ob_start(); ?>