WordPress’te Sayfaları Yeniden Sıralamanın En Kolay Yolları (Tüm Yöntemler Açıklandı)
WordPress’te sayfaları yeniden sıralamak, hem sitenizin yapısal hiyerarşisini hem de sayfaların navigasyon menülerinde, REST API yanıtlarında ve tema tarafından oluşturulan sayfa listelerinde görünme sırasını kontrol eder. Varsayılan olarak, WordPress her sayfaya menu_order değeri olarak 0 atar; bu, siz bu değeri açıkça geçersiz kılmadıkça — blok editörünün Belge Ayarları, özel bir eklenti veya doğrudan veritabanı manipülasyonu aracılığıyla — sayfaların alfabetik sırayla görüntüleneceği anlamına gelir.
Bu kılavuz, en hızlı sürükle-bırak eklentisinden ham menu_order SQL güncellemelerine kadar WordPress sayfalarını yeniden sıralamanın her pratik yöntemini kapsar; her yaklaşımın uygun olduğu ve her birinin sessizce başarısız olduğu tam senaryolar dahil.
Sayfa Sıralamasının Navigasyonun Ötesinde Neden Önemli Olduğu
Çoğu eğitim, sayfa yeniden sıralamayı tamamen görsel bir endişe olarak ele alır. Öyle değildir. wp_posts tablosundaki menu_order sütunu, doğrudan şunları etkileyen sorgulanabilir bir tam sayıdır:
orderby=menu_orderiletildiğindeWP_Querysonuçları — birçok sayfa oluşturucu şablonu ve tema döngüsü tarafından kullanılır- Başsız WordPress kurulumları ve mobil uygulamalar tarafından kullanılan REST API uç nokta sıralaması (
/wp-json/wp/v2/pages?orderby=menu_order&order=asc) menu_orderile birleştirilmiş üst-alt ilişkilerinden hiyerarşi çıkaran Breadcrumb eklentileri (Yoast SEO, Rank Math)- Site haritası oluşturma — bazı SEO eklentileri
sitemap.xmliçindeki sayfa tarama sırasını önceliklendirmek içinmenu_orderkullanır sort_column=menu_orderilewp_list_pages()tarafından oluşturulan programatik sayfa ağaçları
Bunu anlamak, yaygın bir hatayı önler: geliştiriciler sayfaları Menüler editöründe yeniden sıralar, sorunun çözüldüğünü varsayar, ardından temalarının sayfa döngüsünün veya site haritasının hâlâ eski alfabetik sırayı yansıttığını keşfeder.
Yöntem 1: Simple Page Ordering Eklentisi (Çoğu Site için Önerilen)
10up tarafından geliştirilen Simple Page Ordering, birkaç yüze kadar sayfası olan siteler için en verimli çözümdür. Standart WordPress yönetici liste tablosuna müdahale eder ve her satırı sürüklenebilir hale getirir; her bırakma olayında güncellenmiş menu_order değerlerini AJAX aracılığıyla veritabanına geri yazar.
Kurulum
- WordPress kontrol panelinizde Eklentiler > Yeni Eklenti Ekle bölümüne gidin.
Simple Page Orderingarayın.- Şimdi Yükle‘ye, ardından Etkinleştir‘e tıklayın.
Sayfaları Yeniden Sıralama
- Sayfalar > Tüm Sayfalar‘a gidin.
- Herhangi bir sayfa satırının üzerine gelin — solda bir sürükleme tutamacı belirir.
- Satırları istenen sıraya sürükleyin.
- Bırakın — sıralama AJAX aracılığıyla otomatik olarak kaydedilir. “Kaydet” düğmesine gerek yoktur.
Bu Eklentinin Arka Planda Gerçekte Yaptıkları
Her sürükle-bırak eylemi, simple_page_ordering eylemiyle ve yeni sıralarındaki gönderi ID’lerinin serileştirilmiş bir dizisiyle wp-admin/admin-ajax.php‘a bir POST isteği gönderir. WordPress daha sonra bu dizi üzerinde yineleme yapar ve bireysel UPDATE wp_posts SET menu_order = %d WHERE ID = %d sorguları çalıştırır. Yüzlerce sayfası olan büyük sitelerde bu, bir veritabanı yazma patlaması oluşturabilir — sorgu hızı sınırları olan paylaşımlı bir ortamdaysanız izlemeye değer bir durumdur.
Sınırlamalar
- Eklenti yalnızca
page-attributes‘yi destekleyen gönderi türlerini etkiler. Özel gönderi türleri,register_post_type()‘da açıkça'supports' => ['page-attributes']kaydetmelidir. - Yönetici liste tablosundaki sayfalama karışıklığa neden olabilir: 2. sayfanın en üstüne bir sayfa sürüklemek, onu otomatik olarak 1. sayfanın son öğesinin arkasına yerleştirmez. Sayfalandırılmış sınırlar arasında yeniden sıralamadan önce tüm sayfaları tek ekranda görmek için “Ekran Seçenekleri”ndeki sayfa başına öğe sayısını artırmanız gerekir.
- Eklenti, navigasyon menülerindeki sayfaları yeniden sıralamaz — bunlar ayrı bir
wp_term_relationshipsyapısı tarafından kontrol edilir.
Yöntem 2: Sayfa Özellikleri — Manuel menu_order Ataması
WordPress, menu_order alanını hem Klasik Editör’de hem de Blok Editör’de yerel olarak sunar. Bu yöntem eklenti gerektirmez ve az sayıda sayfa için hassas sayısal sıralama belirlemeniz gerektiğinde ya da toplu güncellemeleri programatik olarak komut dosyasıyla çalıştırdığınızda doğru seçimdir.
Blok Editör (Gutenberg)
- Yeniden sıralamak istediğiniz sayfayı açın.
- Sağ kenar çubuğunda Sayfa sekmesine tıklayın (Blok değil).
- Sayfa Özellikleri‘ne kadar aşağı kaydırın.
- Sıra alanını bulun ve bir tam sayı girin.
- Güncelle veya Kaydet‘e tıklayın.
Klasik Editör
- Sayfa editörünü açın.
- Sağ kenar çubuğunda Sayfa Özellikleri meta kutusunu bulun.
- Sıra alanına bir değer girin.
- Güncelle‘ye tıklayın.
Sıralama Mantığı
Daha düşük menu_order değerine sahip sayfalar önce görünür. Aynı değeri paylaşan sayfalar başlığa göre alfabetik sıralamaya geri döner. Pratik bir kural:
| Sayfa Başlığı | İstenen Konum | `menu_order` Değeri |
|---|---|---|
| Ana Sayfa | 1. | 1 |
| Hakkımızda | 2. | 2 |
| Hizmetler | 3. | 3 |
| Portföy | 4. | 4 |
| İletişim | 5. | 5 |
Daha sonra mevcut sayfalar arasına sayfa eklemeyi öngörüyorsanız değerler arasında boşluk bırakın (örn. 10, 20, 30) — bu, her yeni sayfa eklediğinizde tüm sayfaları yeniden numaralandırmaktan kaçınmanızı sağlar.
WP-CLI ile Programatik Toplu Güncelleme
Başka bir CMS’den geçiş yapan veya aynı anda düzinelerce sayfayı yeniden yapılandıran siteler için her sayfayı manuel olarak düzenlemek pratik değildir. WP-CLI kullanın:
wp post update 42 --menu_order=1
wp post update 57 --menu_order=2
wp post update 61 --menu_order=3Ya da bir kabuk betiği kullanarak bir dizi üzerinde döngü yapın:
declare -A pages=([42]=1 [57]=2 [61]=3 [78]=4)
for post_id in "${!pages[@]}"; do
wp post update "$post_id" --menu_order="${pages[$post_id]}"
doneDoğrudan Veritabanı Güncellemesi (Gelişmiş)
WP-CLI kullanılamıyorsa ve menu_order değerlerini toplu olarak güncellemeniz gerekiyorsa, SQL’i doğrudan çalıştırabilirsiniz. Her zaman önce yedek alın.
UPDATE wp_posts SET menu_order = 1 WHERE ID = 42 AND post_type = 'page';
UPDATE wp_posts SET menu_order = 2 WHERE ID = 57 AND post_type = 'page';
UPDATE wp_posts SET menu_order = 3 WHERE ID = 61 AND post_type = 'page';Bu, doğrudan MySQL erişiminizin olduğu ve tek bir bakım penceresinde birden fazla site genelinde yapısal değişiklikler uygulamanız gereken bir VPS Hosting ortamında WordPress yönetirken özellikle kullanışlıdır.
Yöntem 3: WordPress Menü Editörü — Navigasyon Görüntüsünü Yeniden Sıralama
Görünüm > Menüler editörü, sayfaların sitenizin navigasyon menülerinde görünme sırasını kontrol eder — bu, wp_posts‘daki menu_order‘dan tamamen bağımsızdır. Buradaki değişiklikler WP_Query sonuçlarını, REST API yanıtlarını veya wp_list_pages() çıktısını etkilemez.
Bu yöntemi şu durumlarda kullanın:
- Temanız kayıtlı bir menü konumundan navigasyon oluşturuyorsa (neredeyse tüm modern temalar bunu yapar)
- Navigasyon çubuğunda, sayfa listelerinde kullanılan yapısal
menu_order‘dan farklı bir sayfa sırası istiyorsanız - Sayfaların gerçek WordPress üst öğesini değiştirmeden alt öğe (açılır menü) olarak iç içe yerleştirmeniz gerekiyorsa
Adımlar
- Görünüm > Menüler‘e gidin.
- Açılır listeden mevcut bir menü seçin veya Yeni menü oluştur‘a tıklayın.
- Soldaki Sayfalar panelinde dahil etmek istediğiniz sayfaları işaretleyin ve Menüye Ekle‘ye tıklayın.
- Menü Yapısı panelinde öğeleri istenen sıraya sürükleyin.
- Alt öğe (açılır menü çocuğu) oluşturmak için bir menü öğesini hedeflenen üst öğesinin altında biraz sağa sürükleyin.
- Menüyü Kaydet‘e tıklayın.
Kritik Ayrım: Menü Sırası ve Sayfa Sırası
Birçok WordPress yöneticisinin ince hatalar oluşturduğu yer burasıdır. Şu senaryoyu düşünün: temanız bir kenar çubuğunda sayfa dizini görüntülemek için wp_list_pages() kullanıyor. Sayfaları Görünüm > Menüler’de yeniden sıralıyorsunuz, ancak kenar çubuğu listesi değişmiyor. Bu beklenen bir davranıştır — wp_list_pages(), wp_posts‘dan değil, menü yapısından menu_order okur. Kenar çubuğunu düzeltmek için Yöntem 1 veya Yöntem 2’yi kullanmanız gerekir.
Yöntem 4: Tam Site Editörü (Blok Temalar) — Navigasyon Bloğu
Blok temalar (Twenty Twenty-Three, Kadence, GeneratePress blok varyantı) çalıştıran siteler, Görünüm > Menüler yerine Tam Site Editörü‘nü kullanır. FSE içindeki Navigasyon bloğunun kendi sürükle-bırak arayüzü vardır.
- Görünüm > Editör‘e gidin.
- Üst bilgi şablonundaki Navigasyon bloğuna tıklayın.
- Tüm navigasyon öğelerini görmek için Liste Görünümü panelini (üst araç çubuğundaki üç çizgi simgesi) kullanın.
- Yeniden sıralamak için öğeleri Liste Görünümü içinde sürükleyin.
- Kaydet‘e tıklayın.
Temel veri modeli klasik Menüler sistemiyle aynıdır — WordPress, FSE navigasyon menülerini wp_navigation gönderileri olarak depolar — ancak düzenleme arayüzü tamamen farklıdır.
Yöntem 5: pre_get_posts ile Programatik Yeniden Sıralama
Özel temalar veya eklentiler geliştiren geliştiriciler için, veritabanındaki menu_order değerlerine güvenmeden sayfa sırasını uygulamanın en temiz yolu, pre_get_posts‘a bağlanmak ve sorgu argümanlarını çalıştırmadan önce geçersiz kılmaktır.
add_action( 'pre_get_posts', function( WP_Query $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_post_type_archive( 'page' ) ) {
$query->set( 'orderby', 'menu_order' );
$query->set( 'order', 'ASC' );
}
});Bunu temanızın functions.php dosyasına veya siteye özgü bir eklentiye ekleyin. Bu, ana sorgu döngüsünü kullanan herhangi bir şablonun, şablon dosyası düzenlemeleri gerektirmeden menu_order‘e uymasını sağlar.
Karşılaştırma: Tüm Yöntemlere Bir Bakış
| Yöntem | DB’deki `menu_order`’yi Etkiler | Navigasyon Menüsü Görüntüsünü Etkiler | Eklenti Gerektirir | En İyi Kullanım |
|---|---|---|---|---|
| Simple Page Ordering eklentisi | Evet | Hayır | Evet | Çok sayfalı siteler, teknik olmayan editörler |
| Sayfa Özellikleri (Sıra alanı) | Evet | Hayır | Hayır | Küçük siteler, hassas sayısal kontrol |
| WP-CLI toplu güncelleme | Evet | Hayır | Hayır | Geliştiriciler, geçişler, toplu işlemler |
| Doğrudan SQL güncellemesi | Evet | Hayır | Hayır | DB erişimi olan ileri düzey yöneticiler |
| Görünüm > Menüler | Hayır | Evet | Hayır | Yalnızca navigasyon görüntüsü |
| Tam Site Editörü Navigasyon bloğu | Hayır | Evet | Hayır | Blok temalar |
pre_get_posts kancası | Hayır | Hayır | Hayır | Sorgu davranışını geçersiz kılan geliştiriciler |
Yaygın Tuzaklar ve Uç Durumlar
Sayfalama sınırı sürükle-bırak: Yukarıda belirtildiği gibi, Simple Page Ordering tek bir sürüklemeyle bir sayfayı yönetici listesinin 2. sayfasından 1. sayfadaki bir konuma taşıyamaz. Yeniden sıralamadan önce Ekran Seçenekleri’ndeki sayfa başına sayıyı artırın.
Alt sayfalar üst bağlamı devralır: Sayfa Özellikleri kullanılırken, menu_order aynı üst öğe altındaki kardeş sayfalarla sınırlıdır. menu_order=1 olan bir alt sayfa kardeşleri arasında ilk sırada görünür, ancak farklı bir üst öğe altındaki sayfalara göre konumu önemsizdir.
Önbellek katmanlarının geçersiz kılınması: SQL veya WP-CLI aracılığıyla menu_order‘yi toplu olarak güncelledikten sonra, sayfa sorguları için nesne önbelleği girişleri hâlâ eski sırayı yansıtıyor olabilir. Redis veya Memcached nesne önbelleği kullanan sitelerde, önbelleği açıkça temizleyin:
wp cache flushTam sayfa önbelleği (WP Rocket, LiteSpeed Cache, Nginx FastCGI önbelleği) çalıştıran sitelerde, sayfa önbelleğini de temizleyin; aksi takdirde ziyaretçiler önbellek TTL süresi boyunca eski navigasyonu görmeye devam eder.
REST API tüketicileri: Ayrıştırılmış bir ön uç (Next.js, Nuxt, React) WordPress REST API’sinden sayfa çekiyorsa, açıkça orderby=menu_order istemesi gerekir — sayfalar için varsayılan REST API sıralaması tarihe göre azalan şekildedir. API çağrılarınızı buna göre güncelleyin:
GET /wp-json/wp/v2/pages?orderby=menu_order&order=asc&per_page=100Çoklu site kurulumları: WordPress Multisite’ta, menu_order site başına geçerlidir. Ağ genelinde bir WP-CLI komutu çalıştırmak, her alt site için --url= belirtmeyi veya özel bir döngüyle --network kullanmayı gerektirir.
Barındırma Ortamı Değerlendirmeleri
Seçtiğiniz yöntem barındırma kurulumunuza bağlı olabilir. Yönetilen bir Paylaşımlı Web Hosting planında, doğrudan veritabanı erişimi phpMyAdmin ile sınırlı olabilir; bu da WP-CLI veya ham SQL güncellemelerini daha az kullanışlı hale getirir — eklenti veya Sayfa Özellikleri yöntemleri daha pratiktir. cPanel’li bir VPS‘te genellikle tam terminal erişiminiz olur; bu da WP-CLI’yi toplu işlemler için en hızlı seçenek yapar. Root erişimine sahip çıplak bir Dedicated Server‘da, doğrudan MySQL sorguları ve WP-CLI betikleri dağıtım süreçlerine veya bakım cron işlerine entegre edilebilir.
Birden fazla WordPress kurulumunu yönetiyorsanız ve ortamlar genelinde tutarlı sayfa sıralamasına ihtiyaç duyuyorsanız, menu_order atamalarını bir WP-CLI betiğine kodlamak ve bunu dağıtım sürecinizin bir parçası olarak çalıştırmak en güvenilir yaklaşımdır — manuel adımları ortadan kaldırır ve sürüm kontrolüne alınabilir.
WordPress kurulumlarının yanı sıra profesyonel bir e-posta varlığına güvenen siteler için, barındırmanızı özel bir E-posta Hosting hizmetiyle eşleştirmek, genellikle öne çıkan bir sırada yer alması gereken iletişim ve destek sayfalarınızın eşit derecede güvenilir bir iletişim altyapısıyla desteklenmesini sağlar.
Teknik Temel Çıkarımlar Kontrol Listesi
Bir yeniden sıralama yöntemi seçmeden önce aşağıdakileri doğrulayın:
- Gerçekte neyi yeniden sıraladığınızı belirleyin. Navigasyon menüsü sırası ve
wp_posts‘dakimenu_orderbağımsızdır. Temanızın hangisini okuduğunu doğrulayın. - Temanızın sayfa döngüsünü kontrol edin.
wp_list_pages(), özel birWP_Queryveya kayıtlı bir menü konumu mu kullanıyor? Her biri farklı bir veri kaynağından okur. - Editoryal iş akışları için Simple Page Ordering kullanın; teknik olmayan kullanıcıların geliştirici müdahalesi olmadan sayfaları düzenli olarak yeniden sıralaması gerektiğinde.
- Hassasiyet için Sayfa Özellikleri veya WP-CLI kullanın; belirli sayısal değerlere ihtiyaç duyduğunuzda veya bir geçişi komut dosyasıyla çalıştırdığınızda.
- Amacınız
WP_Querytabanlı sayfa listelerini, site haritalarını veya REST API tüketicilerini etkilemekse Görünüm > Menüler’i tek başına asla kullanmayın. - Tüm katmanların yeni sırayı hemen yansıtmasını sağlamak için herhangi bir toplu
menu_ordergüncellemesinden sonra nesne önbelleğini ve sayfa önbelleğini temizleyin. - Tam yeniden numaralandırma yapmadan gelecekteki eklemelere yer açmak için
menu_ordernumaralandırmasında boşluklar bırakın (1, 2, 3 yerine 10, 20, 30). - Başsız WordPress kurulumları için, varsayılan sıralamayı varsaymayın — REST API isteklerinde her zaman açıkça
orderby=menu_order&order=asciletin.
Sıkça Sorulan Sorular
Görünüm > Menüler’de sayfa sırasını değiştirmek SEO’yu etkiler mi?
Hayır. Navigasyon menüsü sırası, wp_posts‘daki menu_order‘yu, site haritası önceliğini veya tarama sırasını doğrudan etkilemez. Ancak temanız wp_list_pages()‘dan breadcrumb veya sayfa dizinleri oluşturuyorsa, bunlar veritabanındaki menu_order tarafından yönlendirilir — bunu Yöntem 1 veya Yöntem 2 kullanarak ayrıca güncelleyin.
Bir sayfayı güncelledikten sonra sayfa sıram neden sıfırlanıyor?
Bu genellikle bir eklenti veya tema kancasının kaydetme sırasında wp_update_post() çalıştırması ve menu_order=0‘yi açıkça iletmesi durumunda olur. Aktif eklentilerinizi add_action('save_post', ...) kancalarıyla denetleyin ve herhangi birinin menu_order alanının üzerine yazıp yazmadığını kontrol edin. Simple Page Ordering eklentisi buna karşı koruma sağlamaz — çakışan kancayı bulup düzeltmeniz gerekir.
Blok Editör’de eklenti olmadan sayfaları yeniden sıralayabilir miyim?
Evet. Herhangi bir sayfayı açın, sağ kenar çubuğundaki Sayfa sekmesine gidin, Sayfa Özellikleri‘ni genişletin ve Sıra tam sayı alanını ayarlayın. Bu, doğrudan wp_posts‘daki menu_order‘ya yazar. Eklenti gerekmez.
Simple Page Ordering özel gönderi türleriyle çalışır mı?
Yalnızca özel gönderi türü 'supports' => ['page-attributes'] ile kaydedildiyse. Gönderi türü kaydını kontrol ediyorsanız, bu destek dizesini ekleyin. Üçüncü taraf bir gönderi türüyse, functions.php‘da programatik olarak destek ekleyebilirsiniz:
add_post_type_support( 'your_post_type_slug', 'page-attributes' );menu_order için maksimum değer nedir?
wp_posts‘daki menu_order sütunu işaretli 32 bit tam sayıdır (INT(11)), dolayısıyla maksimum değer 2,147,483,647‘dir. Pratikte en fazla yüzler mertebesinde değerler kullanın — son derece büyük değerler, görsel ofset hesaplamaları için menu_order üzerinde aritmetik işlem yapan bazı tema işlevlerinde beklenmedik davranışlara neden olabilir.
