Cum să creezi un tur virtual interactiv în WordPress folosind Pannellum

YouTube Logo Urmărește canalul nostru de YouTube

Dacă ai un site de prezentare imobiliară, un muzeu virtual sau vrei să oferi o experiență interactivă vizitatorilor tăi, un tur virtual este o soluție excelentă. În acest tutorial, îți voi arăta cum să implementezi un tur virtual interactiv pe site-ul tău WordPress folosind Pannellum, o bibliotecă JavaScript gratuită, și un shortcode personalizat.

La final, vei avea un tur virtual unde utilizatorii pot naviga între camere folosind hotspot-uri personalizate.

Ce este Pannellum și cum funcționează?

Pannellum este o bibliotecă open-source care îți permite să creezi tururi panoramice fără a necesita software suplimentar. Aceasta oferă o metodă simplă și eficientă pentru a afișa imagini 360° direct într-un browser, fără a fi nevoie de pluginuri suplimentare.

Cum să creezi un tur virtual personalizat în WordPress?

Pasul 1: Adaugă imaginile panoramice

Pentru a crea turul virtual, ai nevoie de imagini panoramice pentru fiecare încăpere. Acestea trebuie să fie în format equirectangular (2:1 aspect ratio) și să fie încărcate în biblioteca media a WordPress.

Pasul 2: Adaugă codul shortcode-ului în functions.php sau într-un plugin custom

Vom crea un shortcode în WordPress care va afișa turul virtual pe orice pagină sau postare. Acest shortcode va genera automat codul necesar pentru a încărca Pannellum și a configura scenele.

Codul complet pentru turul virtual:

function tur_virtual_shortcode() {
    // Imagini panoramice pentru fiecare cameră + hotspot-uri personalizate (uși)
    $house_tour_scenes = [
        "camera1" => [
            "image" => "https://tutoriale.site/wp-content/uploads/2025/02/shot-panoramic-composition-living-room-2-scaled.jpg",
            "yaw" => 20,
            "hotspots" => [
                ["pitch" => 0, "yaw" => 90, "scene" => "camera2", "text" => "Intră în dormitor"]
            ]
        ],
        "camera2" => [
            "image" => "https://tutoriale.site/wp-content/uploads/2025/02/shot-panoramic-composition-bedroom-scaled.jpg",
            "yaw" => 90,
            "hotspots" => [
                ["pitch" => 0, "yaw" => -90, "scene" => "camera1", "text" => "Înapoi în living"],
                ["pitch" => 0, "yaw" => 180, "scene" => "camera3", "text" => "Mergi în bucătărie"]
            ]
        ],
        "camera3" => [
            "image" => "https://tutoriale.site/wp-content/uploads/2025/02/shot-panoramic-composition-living-room-scaled.jpg",
            "yaw" => 180,
            "hotspots" => [
                ["pitch" => 0, "yaw" => 0, "scene" => "camera2", "text" => "Înapoi în dormitor"],
                ["pitch" => 0, "yaw" => 270, "scene" => "camera4", "text" => "Mergi pe balcon"]
            ]
        ],
        "camera4" => [
            "image" => "https://tutoriale.site/wp-content/uploads/2025/02/new-york-city-panorama-scaled.jpg",
            "yaw" => 270,
            "hotspots" => [
                ["pitch" => 0, "yaw" => 90, "scene" => "camera3", "text" => "Înapoi în bucătărie"]
            ]
        ]
    ];

    ob_start();
    echo '<div style="margin-top: 20px;">';
    echo '<div id="panorama" style="width: 100%; height: 500px;"></div>';
    echo '</div>';
    echo '<script src="https://cdn.jsdelivr.net/npm/pannellum@2.5.6/build/pannellum.min.js"></script>';
    echo '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pannellum@2.5.6/build/pannellum.css">';
    echo '<script>
        document.addEventListener("DOMContentLoaded", function() {
            var scenes = ' . json_encode($house_tour_scenes) . ';

            var viewer = pannellum.viewer("panorama", {
                "default": {
                    "firstScene": "camera1"
                },
                "scenes": {';

    foreach ($house_tour_scenes as $scene => $data) {
        echo '"' . $scene . '": {
                    "type": "equirectangular",
                    "panorama": "' . esc_url($data["image"]) . '",
                    "yaw": ' . $data["yaw"] . ',
                    "hotSpots": [';
        
        if (!empty($data["hotspots"])) {
            $hotspotArray = [];
            foreach ($data["hotspots"] as $hotspot) {
                $hotspotArray[] = '{
                    "pitch": ' . $hotspot["pitch"] . ',
                    "yaw": ' . $hotspot["yaw"] . ',
                    "type": "scene",
                    "text": "' . esc_html($hotspot["text"]) . '",
                    "sceneId": "' . esc_html($hotspot["scene"]) . '",
                    "cssClass": "hotspot-door"
                }';
            }
            echo implode(',', $hotspotArray);
        }

        echo ']
                },';
    }

    echo '}
            });

            viewer.loadScene("camera1");
        });
    </script>';

    // Stilizare pentru ușă
    echo '<style>
        .hotspot-door {
            background: url("https://tutoriale.site/wp-content/uploads/2025/02/WhatsApp-Image-2025-01-16-at-17.18.04-removebg-preview.png") no-repeat center center;
            background-size: contain;
            width: 80px;
            height: 120px;
            cursor: pointer;
            border-radius: 5px;
            transition: transform 0.3s ease, opacity 0.3s ease;
        }

        .hotspot-door:hover {
            transform: scale(1.1);
            opacity: 0.8;
        }
    </style>';

    return ob_get_clean();
}
add_shortcode('tur_virtual', 'tur_virtual_shortcode');

Pasul 3: Folosirea shortcode-ului

Adaugă [tur_virtual] într-o pagină sau postare și vei avea un tur virtual interactiv!

Concluzie

Acest tutorial te-a ghidat pas cu pas în crearea unui tur virtual folosind WordPress și Pannellum. Poți adăuga mai multe camere, personaliza hotspot-urile și ajusta stilul pentru o experiență mai interactivă. Încearcă-l și oferă vizitatorilor o experiență unică!

 

× YouTube Logo

🔔 Abonează-te la canalul nostru!

Primește cele mai noi tutoriale WordPress direct pe YouTube!

×