- Konu sahibi
- #1
WordPress’te içerik, kullanıcı, ayar, yorum ve sınıflandırma bilgileri farklı tablolarda tutulur. Tablo adlarının başındaki
Bir yazı veya sayfa tek bir tabloda bulunmaz. Ana içerik
wp_termmeta terimlere bağlı ek anahtar/değer bilgilerini tutar. wp_links eski blogroll sistemi için kalabilir. Kullanıcı rolü doğrudan users tablosunda tek rol sütunu değildir; usermeta içindeki site prefix’ine bağlı capabilities verisiyle ilişkilidir. Multisite’ta users/usermeta ağ genelinde paylaşılır, siteye özgü içerik tablolarının prefix’i farklıdır.
Bu alan eşleşmeleri mantıksal ilişkilerdir; çekirdek tablolar arasında her ilişki için veritabanının zorunlu tuttuğu foreign key/cascade bulunduğunu varsaymayın. Native WordPress API’si cache/hook/ilişki tutarlılığını da yönetir. Kategori ve etiketlerde temel bağlantı yapısı üç parçalıdır.
Örneğin yazı kimliğinin
İlk sorguda sonuç dönüyorsa içerik
Bir yazının kategori ve etiketlerini görmek için ilişkili tabloları birleştirmek gerekir:
Çoklu site kurulumlarında her alt site için içerik, yorum, terim ve seçenek tablolarının numaralı kopyaları bulunabilir. Ağ kullanıcıları ve ağ ayarları ise ayrı ağ tablolarında tutulur. Bu nedenle çoklu sitede yalnızca
Eklentiler, çekirdek tablolardaki meta alanlarını kullanabileceği gibi kendi tablolarını da oluşturabilir. Bir ayarın hangi tabloda olduğunu ararken önce eklentinin belgelerine, ardından tablo adlarına ve
WordPress tablo ön eki neden
Kurulum sırasında farklı bir tablo ön eki seçilebilir. Gerçek ön eki
Eklentinin belgelerinde tablo yapısını arayın ve veritabanında benzer ön eke sahip tabloları inceleyin. Eklenti kaldırıldığında tabloların otomatik silinip silinmediği eklentiye bağlı olduğundan, silme işlemini yedek almadan yapmayın.
wp_ bölümü sabit değildir; wp-config.php içindeki $table_prefix değerine göre değişebilir. Bu nedenle sorgu yazarken kendi sitenizdeki gerçek ön eki kullanın.Bir yazı veya sayfa tek bir tabloda bulunmaz. Ana içerik
wp_posts tablosundadır; özel alanlar wp_postmeta tablosunda, kategori ve etiket bağlantıları ise sınıflandırma tablolarında tutulur. Bu yapı, bir içeriği incelerken birden fazla tabloyu birlikte değerlendirmeniz gerektiği anlamına gelir.En sık kullanılan tablolar
| Tablo | Ne tutar? | Pratik kullanım |
|---|---|---|
wp_posts | Yazı, sayfa, ek dosya, revizyon, menü öğesi ve özel içerik türleri | Başlık, içerik, durum, yazar ve yayın tarihini bulma |
wp_postmeta | İçeriğe ait anahtar-değer biçimindeki özel alanlar | Özel alan, SEO veya sayfa oluşturucu verisini inceleme |
wp_options | Site ayarları, eklenti ayarları ve geçici seçenekler | Site adresi veya eklenti yapılandırmasını kontrol etme |
wp_users ve wp_usermeta | Kullanıcı hesabı ve kullanıcıya ait ek bilgiler | Kullanıcı adı, e-posta ve rol bilgisini inceleme |
wp_terms, wp_term_taxonomy ve wp_term_relationships | Terimler, bunların kategori/etiket türü ve içerik bağlantıları | Bir yazının hangi kategori veya etikete bağlı olduğunu bulma |
wp_comments ve wp_commentmeta | Yorumlar ve yorumlara ait ek veriler | Yorum durumu, yazarı ve bağlı içeriği kontrol etme |
wp_termmeta terimlere bağlı ek anahtar/değer bilgilerini tutar. wp_links eski blogroll sistemi için kalabilir. Kullanıcı rolü doğrudan users tablosunda tek rol sütunu değildir; usermeta içindeki site prefix’ine bağlı capabilities verisiyle ilişkilidir. Multisite’ta users/usermeta ağ genelinde paylaşılır, siteye özgü içerik tablolarının prefix’i farklıdır.
Tablolar arasındaki ilişki nasıl çalışır?
wp_posts.ID değeri, ilgili içeriğin kimliğidir. Aynı değer wp_postmeta.post_id alanında özel alanları, wp_comments.comment_post_ID alanında yorumları bulmak için kullanılır. Kullanıcı bağlantısı için wp_posts.post_author değeri wp_users.ID alanına karşılık gelir.Bu alan eşleşmeleri mantıksal ilişkilerdir; çekirdek tablolar arasında her ilişki için veritabanının zorunlu tuttuğu foreign key/cascade bulunduğunu varsaymayın. Native WordPress API’si cache/hook/ilişki tutarlılığını da yönetir. Kategori ve etiketlerde temel bağlantı yapısı üç parçalıdır.
wp_terms terimin adını ve kısa adını tutar. wp_term_taxonomy, bu terimin kategori mi, etiket mi veya özel bir sınıflandırma mı olduğunu belirtir. wp_term_relationships ise içerik kimliğini sınıflandırma kaydıyla eşleştirir. Yalnızca wp_terms tablosuna bakarak bir terimin hangi içerik türünde kullanıldığını kesin olarak anlayamazsınız.Somut örnek: bir yazının bilgilerini bulma
Örneğin yazı kimliğinin
42 olduğunu varsayalım. Salt okunur bir veritabanı aracında aşağıdaki sorgular, yazının temel kaydını ve özel alanlarını ayrı ayrı gösterir:
Kod:
SELECT ID, post_title, post_status, post_type, post_author
FROM wp_posts
WHERE ID = 42;
SELECT meta_key, meta_value
FROM wp_postmeta
WHERE post_id = 42;
İlk sorguda sonuç dönüyorsa içerik
wp_posts tablosunda bulunur. İkinci sorgunun boş dönmesi, yazının özel alanı olmadığı veya eklentinin veriyi kendi tablosunda tuttuğu anlamına gelebilir; bu durum yazının bozuk olduğunu tek başına göstermez. Sorgu hata verirse önce wp_ ön ekinin sitenizde farklı olup olmadığını ve sütun adlarını kontrol edin.Bir yazının kategori ve etiketlerini görmek için ilişkili tabloları birleştirmek gerekir:
Kod:
SELECT p.ID, p.post_title, t.name, tt.taxonomy
FROM wp_posts AS p
JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
JOIN wp_terms AS t ON t.term_id = tt.term_id
WHERE p.ID = 42;
Diğer tablolar ve eklenti verileri
wp_options sitesel ayarları ve bazı geçici kayıtları tutar. Site adresi gibi kritik değerleri doğrudan değiştirmek, yanlış değer girildiğinde yönetim panelini veya siteyi erişilemez bırakabilir. wp_links ise eski bağlantı özelliğinden kalan bir tablodur; her kurulumda aktif olarak kullanılmayabilir.Çoklu site kurulumlarında her alt site için içerik, yorum, terim ve seçenek tablolarının numaralı kopyaları bulunabilir. Ağ kullanıcıları ve ağ ayarları ise ayrı ağ tablolarında tutulur. Bu nedenle çoklu sitede yalnızca
wp_posts tablosunu incelemek tüm sitelerin verisini göstermez.Eklentiler, çekirdek tablolardaki meta alanlarını kullanabileceği gibi kendi tablolarını da oluşturabilir. Bir ayarın hangi tabloda olduğunu ararken önce eklentinin belgelerine, ardından tablo adlarına ve
option_name veya meta_key değerlerine bakın. Değişiklik yapmadan önce tam veritabanı yedeği alın; inceleme için SELECT sorguları kullanın ve UPDATE veya DELETE sorgularını doğrulamadan çalıştırmayın.Kaynaklar
Sık sorulan sorular
WordPress tablo ön eki neden wp_ olmayabilir?
Kurulum sırasında farklı bir tablo ön eki seçilebilir. Gerçek ön eki
wp-config.php içindeki $table_prefix değerinden veya veritabanı yönetim aracındaki tablo adlarından kontrol edin.Bir eklentinin hangi tabloyu kullandığını nasıl anlarım?
Eklentinin belgelerinde tablo yapısını arayın ve veritabanında benzer ön eke sahip tabloları inceleyin. Eklenti kaldırıldığında tabloların otomatik silinip silinmediği eklentiye bağlı olduğundan, silme işlemini yedek almadan yapmayın.