İçeriğe geç
Olcay Irmak
Yazılar
Web6 dk okuma

Joomla’dan WordPress’e Geçmek

Bu yazıda, 2007 yılında açtığım bir Joomla sitesini 2017 yılında nasıl WordPress’e dönüştürdüğümü; Joomla’dan WordPress’e geçmek için nelerin gerektiğini ve hangi ayarların yapılması gerektiğini adım adım anlatacağım. İngilizce karşılığı joomla to wordpress olan bu işlem için Türkçe kaynak oldukça sınırlı olduğundan kendi sitemi dönüştürmem uzun sürdü. Bu yazının, aynı işlemi yapmak isteyenler için hızlı bir referans olmasını amaçlıyorum. Diğer geçiş yazılarından farklı olarak, eski bağlantıların bozulmadan taşınmasını ve JComments bileşeni kullanıyorsanız yorumlarınızı kaybetmeden aktarmanızı da ele alacağım.

Karışıklık olmaması için eski siteyi joomlasitesi.com, yeni siteyi wordpresssitesi.com olarak adlandıracağım. Şimdi adım adım neler yaptığımıza geçelim.

WordPress Kurulumu

Mevcut joomlasitesi.com altında “wp” adında bir alt alan adı (subdomain) ve yeni bir MySQL veritabanı oluşturuyorum; buraya sıfırdan bir WordPress indirip kurulumu tamamlıyorum.

FG Joomla to WordPress Eklentisi

WordPress kurulumu bittikten sonra, aşağıdaki görselde görüldüğü gibi FG Joomla to WordPress eklentisini kuruyoruz. Bu eklentinin ücretli bir sürümü vardır; ücretsiz sürüm kısıtlı özelliklerle sunulur. Ücretli sürüm şu bileşenlerin de WordPress’e aktarılmasını sağlar: K2, EasyBlog, Flexicontent, Zoo, Kunena forum, sh404sef, JoomSEF, OpenSEF, WP-PostViews (keep Joomla hits), JComments, JomComment, Joomlatags, Attachments, Rokbox, JoomGallery, Phocagallery, Joom!Fish, ranslations to WPML, JEvents events, Contact Manager, Docman, Virtuemart, JReviews, Mosets Tree, User Groups, WPML, Simple Image Gallery & Simple Image Gallery Pro, RSGallery, Community Builder.

Yukarıda koyu ile işaretlediğim JComments bileşenini ben de kullandığım için, JComments yorumlarının WordPress yorumlarına dönüştürülmesini yazının devamında ayrıca anlatacağım.

Joomla'dan WordPress'e Geçmek

Eklentinin indirme bağlantısı: FG Joomla to WordPress

Kurulum tamamlandıktan sonra “import” bağlantısına tıklıyoruz.

Joomla'dan WordPress'e Geçmek

WordPress’te önceden var olan kategori, sayfa ve yazıların silinmesi için aşağıdaki 2 numaralı butona tıkladıktan sonra 3 numaralı alandan içeriği boşaltıyoruz. Bu işlemin amacı, kuruluma temiz bir başlangıçla devam etmektir.

Joomla'dan WordPress'e Geçmek

Ayarları aşağıdaki gibi yaptıktan sonra “connection succesfull” mesajını almanız gerekir. 4 numaralı alan, siteniz yayındaysa medya ve görselleri almak için gereklidir. 5 ve 6 numaralı alanlar genellikle varsayılan ayarlardır ve çoğu site için geçerlidir; sizin yapılandırmanız farklıysa değiştirebilirsiniz.

Joomla'dan WordPress'e Geçmek

Hemen altında birçok ince ayarın yer aldığı bölümü göreceksiniz. 12 numaralı alanda medya ile ilgili kısmı “skip media” seçeneğiyle geçiyorum. 13 numaralı alan meta bilgilerinin ve anahtar kelimelerin taşınıp taşınmayacağını sorar; bu kısmı işaretleyip 14 numaralı butondan kaydediyor ve 15 numaralı butonla aktarımı başlatıyoruz.

İşlem tamamlandıktan sonra kontrol ettiğinizde yazıların, etiketlerin ve kategorilerin taşındığını göreceksiniz.

Jcomments to WordPress Comment

Joomla’dan WordPress’e geçmek yorumlarınızı kaybetmenizi gerektirmez. Önceki sitemde yorum bileşeni olarak JComments kullanıyordum; pratik ve kullanıcı dostu bu bileşeni WordPress tarafında özleyeceğim. İçindeki değerli yorumları kaybetmemek için aşağıdaki adımları uygulamanız yeterli.

