• 15-12-2023, 23:19:17
    #1
    merhaba bu yazdığım eklenti kodu sayesınde başka bir wordpress sitesinden tüm içerikleri çekebilen bir eklenti kodu paylaşiyorum
    api_url kısmına hangi siteden çekileceğini belirliyorsunuz.. daha sonra eklenti.php olarak kaydedip wordpress eklenti kısmına yükleyin wordpress admin panelinden etkinleştirin artık eklentiniz hazır

    <?php
    /*
    Plugin Name: WP Remote Get Content by ID Range
    Description: Belirtilen URL ve ID aralığındaki WordPress yazılarını çeker ve yayınlar.
    Version: 1.0
    Author: Sizin Adınız
    */
    
    // Eklenti sayfasını oluştur
    function wp_remote_get_content_by_id_range_page() {
        ?>
        <div class="wrap">
            <h1>WP Remote Get Content by ID Range</h1>
            <form method="post">
                <label for="site_url">Site URL:</label>
                <input type="text" id="site_url" name="site_url" required>
                <label for="start_id">Başlangıç ID:</label>
                <input type="number" id="start_id" name="start_id" required>
                <label for="end_id">Bitiş ID:</label>
                <input type="number" id="end_id" name="end_id" required>
                <input type="submit" value="İçerikleri Çek ve Paylaş">
            </form>
            <?php
            if (isset($_POST['site_url'], $_POST['start_id'], $_POST['end_id'])) {
                $site_url = esc_url($_POST['site_url']);
                $start_id = intval($_POST['start_id']);
                $end_id = intval($_POST['end_id']);
    
                if ($start_id > 0 && $end_id >= $start_id) {
                    fetch_and_publish_content_by_range($site_url, $start_id, $end_id);
                } else {
                    echo '<p>Lütfen geçerli bir başlangıç ve bitiş ID girin.</p>';
                }
            }
            ?>
        </div>
        <?php
    }
    
    // Belirtilen URL ve ID aralığındaki WordPress yazılarını çeken ve yayınlayan fonksiyon
    function fetch_and_publish_content_by_range($site_url, $start_id, $end_id) {
        for ($id = $start_id; $id <= $end_id; $id++) {
            $target_api_url = $site_url . '/wp-json/wp/v2/posts/' . $id;
    
            $response = wp_remote_get($target_api_url);
    
            if (is_wp_error($response)) {
                continue;
            } else {
                $post_data = json_decode(wp_remote_retrieve_body($response), true);
    
                if (!empty($post_data) && !isset($post_data['error'])) {
                    $post_title = $post_data['title']['rendered'];
                    $post_content = $post_data['content']['rendered'];
    
                    $new_post = array(
                        'post_title' => $post_title,
                        'post_content' => $post_content,
                        'post_status' => 'publish',
                    );
    
                    $new_post_id = wp_insert_post($new_post);
    
                    if (is_wp_error($new_post_id)) {
                        continue;
                    }
    
                    echo 'ID ' . $id . ' başarıyla çekildi ve yayınlandı.<br>';
                }
            }
        }
    }
    
    // Eklenti sayfasını admin menüsüne ekleyin
    add_action('admin_menu', function () {
        add_menu_page('WP Remote Get Content by ID Range', 'Remote Content by ID Range', 'manage_options', 'wp_remote_get_content_by_id_range', 'wp_remote_get_content_by_id_range_page');
    });
    ?>
  • 15-12-2023, 23:28:52
    #2
    Şiir gibi kod yazmışsınız👍🏻
    Tebrikler.
  • 15-12-2023, 23:35:05
    #3
    localhosta denedim çekilecek yazını urlsini api_url ekledim öyle ekrana bakıyorum tık yok
  • 15-12-2023, 23:40:11
    #4
    ahgtasarim adlı üyeden alıntı: mesajı görüntüle
    localhosta denedim çekilecek yazını urlsini api_url ekledim öyle ekrana bakıyorum tık yok

    kodu güncelledim hocam tekrar kodu değiştirip dener misiniz
  • 15-12-2023, 23:44:07
    #5
    shms adlı üyeden alıntı: mesajı görüntüle
    kodu güncelledim hocam tekrar kodu değiştirip dener misiniz
    değiştim kodu. admin panelinde aşagıda yer alan alanlar çıkıyor bunlar için bir değer belirleyecekmiyiz?
    api_url kısmına şu şeklide direk sayfa linki ekledim: site.com/kategori/konuadı
  • 15-12-2023, 23:52:30
    #6
    takip
  • 16-12-2023, 00:06:44
    #7
    ahgtasarim adlı üyeden alıntı: mesajı görüntüle
    değiştim kodu. admin panelinde aşagıda yer alan alanlar çıkıyor bunlar için bir değer belirleyecekmiyiz?
    api_url kısmına şu şeklide direk sayfa linki ekledim: site.com/kategori/konuadı
    PHONIX adlı üyeden alıntı: mesajı görüntüle
    takip

    kod düzeltildi şimdi kullanbilirsiniz hocam
  • 16-12-2023, 00:21:56
    #8
    shms adlı üyeden alıntı: mesajı görüntüle
    kod düzeltildi şimdi kullanbilirsiniz hocam
    Başlangıç ID ile bitiş ID aralığına hangi değeri gireceğiz. url kısmına wp de yer alan kategorilerimi gireceğiz yoksa, direk yazını url sinimi gireceğiz. ayrıca bu URL kısmını admin panelie alırsanız daha kolay olur url belirlemek.
  • 16-12-2023, 01:42:57
    #9
    ahgtasarim adlı üyeden alıntı: mesajı görüntüle
    Başlangıç ID ile bitiş ID aralığına hangi değeri gireceğiz. url kısmına wp de yer alan kategorilerimi gireceğiz yoksa, direk yazını url sinimi gireceğiz. ayrıca bu URL kısmını admin panelie alırsanız daha kolay olur url belirlemek.
    <?php
    
    /*
    
    Plugin Name: WP Veri Çekme
    
    Description: Belirtilen ID aralığındaki WordPress yazılarını çeker ve yayınlar.
    
    Version: 1.0
    
    Author: R10
    
    */
    
    
    
    // Eklenti sayfasını oluştur
    
    function wp_remote_get_content_by_id_range_page() {
    
    ?>
    
    <div class="wrap">
    
    <h1>WP Veri Çekme</h1>
    
    <form method="post">
    
    <label for="api_url">URL Giriniz:</label>
    
    <input type="text" id="api_url" name="api_url" required>
    
    
    
    <label for="start_id">Başlangıç ID:</label>
    
    <input type="number" id="start_id" name="start_id" required>
    
    <label for="end_id">Bitiş ID:</label>
    
    <input type="number" id="end_id" name="end_id" required>
    
    <input type="submit" value="İçerikleri Çek ve Paylaş">
    
    </form>
    
    <?php
    
    if (isset($_POST['api_url'], $_POST['start_id'], $_POST['end_id'])) {
    
    $api_url = esc_url_raw($_POST['api_url']);
    
    $start_id = intval($_POST['start_id']);
    
    $end_id = intval($_POST['end_id']);
    
    
    
    if ($start_id > 0 && $end_id >= $start_id) {
    
    fetch_and_publish_content_by_range($api_url, $start_id, $end_id);
    
    } else {
    
    echo '<p>Lütfen geçerli bir başlangıç ve bitiş ID girin.</p>';
    
    }
    
    }
    
    ?>
    
    </div>
    
    <?php
    
    }
    
    
    
    // Belirtilen ID aralığındaki WordPress yazılarını çeken ve yayınlayan fonksiyon
    
    function fetch_and_publish_content_by_range($api_url, $start_id, $end_id) {
    
    // Belirtilen ID aralığındaki tüm geçerli yazıları çekmek için döngü
    
    for ($id = $start_id; $id <= $end_id; $id++) {
    
    // Belirtilen post ID'si için WordPress yazısını çekme
    
    $target_api_url = trailingslashit($api_url) . 'wp-json/wp/v2/posts/' . $id;
    
    
    
    // API kullanarak veri çekme
    
    $response = wp_remote_get($target_api_url);
    
    
    
    // Yanıtı kontrol etme
    
    if (is_wp_error($response)) {
    
    // Hata durumunda işlemleri burada ele alabilirsiniz.
    
    continue; // Hata durumunda diğer ID'leri kontrol etmeye devam et
    
    } else {
    
    // Yanıt başarılı ise JSON verisini çözme
    
    $post_data = json_decode(wp_remote_retrieve_body($response), true);
    
    
    
    // Verinin beklenen yapısıyla ilgili kontrol
    
    if (is_array($post_data) && isset($post_data['title']['rendered']) && isset($post_data['content']['rendered'])) {
    
    // Başlık ve içerik alınabilir
    
    $post_title = $post_data['title']['rendered'];
    
    $post_content = $post_data['content']['rendered'];
    
    
    
    // Yeni bir yazı oluşturma
    
    $new_post = array(
    
    'post_title' => $post_title,
    
    'post_content' => $post_content,
    
    'post_status' => 'publish',
    
    );
    
    
    
    // Yeni yazıyı ekleyerek ID'yi alın
    
    $new_post_id = wp_insert_post($new_post);
    
    
    
    if (is_wp_error($new_post_id)) {
    
    // Ekleme hatası durumunda işlemleri burada ele alabilirsiniz.
    
    continue; // Hatada diğer ID'leri kontrol etmeye devam et
    
    }
    
    
    
    // Yeni yazı başarıyla eklendiğinde bir mesaj yazdırabilirsiniz.
    
    echo 'ID ' . $id . ' başarıyla çekildi ve yayınlandı.<br>';
    
    } else {
    
    // Veri beklenen yapıda değilse veya eksikse bir hata mesajı yazdırabilir veya işlem yapabilirsiniz.
    
    echo 'ID ' . $id . ' için beklenen veri yapıda değil veya eksik.';
    
    }
    
    }
    
    }
    
    }
    
    
    
    // Eklenti sayfasını admin menüsüne ekleyin
    
    add_action('admin_menu', function () {
    
    add_menu_page('WP Veri Çekme', 'WP Veri Çekme', 'manage_options', 'wp_remote_get_content_by_id_range', 'wp_remote_get_content_by_id_range_page');
    
    });
    
    ?>

    Benim de katkım olsun. URL i admin paneline ekledim.

    ID yi bulabilmek için bu kodda veri çekmek istediğiniz url in sonuna wp-json/wp/v2/posts/ ekleyerek postların idlerini tespit etmeniz gerekiyor.

    kodları not defterine yapıştırıp. dosyaya bir isim verin. (vericekme.php gibi) Sonrasında zip olarak sıkıştırıp wordpress admin panelinden eklentiler kısmında eklenti yükleme kısmından upload edebilirsiniz.

    Sol taraftaki menüden eklenti ayarlarına erişebilirsiniz.