function mle_handle_request() { if (!isset($_POST['url'])) { wp_send_json_error('URL no proporcionada.'); wp_die(); } $url = esc_url_raw($_POST['url']); if (empty($url)) { wp_send_json_error('URL inválida.'); wp_die(); } // Obtener el contenido HTML de la URL proporcionada $response = wp_remote_get($url); if (is_wp_error($response)) { wp_send_json_error('Error al obtener la página: ' . $response->get_error_message()); wp_die(); } $html = wp_remote_retrieve_body($response); if (empty($html)) { wp_send_json_error('No se pudo obtener contenido de la página.'); wp_die(); } // Analizar el HTML con DOMDocument $dom = new DOMDocument(); @$dom->loadHTML($html); $links = []; $seen_links = []; // Array para almacenar enlaces únicos // Intentar encontrar enlaces en varias ubicaciones comunes $elements_to_search = [ 'nav', // Etiquetas de navegación 'ul', // Listas, comunes para menús 'ol', // Listas ordenadas 'div', // Divs generales que podrían tener menús ]; foreach ($elements_to_search as $element) { $nodes = $dom->getElementsByTagName($element); foreach ($nodes as $node) { $anchors = $node->getElementsByTagName('a'); foreach ($anchors as $a) { $href = $a->getAttribute('href'); $text = trim($a->nodeValue); // Intentar obtener una imagen dentro del enlace $img = $a->getElementsByTagName('img')->item(0); $img_src = $img ? $img->getAttribute('src') : null; // Filtrar enlaces vacíos o irrelevantes (como '#') y duplicados if (!empty($href) && $href !== "#" && !strpos($href, "javascript:") && !in_array($href, $seen_links)) { $seen_links[] = $href; // Marcar el enlace como procesado $links[] = [ 'href' => $href, 'text' => $text ?: $href, 'image' => $img_src ? (strpos($img_src, 'http') === false ? $url . $img_src : $img_src) : null, // Asegurar la URL completa de la imagen ]; } } } } if (empty($links)) { wp_send_json_error('No se encontraron enlaces en el menú. Intenta con una URL diferente o verifica la estructura del menú.'); wp_die(); } wp_send_json_success($links); wp_die(); } add_action('wp_ajax_nopriv_mle_extract_menu', 'mle_handle_request'); add_action('wp_ajax_mle_extract_menu', 'mle_handle_request'); Lastminute | Embajada de Marca®
Volver atrás

Informar de abuso

Lastminute

1000124281
1000124281
0 (0 Reviews)

Spot

Enlaces

Menú
[menu_links_extractor]

Etiquetas

Contacto

Avatar

embajadademarca

Miembro desde hace 6 meses
Ver el perfil
0 0 votos
Calificación del artículo
Suscribir
Notificar de
0 Comentarios
Más antiguo
El más nuevo Más votado
Comentarios en línea
Ver todos los comentarios
0
Me encantaría conocer tu opinión, por favor comenta.x