Önce aşağıdaki kodu boş bir PHP dosyasına yapıştırın. Bunu daha önce yapmamış olanlar için: Not Defteri’nde yeni bir metin dosyası açın, kodu içine yapıştırın ve “Farklı Kaydet” diyerek comment.php adıyla kaydedin. Kaydettiğiniz bu dosyayı sitenizin ana (root) dizinine yükleyin.

<?php
$username = "buraya joomla db kullanıcı adı";
$password = "buraya joomla db kullanıcı şifresi";
$database = "buraya joomla db adı";
mysql_connect('localhost', $username, $password);
@mysql_select_db($database) or die( "Unable to select database");
@mysql_set_charset('utf8');
$query = "SELECT DISTINCT object_id FROM jos_jcomments";
echo $query; 
print "
";
$pids = mysql_query($query);
if (!$pids) {
	echo mysql_error();
}
$num = mysql_numrows($pids);
$i = 0;
while ($i < $num) {
	$pid = mysql_result($pids, $i, "object_id");
	$query = "SELECT created FROM  jos_content WHERE id = " . $pid;
	echo $query; 
	print "
	";
	$created = mysql_query($query);
	if (!$created) {
		echo mysql_error();
	}
	$ct = mysql_result($created, 0, "created");
	$query = "SELECT ID FROM  wp_posts WHERE  post_date =  '" . $ct . "' AND post_type =  'post'";
	echo $query; 
	print "
	";
	$wpids = mysql_query($query);
	if (!$wpids) {
		echo mysql_error();
	}
	$wpid = mysql_result($wpids, 0, "ID");
	$query = "SELECT * FROM jos_jcomments WHERE object_id = " . $pid;
	echo $query; 
	print "
	";
	$comments = mysql_query($query);
	$comments_count = mysql_numrows($comments);
	$j = 0;
	while ($j < $comments_count) {
		$author = mysql_result($comments, $j, "name");
		$email = mysql_result($comments, $j, "email");
		$url = mysql_result($comments, $j, "homepage");
		$ip = mysql_result($comments, $j, "ip");
		$cdate = mysql_result($comments, $j, "date");
		$content = mysql_result($comments, $j, "comment");
		$content = mysql_real_escape_string($content);
		
		$query = "INSERT INTO wp_comments (comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content) VALUES (" . $wpid . ", '" . $author . "', '" . $email . "', '" . $url . "', '" . $ip . "', '" . $cdate . "', '" . $date . "', '" . $content . "')";
		echo $query; 
		print "
		";
		mysql_query($query);
		$j++;
	}
	$query = "UPDATE wp_posts SET comment_count = " . $comments_count . " WHERE ID = " . $wpid;
	echo $query; 
	print "
	";
	mysql_query($query);
	$i++;
}
mysql_close();
?>

Bilindiği üzere Joomla tabloları jos_ ön ekiyle, WordPress tabloları ise wp_ ön ekiyle başlar. Hazırladığımız bu dosyayı çalıştırmadan önce Joomla veritabanına 3 adet tablo eklememiz gerekecek; çünkü yukarıdaki betik, Joomla içindeki JComments verilerini aynı veritabanı içindeki yeni tablolara taşımak isteyecek. Bu nedenle birkaç ek işlem yapacağız. Bu adımlar biraz karmaşık olduğundan tek tek yazacağım; sırayı karıştırmamaya dikkat edin.

1-WP database inden tablo çıkarılması

Joomla'dan WordPress'e Geçmek

Aşağıdaki görselde görüldüğü üzere wp_comments, wp_postmeta ve wp_posts tablolarını dışa aktarmamız gerekiyor. Sol taraftan bu tabloları işaretleyip alttaki açılır menüden “Seçilileri Dışa Aktar” seçeneğini kullanıyoruz.

2-Joomla DB ine Tablo Eklenmei

Ardından Joomla veritabanına tıklayıp üst menüden “İçe Aktar” bölümüne geliyoruz. Aşağıda görüldüğü gibi, az önce WordPress veritabanından dışa aktardığımız 3 tablo dosyasını “Dosya Seç” seçeneğiyle ekleyip “Git” diyoruz.

Joomla'dan WordPress'e Geçmek

3-Yorumların Dönüştürülmesi

Şimdi yukarıda oluşturduğumuz comment.php dosyasını çalıştırıyoruz. Bunun için joomlasitesi.com/comment.php adresine gitmeniz yeterli. Betik çalıştığında mevcut JComments verileri, az önce içe aktardığımız wp_comments tablosuna taşınacak. Bir bakıma hamuru fırına verdik; sırada pişen ekmeği dışarı almak var.

