WordPress Eklentisiz Sayfalama Yapımı

WordPress‘de eklentisiz sayfalama yapmak bir kaç adımdan oluşmaktadır. Sırasıyla bu adımların üzerinden gideceğiz.

Css Kodları

style.css dosyasına aşağıdaki css kodlarını ekliyoruz. Kendinize göre özelleştirebilirsiniz.

/* Sayfalama */
.wp_paging { 
 margin: 0 0 20px; 
 padding: 0; 
}
.wp_paging ul { 
 margin: 0; 
 padding: 0; 
 list-style: none; 
}
.wp_paging ul li { 
 margin: 0; 
 padding: 0; 
 display: inline; 
}
.wp_paging ul li a { 
 float: left; 
 display: block; 
 color: #666; 
 text-decoration: none; 
 margin-right: 5px; 
 padding: 5px 10px; 
 background-color: #FFFFFF; 
 border: 1px solid #999; 
}
.wp_paging ul li a:hover { 
 color: #090; 
}
/* Sayfalama Son */

Fonksiyon Oluşturma

functions.php dosyasına aşağıdaki fonksiyonu ekliyoruz. Fonksiyonun içindeki html kodlarını özelleştirebilirsiniz.

/* sayfalama baş */
function sayfalama($pages = '', $range = 2)
{
 $showitems = ($range * 2)+1; 
 global $paged;
 if(empty($paged)) $paged = 1;
 if($pages == '')
 {
 global $wp_query;
 $pages = $wp_query->max_num_pages;
 if(!$pages)
 {
 $pages = 1;
 }
 } 
 if(1 != $pages)
 {
 echo "<div class='wp_paging'><ul>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<li><a href='".get_pagenum_link(1)."'>İlk</a></li>";
 if($paged > 1 && $showitems < $pages) echo "<li><a href='".get_pagenum_link($paged - 1)."'>Geri</a></li>";
 for ($i=1; $i <= $pages; $i++)
 {
 if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
 {
 echo ($paged == $i)? "<li><a href='#'>".$i."</a></li>":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>";
 }
 }
 if ($paged < $pages && $showitems < $pages) echo "<li><a href='".get_pagenum_link($paged + 1)."'>Sonraki</a></li>";
 if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<li><a href='".get_pagenum_link($pages)."'>Son</a></li>";
 echo "</ul><div class='cleaner'></div></div>";
 }
}
/* sayfalama son */

Sayfalama Ekleme

Tema içerisinde sayfalamayı istediğimiz yere eklemek için aşağıdaki kodu kullanıyoruz.

<?php sayfalama(); ?>

Linux Sunucuya Git Sunucu Kurulumu

Git sunucusu kurmak oldukça yararlı ve kullanışlıdır. Vps, vds, dedicated sunucularınıza özel git sunucunuzu kurabilirsiniz. Linux sunucunuza git’i kurduğunuzu varsayıyorum.

Öncelikle root dizini altına bir git dizini oluşturmamız gerekiyor. Aşağıdaki kodda ben ornek isimli git sunucu oluşturacağım. Yani bu şekilde istediğiniz kadar git sunucusu kurabilirsiniz.

mkdir /git/ornek.git

Daha sonra ise terminalde /git/ornek.git dizinine gelip aşağıdaki kodu yazıyoruz.

git init --bare

Bu kadar. Git sunucumuzu oluşturduk. Eğer klonlamak isterseniz aşağıdaki kodu yazmalısınız.

git clone kullaniciadi@vpsipadresi:/git/ornek.git

Eğer bilgisayarınızda local projeniz var ve git sunucunuza dahil etmek istiyorsanız, terminalde projenizin dizini altına gelip aşağıdaki kodu yazın.

git remote add herhangibirisim kullaniciadi@vpsipadresi:/git/ornek.git
git push herhangibirisim -u master

Push komutu ile commitlerinizi ve dosyalarınızı gönderirken sunucunuzun kullanıcı şifresini soracaktır.

Eğer git sunucunuza commitlerinizi ve dosyalarınızı gönderirken, sunucunuz bu değişiklikleri ve dosyaları alıp başka bir dizinde oluşturmasını istiyorsanız, /git/ornek.git/hooks dizini altına, 777 iznine sahip , post-receive isimli bir dosya oluşturmalısınız. Bu ne işe yarar? Projenizi sunucunuzdan yayınladığınızı düşünün. Bilgisayarınızda projeyi geliştirdikten sonra git sunucunuza değişiklikleri göndermeniz yeterli olacaktır, yayındaki projeniz değişiklikleri otomatik olarak alacaktır.

