WordPress Canlı TV İzleme Eklentisi / Kodları

WordPress Canlı TV İzleme Eklentisi / Kodları

1 Puan2 Puan3 Puan4 Puan5 Puan
Loading...
  • Ana Sayfa
  • WordPress Canlı TV İzleme Eklentisi / Kodları
softindir tv izleme kodlari 01

🎬 WordPress Canlı TV Yayın Sistemi Eklentisi – HLS ve YouTube Destekli Gelişmiş Plugin

 

İlginizi çekebilir 👉 ChatGPT ile Görsel Nasıl Oluşturulur? Adım Adım Rehber

📌 WordPress ile Canlı TV izletme Deneyimini Zirveye Taşıyın

Günümüzde kullanıcıların canlı TV yayınlarına olan ilgisi hızla artıyor. Özellikle haber, spor, müzik ve eğlence içeriklerinin anlık olarak izlenebilmesi için web sitelerine entegre edilen canlı TV eklentileri, ziyaretçi etkileşimini büyük ölçüde artırıyor. Eğer siz de WordPress tabanlı web sitenize HLS veya YouTube canlı yayınlarını kolayca eklemek istiyorsanız, bu makalede tanıtacağımız özel plugin tam size göre. WordPress Canlı TV İzleme Eklentisi / Kodları.

Bu yazıda, tamamen size özel geliştirilen ve JSON dosyası ile kanal listelemesi yapan, aynı zamanda admin panelinden kanal ekleyip düzenleyebileceğiniz, mobil uyumlu bir Canlı TV Sistemi eklentisini tüm detaylarıyla anlatacağız. Bu eklenti ile aynı zamanda Youtube linklerini de tanımakta. Youtube video veya canlı yayınların linklerini ektediğinizde otomatik tanır ve listede yayınlar.

Sitenize canlı tv hizmeti ekleyerek trafik çekebilir ve kullanıcının uzun süre boyunca sitede kalmasını sağlayarak seo açısından olumlu sonuçlar alabilirsiniz.

DEMO: https://www.softindir.tr/canli-tv-izle-tv-kanallarini-izle.html


softindir tv izleme kodlari 1

⚙️ Eklenti Ne İşe Yarar?

Bu gelişmiş canlı TV eklentisi, WordPress sitenize aşağıdaki olanakları sunar:

  • 🎥 HLS (.m3u8) ve YouTube canlı yayınlarını destekler.

  • 🧩 Kategori filtresi ve arama kutusu ile ziyaretçiler kanal bulmakta zorlanmaz.

  • 🧠 Admin panelinden kanal ekleme, silme ve güncelleme özellikleriyle tamamen özelleştirilebilir.

  • 📄 Yayınlar kanallar.json dosyasında saklanır, dışa aktarması ve taşınması oldukça kolaydır.

  • 🧾 [softindir_tv_liste*] (* karakterini silin) shortcode’u sayesinde her sayfada anında çalıştırabilirsiniz.

Bu sistem, soft indir siteleri, medya portalları, radyo/TV istasyonları, dernek ya da haber portalları için harika bir çözüm sunar.


🧪 Özellikler – Neden Bu Canlı TV Sistemi?

✅ HLS & YouTube Desteği

Hem .m3u8 uzantılı HLS yayınlarını hem de YouTube canlı linklerini otomatik analiz ederek doğru oynatıcıda çalıştırır. Bu sayede kullanıcılar herhangi bir oynatma problemi yaşamaz.

✅ Yönetici Panelinden Kolay Yönetim

WordPress admin menüsüne eklenen özel bir sayfada;

  • Yeni kanal ekleyebilir,

  • Mevcut kanalları düzenleyebilir,

  • İstenmeyen kanalları silebilirsiniz.

✅ JSON ile Güvenli ve Esnek Veri Saklama

Tüm kanal verileri kanallar.json dosyasında saklanır. Böylece veri kaybı riskiniz azalır ve yedekleme işlemleri kolaylaşır.

✅ Mobil Uyumlu ve Duyarlı Tasarım

Responsive yapı sayesinde ister masaüstü, ister mobil cihazlardan gelen ziyaretçiler kolayca yayınları izleyebilir.

✅ Hızlı Arama ve Kategori Filtresi

Kullanıcılar arama kutusu ile kanal adı yazıp filtreleyebilir. Ayrıca kategoriye göre listeleme özelliği sayesinde büyük listeler içinde kaybolmazlar.


🧩 Shortcode Kullanımı

Sistemi WordPress sayfa veya yazılarınıza entegre etmek çok kolay. Tek yapmanız gereken:

[softindir_tv_liste*] (* karakterini silin) 