4-Dönüştürülen Yorumların Çıkarılması

Az önceki işlemlerin benzerini tekrarlayacağız. Bu kez Joomla veritabanındaki 3 adet wp tablosunu aşağıdaki gibi işaretleyip alttaki “Seçilileri Dışa Aktar” seçeneğiyle dışarı alacağız. Görüldüğü gibi jos_ tabloları ile wp_ tabloları ayrı ayrı durmaktadır.

Joomla'dan WordPress'e Geçmek

5-Yeni Yorumların WordPress DB sine Aktarılması

Dışa aktardığımız, içi JComments yorumlarıyla dolu tabloları WordPress veritabanına yeniden içe aktarma zamanı geldi. Ancak öncesinde, çakışma olmaması için WordPress veritabanındaki mevcut tabloları kaldırmamız gerekiyor. Bu nedenle eski wp tablolarını aşağıdaki gibi işaretleyip “Seçilileri Kaldır” seçeneğiyle siliyoruz.

Joomla'dan WordPress'e Geçmek

Tabloları kaldırdıktan sonra, Joomla veritabanından dışa aktardığımız 3 adet wp tablosunu içe alıyoruz.

Joomla'dan WordPress'e Geçmek

Bu son adımdı. Şimdi WordPress yönetim paneline girip “Yorumlar” sekmesine tıkladığınızda Joomla’daki yorumlarınızın birebir WordPress’e geldiğini göreceksiniz.

Joomla Makale Okunma Sayılarının WordPress’e Aktarılması

Bu adım zorunlu değil; ancak benim gibi her şeyi eksiksiz taşımak isteyen biriyseniz tam size göre. Joomla’daki makalelerin okunma sayılarını, WordPress’e taşıdığımız makalelerin okunma sayılarına aktaracağız. Bunun için Microsoft Excel’e ihtiyacımız var.

Önce Joomla veritabanının olduğu tabloya tıklayıp “SQL” sekmesine geçiyoruz ve aşağıdaki görselde adım adım görüldüğü gibi işlemleri yapıyoruz. Bu işlemlerden sonra makale “id” değerleriyle birlikte okunma sayılarının, yani “hits” değerlerinin geldiğini göreceksiniz.

SQL sorgusu şu şekilde olacak:

SELECT id,hits FROM `jos_content`

Joomla'dan WordPress'e Geçmek

Ardından aşağıdaki görselde görüldüğü gibi dışa aktarırken “özel” seçeneğini işaretleyip Excel CSV dosyası olarak dışarı alıyoruz.

Joomla'dan WordPress'e Geçmek

İndirdiğiniz Excel dosyasındaki okunma sayılarını aşağıdaki gibi 1 numaralı sütuna yerleştiriyoruz; 2 numaralı sütunu 1’den başlayarak 2, 3, 4, 5 şeklinde otomatik artırımla dolduruyoruz ve 3 numaralı sütundaki gibi SQL kodunu elde ediyoruz. Otomatik artırım için ilgili hücrenin sağ alt köşesine geldiğinizde imleç artı işaretine dönüşür; basılı tutup aşağı doğru sürüklediğinizde değerler otomatik olarak artar.

UPDATE wp_postmeta SET meta_value=1944 where post_id=1 and meta_key= 'post_views_count';

Joomla'dan WordPress'e Geçmek

Yukarıdaki 3 numaralı alandaki kodun tamamını seçip tekrar SQL sekmesine yapıştırdıktan sonra “Git” dediğimizde tüm okunma sayılarının güncellenmesi tamamlanmış olacaktır.

Joomla’dan WordPress’e Geçmek Eski URL Yapınızı Bozmasın

Joomla’da sistem yapısı gereği SEO uyumlu URL’lerde joomlasitesi.com/**143-**makale-adi şeklinde makale kimliği (id) bulunur; WordPress’te ise böyle bir yapı yoktur. Google’da dizinlenmiş bağlantılarınızın bozulmasını ve aldığınız geri bağlantıların (backlink) kırılmasını istemiyorsanız, taşıdığınız WordPress sitesinin URL’lerini Joomla’dakine benzer hale getirebilirsiniz. Bunun için bulduğum iki yöntem var. İlki oldukça zahmetli bir yöntem; başta bunu denedim, ardından ikinci yönteme geçtim. İkisini de aşağıda anlatayım.