WordPress’te Özel RSS Beslemeleri Nasıl Oluşturulur

İnternet, günlük olarak güncellenen pek çok harika içeriğe sahip olduğundan, en son haberleri ve makaleleri takip etmek zor olabilir. Bazı insanlar güncel kalmak için sosyal medya hesaplarını kullanmayı tercih ederken, diğerleri de aynı şeyi yapmak için favori web sitelerinin RSS beslemelerini takip etmeyi tercih edebilir. Bu daha eski bir özellik olmasına rağmen, bugüne kadar popülerliğini koruyan bir özelliktir. Öyle ki, bazı WordPress kullanıcıları, web sitelerine daha fazla okuyucu çekmek için kullandıkları özel gönderi içeriğini görüntüleyen özel yayınlar oluşturuyor.

Bu yazıda, WordPress’in yerleşik bir özellik olarak varsayılan bir RSS beslemesine sahip olduğu gerçeğini göz önünde bulundurarak WordPress özel RSS beslemesini nasıl oluşturabileceğinizi göstereceğiz. Bu konsepte aşina olmayanlar için RSS’nin ne olduğunu da açıklayacağız. Başlayalım.

RSS nedir ve WordPress’te nasıl kullanılır?

RSS veya Really Simple Syndication, kullanıcıların veya uygulamaların yapılandırılmış bir XML belgesi kullanarak seçtikleri web sitelerini takip etmelerine olanak tanıyan bir web beslemesidir. Beslemenin amacı, yapılandırılmış içeriği web sendikasyonu olarak adlandırılan süreç aracılığıyla bir web sitesinden diğerine iletmektir. Açıklığa kavuşturalım.

Bahsettiğimiz gibi RSS, bir web sitesi yazarının oluşturması gereken yapılandırılmış bir XML dosyasına dayanır. Bu XML dosyası, o web sitesinde yayınlanan en son gönderiler veya makaleler için meta verilerin tam veya özet sürümünü içerir. Buna başlık, içerik, alıntı, yayın tarihi, kategoriler, yazarın adı vb. dahildir. Bir web yöneticisi, bu XML dosyasını kullanarak web sitesinde diğer kullanıcıların abone olabileceği ve yeni yayınlanan gönderiler hakkında güncellemeler alabileceği bir RSS beslemesi oluşturur. Kullanıcıların, RSS beslemesi okuyucuları veya haber toplayıcıları adı verilen özel bir yazılım kullanması gerekir. Bu yazılım, kullanıcıların abone oldukları RSS beslemelerinden gelen verilerin insanlar tarafından okunabilecek şekilde görüntülenmesine yardımcı olacaktır.