Bu kodu herhangi bir yazı veya sayfaya yapıştırdığınızda, otomatik olarak aşağıdaki modüller görüntülenir:

  • 🔎 Arama kutusu

  • 🧾 Kategori seçici

  • 📺 Kanal listesi

  • 🎬 Canlı yayın oynatıcı (otomatik olarak HLS ya da YouTube şeklinde ayarlanır)


📥 Nasıl Kurulur?

kanallar.json dosyasını wp-content/uploads/ klasörüne upload edin. https://softupload.tr/rE/kanallar.json

Aşağıdaki kodları functions.php dosyasının en altına ekleyin. Dosya düzenleme gibi işlemlerle uğraşmak istemiyorsanız Code Snippets gibi bir eklenti aracılığı ile de ekleyebilirsiniz. Ya da aşağıdaki adımları uygulayabilirsiniz. Takıldığınız yerde lütfen yorum olarak yazın, anında cevaplayalım.

<?php
/*
Plugin Name: Softindir TR Canli TV Sistemi - Gelişmiş
Description: Admin panelden kanal ekle/düzenle/sil + YouTube + HLS desteği + JSON liste.
Shortcode: [softindir_tv_liste*]
*/

function softindir_get_json_path() {
    return WP_CONTENT_DIR . '/uploads/kanallar.json';
}

add_action('admin_menu', function() {
    add_menu_page('Canlı TV Kanalları', 'TV Kanalları', 'manage_options', 'tv-kanallari', 'softindir_tv_admin_panel');
});

