WordPress yazı girişi ile devamını bölmek

En çok merak edilen konulardan biri, WordPress yazılarındaki giriş metni ile sonrasındaki devam metinlerinin bölünerek, 2 farklı parça halinde görüntülenmesidir. Böylece giriş ile devamı arasında birçok kod çalıştırabilir ya da reklam v.b. ekleyebilirsiniz.

WordPress yazı girişi ile devamını bölmek

Şu anki ve bir önceki temamda bunu kullandım. Büyük ihtimalle bir sonraki temamda da kullanıyor olacağım. İşte çözüm yolu.

<!–more–> etiketinin önemi

Yazıyı biraz yazdınız. Sonrasına <!–more–> etiketi eklerseniz, sonrasındaki metinler ana sayfada listelenmez. Yani yazının devamı olarak verilmek istenen, <!–more–> etiketinden sonrasıdır. Listeleme sayfalarında bu etiketten önce yer alan metin görüntülenir. Yazı şablonu olan single.php dosyasında ise tüm metin görüntülenir. Asıl problem single.php içerisinde yazının girişi ve devamını ayrı ayrı görüntülemektir. Bunun olabilmesi için tüm yazılarınızda <!–more–> etiketini kullanmış olmalısınız. Böylece az sonra paylaşacağım fonksiyon yazının girişini ve devamını ayırt edebilecektir.

Tema fonksiyonları için “functions.php” dosyası

WordPress temasına ait tüm fonksiyonlar, kendisinin klasörü içerisinde yer alan functions.php adlı dosya içerisinde yer alır. Bu ileri düzey tema oluşturmanın başında gelir ve her temada yer almaz. Eğer tema klasörünüz içerisinde hali hazırda bulunan bir functions.php dosyası yer alıyorsa, onu kullanacağız. Eğer yoksa functions.php adında boş bir dosya oluşturun. İçerisini yazının devamında dolduracağız.

İşlemi yapan fonksiyonumuz

Bu fonksiyonu bir önceki temam için ben yazmıştım. Aslında fazla uğraşmadım. WordPress’in sistem dosyalarını inceledim ve gereksiz satırları çıkarıp, isteğimi gerçekleştirecek şekilde yeniledim.

“functions.php” dosyanız varsa

Eğer temanız klasörü içerisinde zaten “functions.php” dosyası varsa, bu dosyayı açın. ?> satırından önce alttaki kodları ekleyin. Eğer o satır öncesi boş değilse, satır atlatarak boş bir satır oluşturun.

function yazi_giris() {
global $id, $post, $more, $single, $withcomments, $page, $pages, $multipage, $numpages;
global $preview;
global $pagenow;

if ( $page > count($pages) )
$page = count($pages);

$content = $pages[$page-1];
$more_baslangic = strpos($content,'