WordPress haber çekme, bir haber kaynağındaki içerikleri RSS beslemesi, API veya hazır bir eklenti aracılığıyla otomatik olarak sitenize yazı olarak aktarmaktır. En pratik yol bir eklenti kullanmak, en esnek yol API, en yaygın yol ise RSS haber feed'idir. Hangi yöntemi seçerseniz seçin, haberi yayınlama hakkınızın olması ve yayından önce editoryal kontrol yapmanız gerekir.
Bu rehber, sitenizi kurduktan sonraki adımı anlatıyor. Henüz kurulum aşamasındaysanız önce WordPress haber sitesi kurma rehberimizi okuyun.
Haber çekme yöntemleri
| Yöntem | Nasıl çalışır? | Avantaj | Dezavantaj |
|---|---|---|---|
| RSS / Atom beslemesi | Kaynağın yayınladığı XML beslemesi okunur | Standart, her yerde desteklenir | Genellikle özet içerir; görsel ve kategori bilgisi sınırlı olabilir |
| API | Kaynağın sunduğu uç noktalardan JSON veri alınır | Tam metin, filtreleme, ayrıntılı alanlar | Kod yazmayı gerektirir |
| Hazır eklenti | Eklenti, kaynağa bağlanıp yazıları oluşturur | Kod gerekmez, hızlı kurulum | Eklentinin sunduğu ayarlarla sınırlısınız |
| FTP / SFTP | Haber dosyaları sunucuya bırakılır, sistem okur | Büyük hacimde güvenilir | Kurulumu daha teknik |
Yazar Haber Ajansı aboneleri bu yöntemleri, paketlerine sözleşmeyle eklenen teslim yollarına göre kullanabilir. Kod yazmadan başlamak isteyenler için YHA WordPress eklentisi en kısa yoldur. Beslemeleri kendi aracınızla okumak isterseniz YHA RSS, Atom ve XML besleme belgelerine, tam metin ve gelişmiş filtreleme için YHA API belgelerine bakın.
RSS haber feed'i nedir?
RSS (Really Simple Syndication), bir sitenin yeni içeriklerini standart bir XML formatında listeleyen dosyadır. Bir RSS haber feed'inde her haber bir <item> öğesidir ve genellikle şu alanları içerir:
title: haber başlığılink: haberin kaynak adresidescription: özet veya tam metinpubDate: yayın tarihiguid: haberin benzersiz kimliğicategory: kategori (varsa)enclosureveya medya etiketleri: görsel (varsa)
Atom, aynı işi yapan daha yeni bir standarttır; WordPress her ikisini de okuyabilir. Kendi sitenizin de bir beslemesi vardır: WordPress, yayınladığınız yazıları otomatik olarak /feed/ adresinde RSS formatında sunar. Yani "RSS haber yayınla" dendiğinde iki şey kastedilebilir: başka kaynaktan çektiğiniz haberi sitenizde yayınlamak veya kendi haberlerinizi RSS ile dışarıya sunmak.
RSS ile haber çekme adımları
1. Kaynağı ve izni netleştirin
Bir sitenin RSS beslemesinin herkese açık olması, o içeriği kendi sitenizde yeniden yayınlama izniniz olduğu anlamına gelmez. Besleme genellikle okuyucuların haberi takip etmesi için sunulur. İçeriği sitenizde yayınlayacaksanız kaynağın yazılı iznine veya bir abonelik sözleşmesine ihtiyacınız var. Haber ajansı aboneliği tam olarak bu izni sağlar: Yazar Haber Ajansı aboneleri, abonelik kapsamındaki haberleri sitelerinde yayınlama hakkına sahiptir.
2. Besleme adresini alın
YHA aboneleri besleme adresini YHA Abone'nin Çıkışlar ekranında RSS türünde bir çıkış açarak alır. Adres https://rss.yha.com.tr/b/<erişim kodu>/<etiket>.xml biçimindedir; hangi paket ve kategorilerin beslemeye gireceğini çıkış profilinde seçersiniz. Besleme anahtarsızdır: kimlik doğrulama, adresteki aboneye özel erişim koduyla yapılır. Bu yüzden adresi kimseyle paylaşmayın; sızarsa erişim kodunu yenileyin, eski adres hemen geçersiz olur. Beslemede description alanı spotu, content:encoded alanı tam metni taşır; son 50 öğe, en çok 48 saat geriye kadar listelenir ve öğelerde link yoktur.
3. Yöntemi seçin
- Eklentiyle: YHA WordPress eklentisini kurun, YHA Abone'nin verdiği kurulum kodunu yapıştırın, kategorileri eşleyin.
- Genel RSS içe aktarma eklentisiyle: WordPress eklenti dizininde RSS'ten yazı oluşturan çok sayıda eklenti vardır. Seçerken son güncellenme tarihine, aktif kurulum sayısına ve mükerrer kontrolü yapıp yapmadığına bakın.
- Kendi kodunuzla: Aşağıdaki örnek, WordPress çekirdek fonksiyonlarıyla basit bir haber çekici kurar.
4. Test edin ve taslakla başlayın
İlk aktarımları mutlaka taslak olarak yapın. Başlıkların, Türkçe karakterlerin, tarihlerin ve görsellerin doğru geldiğini kontrol ettikten sonra yayın akışını açın.
Örnek kod: fetch_feed ve wp_insert_post ile haber çekme
WordPress, RSS ve Atom beslemelerini okumak için fetch_feed() fonksiyonunu sunar; bu fonksiyon beslemeyi önbelleğe de alır. Yazı oluşturmak için wp_insert_post() kullanılır. Aşağıdaki kod küçük bir eklenti olarak wp-content/plugins/haber-cekici/haber-cekici.php dosyasına konabilir:
<?php
/**
* Plugin Name: Basit Haber Çekici
* Description: RSS beslemesindeki haberleri taslak yazı olarak ekler.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
const HC_FEED_URL = 'https://ornek-besleme-adresi/rss'; // Kendi besleme adresiniz
const HC_CATEGORY = 5; // Hedef kategori ID
const HC_META_GUID = '_hc_kaynak_guid';
function hc_haberleri_cek() {
include_once ABSPATH . WPINC . '/feed.php';
$feed = fetch_feed( HC_FEED_URL );
if ( is_wp_error( $feed ) ) {
error_log( 'Haber çekici: ' . $feed->get_error_message() );
return;
}
$items = $feed->get_items( 0, $feed->get_item_quantity( 20 ) );
foreach ( $items as $item ) {
$guid = $item->get_id();
// Mükerrer kontrolü: bu kimlikle yazı daha önce eklendi mi?
$var_mi = get_posts( array(
'post_type' => 'post',
'post_status' => 'any',
'meta_key' => HC_META_GUID,
'meta_value' => $guid,
'fields' => 'ids',
'posts_per_page' => 1,
) );
if ( $var_mi ) {
continue;
}
$icerik = $item->get_content() ? $item->get_content() : $item->get_description();
$post_id = wp_insert_post( array(
'post_title' => wp_strip_all_tags( $item->get_title() ),
'post_content' => wp_kses_post( $icerik ),
'post_status' => 'draft',
'post_category' => array( HC_CATEGORY ),
'post_date_gmt' => $item->get_gmdate( 'Y-m-d H:i:s' ),
'meta_input' => array(
HC_META_GUID => $guid,
'_hc_kaynak_url' => esc_url_raw( $item->get_permalink() ),
),
), true );
if ( is_wp_error( $post_id ) ) {
error_log( 'Haber çekici: ' . $post_id->get_error_message() );
}
}
}
add_action( 'hc_haber_cek_olayi', 'hc_haberleri_cek' );
register_activation_hook( __FILE__, function () {
if ( ! wp_next_scheduled( 'hc_haber_cek_olayi' ) ) {
wp_schedule_event( time(), 'hourly', 'hc_haber_cek_olayi' );
}
} );
register_deactivation_hook( __FILE__, function () {
wp_clear_scheduled_hook( 'hc_haber_cek_olayi' );
} );
Kodla ilgili notlar:
- Taslak durumu: Yazılar
draftolarak eklenir; editör kontrol etmeden yayına girmez. - Güvenlik: Başlık
wp_strip_all_tags(), içerikwp_kses_post()ile temizlenir. Dış kaynaktan gelen HTML'e asla doğrudan güvenmeyin. - Zamanlama:
wp_schedule_event()görevi saatlik planlar. WP-Cron yalnızca ziyaret geldiğinde çalıştığı için düzenli çekme isteyen siteler sunucu cron'u kullanmalıdır; ayrıntılar YHA WordPress eklentisi belgesinin zamanlama bölümünde. - Görseller: Bu örnek görsel indirmez. Görselleri ortam kütüphanesine almak için
media_sideload_image()fonksiyonu kullanılabilir; ancak görsel kullanım haklarını önce netleştirin. - Ölçek: Büyük hacimli akışlarda meta sorgusu yavaşlayabilir. Bu durumda API ile "son çekimden sonraki haberler" gibi filtreli istekler daha verimlidir.
Ne zaman RSS yerine API kullanmalı?
RSS basit ve evrenseldir, ama her ihtiyaca yetmez. Aşağıdaki durumlardan biri sizin için geçerliyse API ile çalışmak daha doğru olur:
- Tam ve yapılandırılmış veri gerekiyorsa: API genellikle başlık, spot, gövde, yazar, konum, kategori ve görsel bilgilerini ayrı alanlar halinde verir. RSS'te bu bilgiler tek bir açıklama alanına sıkışabilir.
- Filtreleme istiyorsanız: "Yalnızca ekonomi ve İzmir haberleri" ya da "son çekimden sonra yayınlananlar" gibi sorguları API ile sunucu tarafında yaparsınız; gereksiz veri indirmezsiniz.
- Güncellemeleri izlemek istiyorsanız: API, bir haberin düzeltildiğini veya geri çekildiğini belirten alanlar sunabilir. Ajansın geri çektiği bir haberi sitenizden de hızla kaldırabilmek, yayın sorumluluğu açısından önemlidir.
- Anlık bildirim istiyorsanız: Belirli aralıklarla sorgulamak yerine, yeni haber yayınlandığında webhook ile haberdar olup ardından API'den haberi çekebilirsiniz.
Yazar Haber Ajansı API'si JSON formatında veri döner; kimlik doğrulama, uç noktalar ve istek sınırları YHA API belgelerinde anlatılır. API'nin akışında düzeltme ve iptal ayrı olaylar olarak gelir: düzeltilen haberin sürüm numarası artar, iptal edilen haberin metni boş gelir ve yayından kaldırılması beklenir.
Sık karşılaşılan sorunlar
| Sorun | Olası neden | Çözüm |
|---|---|---|
fetch_feed hata dönüyor |
Besleme adresi yanlış, sunucu dış isteği engelliyor veya XML bozuk | Adresi tarayıcıda açın, hosting firmasından dışa giden HTTPS iznini doğrulayın |
| Yeni haberler gelmiyor | Besleme önbellekte, WP-Cron çalışmıyor | Önbellek süresinin dolmasını bekleyin, sunucu cron'u kurun |
| Türkçe karakterler bozuk | Besleme ile veritabanı kodlaması uyumsuz | Beslemenin UTF-8 olduğunu, veritabanının utf8mb4 olduğunu kontrol edin |
| Tarihler yanlış | Saat dilimi farkı | WordPress saat dilimini İstanbul yapın, GMT tarihini kaydedin |
| HTML etiketleri kayboluyor | wp_kses_post izin verilmeyen etiketleri temizliyor |
Bu bir güvenlik önlemidir; gerekli etiketleri kontrollü biçimde izinli listeye ekleyin |
Kendi haberlerinizi RSS ile yayınlamak
"RSS haber yayınla" aramasının diğer anlamı, kendi sitenizin haberlerini besleme olarak dışarıya sunmaktır. WordPress bunu varsayılan olarak yapar; birkaç ayarla beslemenizi daha kullanışlı hale getirebilirsiniz:
- Ayarlar › Okuma ekranında beslemede gösterilecek yazı sayısını ve beslemenin tam metin mi özet mi olacağını seçin. Haber sitelerinde özet seçeneği, içeriğinizin izinsiz kopyalanmasını zorlaştırır ve okuru sitenize yönlendirir.
- Kategori beslemelerini okurlarınıza ve haber toplayıcılara ayrı ayrı sunun.
- Beslemenizin geçerli olduğunu bir besleme doğrulayıcıyla düzenli kontrol edin.
Mükerrer haber kontrolü
Haber çekme sistemlerinin en sık sorunu aynı haberin iki kez eklenmesidir. Önlemek için:
- Benzersiz kimlik saklayın: Beslemedeki
guidveya API'deki haber kimliğini yazının meta alanına kaydedin, her çekimde kontrol edin. - URL'ye güvenmeyin: Kaynak URL'ler sonradan değişebilir; kimlik alanı daha güvenilirdir.
- Güncellemeleri ayrı ele alın: Kaynakta düzeltilen bir haber, yeni haber gibi eklenmemeli; mevcut yazı güncellenmeli veya editöre bildirilmeli.
- Tek çekici çalıştırın: Aynı kaynağı iki farklı eklentiyle çekmek mükerrer içeriğin en yaygın nedenidir.
Telif ve izin
- Haberi yayınlama hakkınız yoksa çekmeyin. Başka bir haber sitesinin içeriğini izinsiz kopyalamak telif ihlalidir; ayrıca Google'ın spam politikaları başka sitelerden kazınan içeriği değer katmadan yayınlamayı açıkça kötüye kullanım örneği olarak sayar.
- Abonelikle aldığınız haberlerde sözleşmenizdeki kaynak gösterme kurallarına uyun. Yazar Haber Ajansı haberlerinde kaynak "Yazar Haber Ajansı" ya da kısaca "YHA" olarak belirtilir; YHA WordPress eklentisi kaynak notunu her yazının sonuna kendisi ekler. Embargolu habere saatinden önce yer vermeyin; ajansın iptal ettiği içeriği yayınınızdan kaldırın.
- Fotoğraflar metinden ayrı haklara tabi olabilir. Görsellerin aboneliğinize dahil olup olmadığını kontrol edin.
Yayınlamadan önce editoryal kontrol
Ajans haberi pek çok sitede aynı anda yayınlanır. Arama sonuçlarında ve okurun gözünde fark yaratmanın yolu, habere kendi katkınızı eklemektir:
- [ ] Başlık okurunuza göre yeniden yazıldı, tık tuzağı değil
- [ ] Giriş paragrafı yerel veya sektörel bağlamla güçlendirildi
- [ ] Önceki haberlerinize ve kategori sayfasına bağlantı eklendi
- [ ] Kaynak satırı görünür: "Kaynak: Yazar Haber Ajansı (YHA)"
- [ ] Görsel doğru, alt metni açıklayıcı
- [ ] Yazar/editör adı ve tarih sayfada görünüyor
- [ ] Kategori ve etiketler doğru
Hiçbir katkı eklenmeden yüzlerce haberin otomatik yayınlanması, Google'ın tanımladığı ölçekli içerik kötüye kullanımı riskini artırır. Son dakika gibi hızın kritik olduğu durumlarda otomatik yayın yapılabilir; ancak sitenin genel içeriğinin editör dokunuşu taşıması gerekir.
Hangi site için hangi yöntem?
Üç örnek senaryo, kararı kolaylaştırır:
Tek kişilik yerel haber sitesi: Teknik bilgisi sınırlı, zamanı az olan bir yayıncı için en doğru seçim hazır eklentidir. YHA WordPress eklentisi kurulur, yalnızca gündem ve ekonomi kategorileri eşlenir, haberler taslak olarak düşer. Yayıncı sabah ve akşam taslakları gözden geçirip yerel bağlam ekleyerek yayınlar.
Editör ekibi olan bölgesel gazete sitesi: Burada hız ve kontrol birlikte önemlidir. Son dakika kategorisi otomatik yayında, diğer kategoriler taslakta tutulur. Sunucu cron'u ile çekme aralığı kısaltılır, editörler gün boyunca taslak kuyruğunu yönetir.
Kendi yazılımını geliştiren dijital yayın grubu: Birden fazla site ve mobil uygulama besleniyorsa API ve webhook birlikte kullanılır. Haber bir kez merkezi sisteme alınır, oradan tüm platformlara dağıtılır. WordPress bu yapıda yalnızca yayın katmanlarından biridir.
Sıkça Sorulan Sorular
RSS ile tam haber metni çekilebilir mi?
Bu, beslemeyi yayınlayan kaynağa bağlıdır. Birçok besleme yalnızca özet verir. Yazar Haber Ajansı beslemesinde tam metin content:encoded alanında gelir (abone isterse çıkış profilinden kapatabilir); API de abonelik kapsamındaki haberin tam metnini sağlar.
Herkese açık RSS'ten haber çekip yayınlamak yasal mı?
Beslemenin açık olması yeniden yayın izni vermez. Kaynağın açık izni veya bir abonelik sözleşmesi olmadan içeriği sitenizde yayınlamayın.
Kendi sitemin RSS haber feed'ini nasıl yayınlarım?
WordPress bunu otomatik yapar: Site adresinizin sonuna /feed/ eklediğinizde yazılarınızın beslemesine ulaşırsınız. Kategori beslemeleri için kategori adresinin sonuna /feed/ ekleyin.
Kaç dakikada bir haber çekmeliyim?
Kaynağın güncellenme sıklığına göre karar verin. Çok sık istek göndermek hem sizin sunucunuzu hem kaynağı yorar. Haber ajansları genellikle istek sınırları belirler. YHA, RSS beslemesinin dakikada birden sık okunmamasını ister; API'de ise yeni içerik yokken akışın en erken 10 saniyede bir sorulmasını öngörür. Ayrıntılar geliştirici belgelerindeki sınırlar sayfasındadır.
Eklenti mi, kendi kodum mu?
Teknik ekibiniz yoksa eklenti; özel alanlar, özel iş akışları veya başka sistemlerle entegrasyon gerekiyorsa API ile kendi kodunuz daha uygundur. Kendi kodunuzu yazacaksanız bakım sorumluluğunun da sizde olacağını, WordPress güncellemelerinden sonra kodu test etmeniz gerektiğini unutmayın.