function softindir_tv_admin_panel() {
    $json_file = softindir_get_json_path();
    $kanallar = file_exists($json_file) ? json_decode(file_get_contents($json_file), true) : [];

    if (isset($_POST['tv_add'])) {
        $kanallar[] = [
            'softindir_kanal_name' => sanitize_text_field($_POST['tv_name']),
            'softindir_kanal_url' => trim($_POST['tv_url']),
            'softindir_kanal_kategori' => sanitize_text_field($_POST['tv_kategori'])
        ];
        file_put_contents($json_file, json_encode($kanallar, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        echo '<div class="updated"><p>Kanal eklendi!</p></div>';
    }

    if (isset($_POST['tv_delete'])) {
        $index = intval($_POST['tv_index']);
        if (isset($kanallar[$index])) {
            unset($kanallar[$index]);
            $kanallar = array_values($kanallar);
            file_put_contents($json_file, json_encode($kanallar, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
            echo '<div class="updated"><p>Kanal silindi!</p></div>';
        }
    }

    if (isset($_POST['tv_update'])) {
        $index = intval($_POST['tv_index']);
        if (isset($kanallar[$index])) {
            $kanallar[$index]['softindir_kanal_name'] = sanitize_text_field($_POST['tv_name']);
            $kanallar[$index]['softindir_kanal_url'] = trim($_POST['tv_url']);
            $kanallar[$index]['softindir_kanal_kategori'] = sanitize_text_field($_POST['tv_kategori']);
            file_put_contents($json_file, json_encode($kanallar, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
            echo '<div class="updated"><p>Kanal güncellendi!</p></div>';
        }
    }
    ?>
    <div class="wrap">
        <h1>Canlı TV Kanalları</h1>
        <form method="post">
            <h3>Yeni Kanal Ekle</h3>
            <input type="text" name="tv_name" placeholder="Kanal Adı" required style="width:300px;" /> <br><br>
            <input type="url" name="tv_url" placeholder=".m3u8 veya YouTube canlı yayını" required style="width:600px;" /><br><br>
            <input type="text" name="tv_kategori" placeholder="Kategori (Genel, Spor...)" required style="width:300px;" /> <br><br>
            <button type="submit" name="tv_add" class="button button-primary">Kanalı Ekle</button>
        </form>
        <hr>
        <h3>Mevcut Kanallar</h3>
        <table class="widefat">
            <thead><tr><th>#</th><th>Ad</th><th>Yayın</th><th>Kategori</th><th>İşlem</th></tr></thead>
            <tbody>
            <?php foreach ($kanallar as $i => $k): ?>
                <tr>
                    <form method="post">
                        <td><?= $i + 1 ?></td>
                        <td><input type="text" name="tv_name" value="<?= esc_attr($k['softindir_kanal_name']) ?>" style="width:150px;" /></td>
                        <td><input type="url" name="tv_url" value="<?= esc_url($k['softindir_kanal_url']) ?>" style="width:300px;" /></td>
                        <td><input type="text" name="tv_kategori" value="<?= esc_attr($k['softindir_kanal_kategori']) ?>" style="width:100px;" /></td>
                        <td>
                            <input type="hidden" name="tv_index" value="<?= $i ?>">
                            <button type="submit" name="tv_update" class="button button-primary">Güncelle</button>
                            <button type="submit" name="tv_delete" class="button" onclick="return confirm('Silinsin mi?')">Sil</button>
                        </td>
                    </form>
                </tr>
            <?php endforeach; ?>
            </tbody>
        </table>
    </div>
    <?php
}

function softindir_tv_liste_shortcode() {
    $json_file = softindir_get_json_path();
    if (!file_exists($json_file)) return '<p style="color:red;">Kanal listesi yok.</p>';
    $kanallar = json_decode(file_get_contents($json_file), true);
    ob_start(); ?>
    <style>
    .tv-wrap { display: flex; gap: 20px; flex-wrap: wrap; align-items: flex-start; }
    .tv-list { flex: 1; max-width: 300px; background: #f1f1f1; padding: 15px; border-radius: 10px; max-height: 600px; overflow-y: auto; }
    .tv-player { flex: 3; min-width: 300px; background: #000; border-radius: 10px; padding: 10px; color: white; text-align: center; font-size: 22px; display: flex; align-items: center; justify-content: center; height: 500px; }
    .tv-player img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 10px; }
    .tv-list input, .tv-list select { width: 100%; margin-bottom: 10px; padding: 10px; border-radius: 5px; border: 1px solid #ccc; }
    .tv-channel { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; padding: 8px; background: #fff; border-radius: 5px; cursor: pointer; }
    .tv-channel:hover { background: #e0e0e0; }
    .tv-channel button { background: #0073aa; color: #fff; border: none; padding: 5px 10px; border-radius: 5px; cursor: pointer; }
    iframe.youtube-player { width: 100%; height: 500px; border: none; border-radius: 8px; }
    @media (max-width: 768px) {
    .tv-wrap { flex-direction: column-reverse; }
    .tv-list, .tv-player { max-width: 100%; width: 100%; }
    .tv-player { height: auto; }
}
        .tv-list, .tv-player { max-width: 100%; width: 100%; }
        .tv-player { height: auto; }
    }
    </style>

    <div class="tv-wrap">
        <div class="tv-list">
            <input type="text" id="tvSearch" placeholder="Kanal ara..." onkeyup="tvFilterList()">
            <select id="tvCategory" onchange="tvFilterList()">
                <option value="">Tüm Kategoriler</option>
                <?php foreach (array_unique(array_column($kanallar, 'softindir_kanal_kategori')) as $kategori): ?>
                    <option value="<?= esc_attr($kategori) ?>"><?= esc_html($kategori) ?></option>
                <?php endforeach; ?>
            </select>
            <div id="tvChannels">
                <?php foreach ($kanallar as $i => $kanal): ?>
                    <div class="tv-channel" data-kanal="<?= strtolower($kanal['softindir_kanal_name']) ?>" data-kategori="<?= $kanal['softindir_kanal_kategori'] ?>" onclick="playChannel_<?= $i ?>()">
                        <span><?= esc_html($kanal['softindir_kanal_name']) ?></span>
                        <button>İzle</button>
                    </div>
                <?php endforeach; ?>
            </div>
        </div>
        <div class="tv-player" id="tvContainer">
            <img src="https://www.softindir.tr/wp-content/uploads/2025/05/softindir-tv.webp" alt="Softindir TV">
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
    <script>
    const playerDiv = document.getElementById("tvContainer");
    <?php foreach ($kanallar as $i => $kanal): ?>
    function playChannel_<?= $i ?>() {
        const source = <?= json_encode($kanal['softindir_kanal_url']) ?>.trim();
        if (source.includes("youtube.com") || source.includes("youtu.be")) {
            let youtubeId = "";
            if (source.includes("youtu.be")) {
                youtubeId = source.split("youtu.be/")[1];
            } else {
                youtubeId = new URL(source).searchParams.get("v");
            }
            playerDiv.innerHTML = <iframe class='youtube-player' src='https://www.youtube.com/embed/${youtubeId}?autoplay=1&mute=1' allow='autoplay; encrypted-media' allowfullscreen></iframe>;
        } else {
            playerDiv.innerHTML = <video id='mainTVPlayer' controls autoplay width='100%' height='500' style='background:#000;'></video>;
            const player = document.getElementById("mainTVPlayer");
            if (Hls.isSupported()) {
                const hls = new Hls();
                hls.loadSource(source);
                hls.attachMedia(player);
            } else if (player.canPlayType('application/vnd.apple.mpegurl')) {
                player.src = source;
            }
        }
    }
    <?php endforeach; ?>

    function tvFilterList() {
        const query = document.getElementById("tvSearch").value.toLowerCase();
        const category = document.getElementById("tvCategory").value;
        document.querySelectorAll(".tv-channel").forEach(el => {
            const kanal = el.dataset.kanal;
            const kategori = el.dataset.kategori;
            el.style.display = kanal.includes(query) && (!category || kategori === category) ? 'flex' : 'none';
        });
    }
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('softindir_tv_liste', 'softindir_tv_liste_shortcode'); 
?>

Bu özel eklentiyi sitenize kurmak için aşağıdaki adımları izleyebilirsiniz:

1. PHP Kodunu Eklentiye Dönüştürme

  • Verilen kodu bir .php dosyası olarak oluşturun. Örneğin: softindir-tv.php

  • Bu dosyayı wp-content/plugins/ dizinine yükleyin.

2. Eklentiyi Etkinleştirme

  • WordPress admin paneline gidin.

  • Eklentiler → Yüklü Eklentiler bölümünden Softindir TR Canlı TV Sistemi – Gelişmiş eklentisini etkinleştirin.

3. JSON Dosyasını Oluşturun

  • wp-content/uploads/ klasörü altında kanallar.json adında boş bir dosya oluşturun. (İzinler 755/644 olmalı)

🧪 Admin Paneli Özellikleri (Liste Formatında)

  • Kanal Ekle:
    Kanal adı, yayın adresi ve kategori girerek yeni bir kanal kolayca eklenebilir.

  • Kanal Güncelle:
    Mevcut kanallar listelenir, her biri düzenlenebilir form alanlarına sahiptir.

  • Kanal Sil:
    Her kanalın yanında silme butonu yer alır. Silme işlemi öncesi onay alınır (emin misiniz? şeklinde).

  • Kullanıcı Dostu Arayüz:
    WordPress’in varsayılan admin panel yapısıyla uyumlu, sade ve erişilebilir bir yönetim ekranı sağlar.

softindir tv izleme kodlari 2

🎯 Teknik Detaylar ve Kullanılan Teknolojiler

📂 JSON Yapısı

Tüm kanallar aşağıdaki yapı ile saklanır:

[
  {
    "softindir_kanal_name": "TRT Haber",
    "softindir_kanal_url": "https://....m3u8",
    "softindir_kanal_kategori": "Haber"
  }
]

🎥 Yayın Oynatma Mantığı

  • Eğer URL içinde youtube.com ya da youtu.be varsa: iframe ile YouTube embed edilir.

  • Eğer URL .m3u8 içeriyorsa: Hls.js kütüphanesi ile HLS yayını HTML5 <video> ile oynatılır.


📱 Mobil Uyumluluk ve Kullanıcı Deneyimi

Eklenti, ekran boyutuna duyarlıdır. Mobil cihazlarda:

  • Yayın oynatıcı en üstte yer alır,

  • Kanal listesi altında görünür,

  • Arayüz, dokunmatik desteklidir.

Bu da kullanıcılar için sorunsuz bir deneyim sunar.


⚠️ Güvenlik ve Performans

  • sanitize_text_field ve esc_attr fonksiyonları ile XSS güvenliği sağlanmıştır.

  • file_put_contents() ile veri yazma işlemleri yapılırken önce içerik doğrulaması yapılır.

  • JSON dosyası dışında ek bir veritabanı ihtiyacı doğmaz, böylece WordPress performansına yük bindirmez.


🔄 Güncelleme ve Genişletme Önerileri

Eklenti temel haliyle işlevseldir ancak şu iyileştirmeler yapılabilir:

  • 📊 Yayınların anlık çevrimdışı kontrolü (ping kontrolü)

  • ⭐ Favori kanal özelliği

  • 🌙 Koyu tema/dark mode desteği

  • 🗂️ Kategorileri otomatik sıralama

  • 🧠 Yapay zekâ önerisi (en popüler kanal gösterimi)


📌 Sonuç: Kendi Canlı Yayın Platformunuzu Oluşturun

Eğer WordPress sitenize canlı TV sistemi entegre etmek istiyorsanız, bu eklenti tam size göre. Hem geliştirici dostu hem de kullanıcı odaklı tasarımıyla öne çıkan bu yapı sayesinde kendi yayın portalınızı dakikalar içinde kurabilirsiniz.

🌐 Şimdi Ne Yapmalısınız?

✅ Eklentiyi indirip kurun
✅ JSON dosyanızı oluşturun
[softindir_tv_liste*] (* karakterini silin) shortcode’unu ekleyin
✅ Ziyaretçilerinize keyifli bir izleme deneyimi sunun!

Takıldığınız bir yer olur ise lütfen yorum olarak yazın yardımcı olalım.

Admin Panel Kanal Ekleme Ekranı

softindir tv izleme admin panel

WordPress Canlı TV İzleme Eklentisi / Kodları YAPILAN YORUMLAR
Yorum Yapılınca Bildirim Al
Bildir
guest

0 Yorum
Inline Feedbacks
View all comments
0
Size yardımcı olmak isteriz, lütfen yorum yapın.x