Neyse ki çoğu WordPress kullanıcısı için, bu içerik yönetim sistemi, bazı çekirdek dosyaları kullanılarak oluşturulan varsayılan bir RSS beslemesine sahiptir. Bu varsayılan beslemeye, web sitenizdeki bir bağlantıya /feed ekleyerek erişilir (örn. https://qodeinteractive.com/magazine/feed). Ayrıca WordPress, sendikasyon sonrası için kullanılabilecek varsayılan bir RSS widget’ına sahiptir. Bu yüzden WordPress kullanıcıları, varsayılan WordPress RSS altyapısına güvenmeyi veya eklentileri kullanarak veya kod kullanarak özel RSS beslemeleri oluşturarak daha da geliştirmeyi seçebilirler.

WordPress’te özel RSS beslemeleri nasıl oluşturulur?

Eklentileri kullanarak veya özel kod oluşturarak WordPress’e özel RSS beslemeleri yapabilirsiniz. Bu yazıda, özel kod yöntemini kullanarak bir RSS beslemesi oluşturmaya odaklanacağız. Web sitenizde özel kod kullanmaktan rahatsızsanız, bunun yerine en iyi RSS eklentileri hakkındaki makalemize göz atabilirsiniz. Bu eklentilerde bulunan özelliklerden bazıları, diğer web sitelerinden içerik paylaşmanın yanı sıra özel yayınların oluşturulmasına izin verir. Bunu söyledikten sonra devam edelim.

Özel kod kullanma

Yeni bir özellik ekleme aracı olarak özel kod kullanmak veya bu durumda özel bir RSS beslemesi, bir WordPress eklentisi kullanmaya göre avantajlara sahiptir. Bunlardan en önemlisi, beslemenizi tam olarak ihtiyaçlarınıza göre değiştirmenize izin vermesidir. Fakat çok fazla kodlama bilgisi gerektirdiğinden, çoğunlukla daha ileri düzey WordPress kullanıcıları için ayrılan bir yöntemdir.

Bu yöntemi kullanmayı tercih ederseniz, herhangi bir kod eklemeden önce önlem olarak web sitenizin yedeğini almanızı öneririz. Bunu yaptığınızda, özel RSS beslemeniz için kod oluşturmaya hazırsınız.

Özel olarak kodlanmış bir WordPress RSS beslemesi oluşturmak için uygulayabileceğiniz birkaç yaklaşım vardır ve bunların hepsinin zorluğu farklıdır. Bu makale için vitrin görevi görecek bir örnek oluşturduk. Gerekirse tamamen kullanabilir veya ek olarak değiştirebilirsiniz. Kodu aşağıda bulabilirsiniz ve biz de ona bir açıklama ile eşlik edeceğiz.

function qode_custom_RSS_feed(){

add_feed('qode-feed', 'qode_custom_RSS_feed_function');
}
add_action('init', 'qode_custom_RSS_feed');
function qode_custom_RSS_feed_function(){
$postCount = get_option( 'posts_per_rss' );
$posts = query_posts( 'showposts=" . $postCount );
header( "Content-Type: ' . feed_content_type( 'rss-http' ) . '; charset=" . get_option( "blog_charset' ), true );
echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>';
do_action( 'rss_tag_pre', 'rss2' );
?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
<?php do_action( 'rss2_ns' ); ?>
>
<channel>
<title><?php bloginfo_rss( 'name' ); ?> feed</title>
<atom:link href="https://qodeinteractive.com/magazine/wordpress-custom-rss-feed/<?php self_link(); ?>" rel="self" type="application/rss+xml"/>
<link><?php bloginfo_rss( 'url' ) ?></link>
<description><?php bloginfo_rss( 'description' ) ?></description>
<lastBuildDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_lastpostmodified( 'GMT' ), false ); ?></lastBuildDate>
<language><?php echo bloginfo_rss( 'language' ); ?></language>
<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?>
</sy:updatePeriod>
<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?>
</sy:updateFrequency>

<?php do_action( 'rss2_head' ); ?>

<?php while ( have_posts() ) :
the_post(); ?>

<item>
<title><?php the_title_rss(); ?></title>
<link><?php the_permalink_rss(); ?></link>
<pubDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ); ?></pubDate>
<dc:creator><![CDATA[<?php the_author(); ?>]]></dc:creator>
<?php the_category_rss( 'rss2' ); ?>
<guid isPermaLink="false"><?php the_guid(); ?></guid>

<?php if ( get_option( 'rss_use_excerpt' ) ) : ?>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<?php else : ?>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<?php $content = get_the_content_feed( 'rss2' ); ?>
<?php if ( strlen( $content ) > 0 ) : ?>
<content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>
<?php else : ?>
<content:encoded><![CDATA[<?php the_excerpt_rss(); ?>]]></content:encoded>
<?php endif; ?>
<?php endif; ?>

<?php rss_enclosure(); ?>

<?php do_action( 'rss2_item' ); ?>
</item>
<?php endwhile; ?>
</channel>
</rss>
<?php }

Şimdi bu kodun ne işe yaradığını inceleyelim.

Kod, sırasıyla qode_custom_RSS_feed() ve qode_custom_RSS_feed_function() adlı iki işlevden oluşur. İlk fonksiyonda add_feed() fonksiyonunu ve aşağıda tanımlayacağımız qode_custom_RSS_feed_function() isimli uygun bir callback fonksiyonunu kullanarak qode-feed isimli yeni bir feed ekliyoruz. Her şeyin düzgün çalışması için, uygun bir init eylem kancasının yanında add_action() işlevini kullanarak qode_custom_RSS_feed() işlevini tetikledik.

function qode_custom_RSS_feed() {

add_feed( 'qode-feed', 'qode_custom_RSS_feed_function' );
}
add_action( 'init', 'qode_custom_RSS_feed' );

Teknik olarak konuşursak, sadece ilk birkaç kod satırını yazarak, zaten qode-feed adlı özel bir besleme oluşturduk. Web sitenizden erişmek için şu URL’ye erişmeniz gerekir – web sitenizin-url’si/feed/özel-feed’in adı. Bizim durumumuzda, özel beslemenin adı kısmı qode-feed ile değiştirilecektir. Kodu kendiniz kullanırken, özel beslemenize erişmek için kullanmanız gerekeceğinden, qode-feed kısmını daha uygun bulduğunuz bir adla değiştirdiğinizden emin olun ve ezberleyin.

Fakat tamamen özel bir besleme oluşturmak için geri arama işlevini de yazmamız gerekir. Bizim durumumuzda buna qode_custom_RSS_feed_function() adı verilir ve akışta görüntülemek istediğimiz herhangi bir içerikten sorumludur. Kodun geri kalan kısmı o içerikle ilgilidir. Bu kodu ayrı bir şablon dosyasına yerleştirmeyi seçebilir ve get_template_part() işlevini kullanarak bu şablon dosyasını çağırabilirsiniz, fakat biz kodu tek bir yerde tutmayı seçtik. Şimdi qode_custom_RSS_feed_function() isimli fonksiyonda bulunan kodu açıklayalım.

Bu kod iki ek parçaya bölünebilir. İlki, genel yayın bilgisi ile ilgilidir ve ikincisi, beslemede görüntülenen gönderilerin içeriği ile ilgilidir.

Kodun ilk bölümünü incelerseniz, feed’de görüntülenen gönderi miktarının, değeri $postCount değişkeninde depolanan ‘posts_per_rss’ seçeneğiyle sınırlı olduğunu fark edebilirsiniz. Daha fazla açıklığa kavuşturmak için, ‘posts_per_rss’ seçeneği, yönetici kontrol panelinizin Ayarlar > Okuma kısmında bulunan Sendikasyon beslemelerinin en son seçeneği göstermesidir. Örneğin ‘posts_per_rss’ seçeneğinin değeri olarak 10 koyarsanız, özel feed’iniz, eğer varsa, web sitenizde en son yayınlanan 10 gönderiyle ilgili bilgileri gösterir.

Bundan sonra, kodun Content-Type başlığı, XML bildirimi ve XML ad alanlarıyla ilgili kısmını göreceksiniz. Bunların ne olduğunu hızlıca açıklayalım. Fakat bu kısım oldukça ileri düzeyde olduğundan, herhangi bir noktaya aşina değilseniz, kendi başınıza daha fazla araştırma yapmanızı öneririz.

Content-Type başlığı, istemciye döndürülen veya sunucuya gönderilen bir kaynağın ortam türünü belirtmek için kullanılan bir koddur. Kullandığı üç olası yönerge vardır: çok parçalı varlıklar söz konusu olduğunda ortam türü, karakter kümesi ve sınır.

Bir XML beyanı bir şekilde kendi kendini açıklayıcıdır; bir belgeyi XML belgesi olarak tanımlayan bir işleme talimatıdır. Şu üç özniteliğe sahip olabilir: sürüm, kodlama ve bağımsız.

XML ad alanları, XML belgesinde kullanılan öğeleri ve öznitelikleri benzersiz bir şekilde tanımlamak için kullanılır. Bu durum aynı adı paylaşan ancak aynı XML ad alanının parçası olmayan birden çok öğe veya öznitelik varsa, tam olarak hangi öğenin veya özniteliğin kullanıldığına dair şüpheleri ortadan kaldırmak için yapılır.

Sırada beslemenin kendisi ile ilgili en önemli bilgiler var; adı, atom besleme bağlantısı, web sitesi bağlantısı, açıklama, en son ne zaman güncellendiği, beslemenin dili ve beslemenin ne sıklıkta güncellendiği. Aşağıdakileri kullandık—ad, site başlığını takip eden feed (bizim durumumuzda, lekker feed’idir), atom besleme bağlantısı olarak kendi kendine bağlantı (yani oluşturduğumuz beslemenin bağlantısı – web sitemiz-). name/feed/qode-feed) ve bağlantı olarak site adresi. Ayrıca sitenin kısa açıklamasını besleme açıklaması olarak ayarladık ve beslemenin en son güncellendiği zamanı mysql2date() ve get_lastpostmodified() işlevini D, d MYH:i:s +0000 biçiminde (örn. Çar, 20) kullanarak ayarladık. Ocak 2021 15:41:52 +0000), GMT saat dilimini kullanarak. Ayrıca RSS beslemesinin dilini site dilimizle aynı olacak şekilde ayarladık ve özel beslememizi saatte bir güncellenecek şekilde ayarladık.

$postCount = get_option( 'posts_per_rss' );
$posts = query_posts( 'showposts=" . $postCount );
header( "Content-Type: ' . feed_content_type( 'rss-http' ) . '; charset=" . get_option( "blog_charset' ), true );
echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>';
do_action( 'rss_tag_pre', 'rss2' );
?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
<?php do_action( 'rss2_ns' ); ?>
>
<channel>
<title><?php bloginfo_rss( 'name' ); ?> feed</title>
<atom:link href="https://qodeinteractive.com/magazine/wordpress-custom-rss-feed/<?php self_link(); ?>" rel="self" type="application/rss+xml"/>
<link><?php bloginfo_rss( 'url' ) ?></link>
<description><?php bloginfo_rss( 'description' ) ?></description>
<lastBuildDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_lastpostmodified( 'GMT' ), false ); ?></lastBuildDate>
<language><?php echo bloginfo_rss( 'language' );...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Birlikte Büyüyen Bir İş Kurma Fırsatı!

İş birliği yaparak, işinizi yalnızca bir adım öteye taşıyoruz. Daha detaylı bilgi isterseniz mail adresinizi bize iletebilirsiniz.