Daha sonra bu dosyanın içini aşağıdaki şekilde düzenleyin. Dizin yerini istediğiniz gibi ayarlayabilirsiniz.

#!/bin/bash
GIT_WORK_TREE=/home/ornekproje/ git checkout -f master

Eğer composer, bower gibi şeyler kullanıyorsanız aşağıdaki gibi düzenleyerek onların da çalışmasını sağlayabilirsiniz.

#!/bin/bash
GIT_WORK_TREE=/home/ornekproje/ git checkout -f master
cd /home/ornekproje/
php composer.phar update
cd /home/ornekproje/
bower install

Ubuntu’ya Composer Kurulumu

Not: Bu yazı eski sürümler için geçerlidir. Artık sadece “sudo apt install composer” komutunu terminalden yazarak bile kurabilirsiniz.

Local Composer Kurulumu

Sadece tek bir projeniz için kurulum gerçekleştirmek istiyorsanız terminale aşağıdaki kodu yazın.

curl -sS https://getcomposer.org/installer | php

Çalıştırmak için ise aşağıdaki kodu kullanın.

php composer.phar

Global Composer Kurulumu

Eğer tüm bilgisayara kurarak istediğiniz zaman istediğiniz projede çalıştırmak istiyorsanız global kurulum yapmalısınız. Bunun içni terminale aşağıdaki kodu yazın.

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Çalıştırmak için terminalde composer kodunu kullanmanız yeterlidir.

Ubuntu’ya Node.js ve NPM Kurulumu

Ubuntu‘ya Node.js ve NPM kurulumu basit bir işlemdir. Öncelikle Node.js‘in paket arşivini (PPA) yüklemeliyiz. Ubuntu‘nun kendi paket arşivindeki eski bir versiyondur. Bunun için curl a ihtiyacımız var. Eğer yüklü değilse aşağıdaki kodu terminale yazın.

sudo apt-get update
sudo apt-get install curl

PPA‘yı eklemek için aşağıdaki kodu terminale yazın.

curl -sL https://deb.nodesource.com/setup | sudo bash -

PPA eklendikten sonra kuruluma başlayabiliriz.

sudo apt-get install nodejs
sudo apt-get install build-essential

Alternatif Yöntem

Eğer bu kurulumda sıkıntı yaşarsanız, NPM paket yöneticisinden global olarak yüklediğiniz programlar çalışmazsa veya aynı anda birden fazla versiyon kullanmak istiyorsanız benim uyguladığım diğer yöntemi deneyebilirsiniz.

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

Bu kadar. Bundan sonra nvm install “versiyon numarası” ile istediğiniz node.js versiyonunu kurabilir ve kullanabilirsiniz.

PHP ve Json

phpjsonPHP ve Json ikilisi arasındaki ilişkiyi ve Json’un PHP’de kullanımını anlatmak için öncelikle Json nedir onun üzerinde duralım.

Programlamada farklı platformlar arasında veri alışverişi ihtiyacı vardır. Mesela bir sosyal platformdan son paylaşımları çekip kendi projenizde kullanmak isteyebilirsiniz. Bu tür işlemler için platformlar arasında bir paylaşım olması lazımdır. Bu paylaşım için bazı teknolojiler geliştirilmiştir. Mesela bunlardan birisi XML teknolojisidir. Fakat XML, Javascript ile beraber iyi kullanılamamaktadır. İşte burada Json, Javascript ile uyumlu olduğundan çok tercih edilmektedir.

Json içerisindeki veriler her programlamada bulunan dizi ve obje şeklindedir.

Object

“{“ ile başlar ve “}” ile biter. İçerisine veriler “Anahtar” ve “Veri” şeklinde yazılır. Örnek;

{
 "name": "Erhan",
 "surname": "Kılıç"
}

Dizi

“[“ ile başlar ve “]” ile biter. İçerisindeki veriler sadece “Veri” şeklinde yazılır. Örnek;

[
 "Erhan", "Kılıç"
]

Json içerisinde ikisi bir arada istenildiği gibi kullanılabilir. Örnek;

{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}

Json’un tercih edilmesinin en önemli sebebi Javascript’deki obje ve dizi yapısının tamamen aynı olmasıdır. Örnek olarak Javascript‘te de yapmaya çabaladığımızda siz de farkedeceksiniz.

PHP’de Json Fonksiyonları

Php’de Json ile ilgili işlemler şu şekilde yapılabilir. Kendi sitemizde Javascript ya da jQuery, AngularJs gibi kütüphanelerinde kullanmak için, başka platformlarla veri paylaşımında bulunup api oluşturmak için verileri Json formatında ekrana yazdırabiliriz. Başka bir yerden Json ile çektiğimiz veriyi php uygulamamızda kullanmak için kullanabiliriz.

