Bir Başka Veritabanını Php İle Wordpress Aktarma.
-
Merhaba arkadaşlar,
elimde makalelerin bulunduğu veritabanım mevcut ve yine bunu wordpress siteme aktarmak istiyorum fakat tam başarılı olamadım php ve wordpress tablo yapısı hakkında bilgi sahibi arkadaşlardan yardım bekliyorum.
Aşağıda kendi çabalarımla oluşturduğum kodlar mevcut. çalışıyor fakat tam istediğim gibi değil.
1- wordpress insert ederken türkçe karakter bozuk oluyor.
2- insert ederken parafrafın tamamını değil ilk kelimeyi veya kelimenin yarısını alıyor.
3- resmi özel alan olarak eklediğinden emin değilim.
4- Önemli olan işi gerçekleştirmek başka şekildede yapabiliriz amaca uygun olsun yeter, misal wordpress admin panelde xml import var. bu yapıya uygun şekilde haberlerimi xml şekle dönüştürebilirsem başarılı olurum ama yine yardım lazım.. yani wordpresten xml kalıbı çıkarıp veritabanını ona göre uyarlamaktan bahsediyorum.<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <?php $DBHost= "localhost"; $DBUser= "veritabanuser"; $DBPassword="123456"; $DBName="dbadimvs.."; $conn = mysql_connect($DBHost,$DBUser,$DBPassword); mysql_select_db($DBName,$conn); //mysql_query("SET NAMES 'latin5'"); //mysql_query("SET CHARACTER SET latin5"); //mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'"); // verileri çekiyorum.. $results = mysql_query("SELECT * FROM Content",$conn); $i = 0; while ($row = mysql_fetch_array($results,MYSQL_ASSOC)) { $post = array(); $post['post_status'] = 'draft'; $post['post_category'] = array(4); $post['post_date'] = date('Y-m-d H:i:s',strtotime($row['DateCreated'])); $post['post_title'] = $row['Title']; // Makale başlık $post['post_content'] = $row['Description']; // Makale Açıklaması $resim = $row['Image1']; // Makale resmi $posts[$i] = $post; $i++; } mysql_free_result($results); mysql_close($conn); require('./wp-load.php'); foreach ($posts as $post) { wp_insert_post($post); $ozekle = mysql_query("Insert Into wp_postmeta (post_id,meta_key,meta_value) values ('$id','resim','$resim')"); echo "eklendi"; echo $post['post_title']; echo "<br/>"; echo $resim; } ?> -
Hocam bu kodlamalardan çok çekmiş birisi olarak kendi çözümümü söylüyorum...
Meta tag olarak utf-8 kullan...
Mysql ile bağlanırken
"SET NAMES 'utf8'"
'SET CHARACTER SET "utf8"' yap..phpmyadminden oluşturduğun db nin karşılaştırmasını utf8_unicode_ci veya utf8_turkish_ci yap..
ayrıca string girilen her alanın da karşılaştırmasını phpmyadminden bu şekilde ayarla ( standartta latin1_swedish_ci mi ne yapıyodu)
büyük ihtimal karakter problemin çözülür (:
-
sadece wp_postmeta tablosuna eklersen olmaz :| az bekle editlicem :)
edit:
öhm;
wp_posts tablosuna
guid,post_author,post_date,post_date_gmt,post_content,post_title,post_status,comment_status,ping_status,post_name,post_modified,post_modified_gmt,post_type
kolonlarını
wp_postmeta tablosuna
post_id,meta_key,meta_value kolonlarını
buradaki olay özel alan denilen kısımdır
çoğu wp templatede blog eklerken ana sayfada çıkmasını istediğiniz resmi özel alan olarak Image,image,img şeklinde eklemeniz söylenir
meta_key girdiğin özerl alan adı meta_value değeri post_id ise hangi postta ait olduğunu gösterir örnek versek şöyle olurdu ;
mysql_query("insert into wp_postmeta(post_id,meta_key,meta_value) values('$LID','mm_image','$resim')")or mysql_error();vs..
son olarakta
wp_term_relationships tablosuna
hangi kategoriye ait olduğu eklenmeli
böyle bişeydi :|
-
kodlarda wp fonksiyonlarını kullanıyorum o kendisi otomatik eklemiyormu ?
require('./wp-load.php');4142foreach($postsas$post) {4344wp_insert_post($post);