Dikkat etmemiz gereken şey şudur. Eğer aşağıdaki fonksiyonları kullanmazsak bir string değer gibi algılayacağından içerideki verilere erişmek hayli zahmetli olacaktır.

json_encode()

Bu fonksiyon istediğimiz veriyi Json olarak yazdırmamızı sağlar. Örnek Kullanım;

$dizi = array(
 "tip"=> "kitap",
 "tur"=> "roman",
 "urunler"=> array(
 array("ad"=> "Ihtiyar Kemanci", "yazar"=> "Nihat Genc"),
 array("ad"=> "Su Cilgin Turkler", "yazar"=> "Turgut Ozakman"),
 array("ad"=> "Kar", "yazar"=> "Orhan Pamuk")
 )
);
$json = json_encode($dizi);
echo $json;

json_decode()

Bu fonksiyon ise bir yerden çektiğimiz Json veriyi decode ederek php yazılımımız içerisinde kullanmamızı sağlar. İçerideki verilere ise objedeki bir veriye ulaşır gibi ulaşabiliriz. Aşağıdaki örnekte Json veriyi bir string veri olarak oluşturuyorum. Çünkü dışarıdan Json veri çektiğimizde string bir veri olarak gelecektir aynı şekilde. Örnek;

$json ='{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}';
$veri = json_decode($json);
echo $veri->tip;
echo $veri->tur;
foreach($veri->urunler as $urun){
 echo vardumb($urun);
 echo "<br/>";
}

Fonksiyon içerisinde ikinci bir parametre olarak true eklersek obje olarak değil direk dizi olarak kaydecektir ve erişimimiz de bu şekilde değişecektir. Örnek;

$json ='{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}';
$veri = json_decode($json, true);
echo $veri[tip];
echo $veri[tur];
foreach($veri[urunler] as $urun){
 echo vardumb($urun);
 echo "<br/>";
}

PHP Kullanarak CSV Dosyası Oluşturma

PHP‘de, CSV uzantılı dosya oluşturabilmek için tanımlanmış fonksiyonlar vardır. PhpExcel gibi kütüphaneler yerine bu fonksiyonları kullanmanın bir kaç avantajı vardır. Daha az kaynak tüketir ve dolasıyla daha hızlıdır.

Öncelikle CSV dosyamızı oluşturacak fonksiyonumuzu oluşturalım.

function array_to_csv_function($array, $filename = "export.csv", $delimiter=";") {
 // Bir temp dosyası açmak yerine bellek alanı kullanıyoruz. 
 $f = fopen('php://memory', 'w');
 // Verilerimizin olduğu diziyi döngüye sokuyoruz
 foreach ($array as $line) {
 // Dizimizin içindeki her dizi, CSV dosyamızda bir satır olmaktadır.
 fputcsv($f, $line, $delimiter);
 }
 // Dosya başlangıc işaretini sıfırlıyor
 fseek($f, 0);
 // Tarayıcıya bir csv dosyası olduğunu belirtiyor
 header('Content-Type: application/csv');
 // Tarayıcıya görüntülenmek için olmadığını, kaydedilmek için olduğunu belirtiyor. 
 header('Content-Disposition: attachment; filename="'.$filename.'";');
 // Üretilen CSV tarayıcıya iletiliyor.
 fpassthru($f);
}

Bu fonksiyonumuz ile içerisine bir dizi ve dosya ismi göndererek CSV dosyasını oluşturmasını ve tarayıcıya çıktı vermesini sağlıyoruz. Kod içerisinde her bir satırı yorumlar ile açıkladım. Bu fonksiyonda geçici bir temp dosyası kullanmak yerine bellek alanı kullanmasını sağladım. Eğer geçici bir temp dosyası kullanmasını isterseniz $f = fopen(‘php://memory’, ‘w’); yerine $f = fopen(‘php://output’, ‘w’); komutunu kullanın.

Daha sonra ise ister veritabanından çekerek ya da ister json verisi olarak çekerek her bir satır dizi olacak şekilde bir dizi oluşturuyoruz ve fonksiyonumuza gönderiyoruz. Bu kadar. Örnek olarak aşağıda kod yazım.

$basliklar = array("Ad", "Soyad");
$satir1 = array("Erhan", "Kılıç");
$satir2 = array("Onur", "Bakır");

$icerik = array($basliklar, $satir1, $satir2);
array_to_csv_function($icerik, "export.csv");
// Diğer bir şekilde kullanımı
array_to_csv_function(array($basliklar, $satir1, $satir2), "export.csv");