15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
23.10.2024
1 +1

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_order iletildiğinde WP_Query sonuç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_order ile birleştirilmiş üst-alt ilişkilerinden hiyerarşi çıkaran Breadcrumb eklentileri (Yoast SEO, Rank Math)
  • Site haritası oluşturma — bazı SEO eklentileri sitemap.xml içindeki sayfa tarama sırasını önceliklendirmek için menu_order kullanır
  • sort_column=menu_order ile wp_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

  1. WordPress kontrol panelinizde Eklentiler > Yeni Eklenti Ekle bölümüne gidin.
  2. Simple Page Ordering arayın.
  3. Şimdi Yükle‘ye, ardından Etkinleştir‘e tıklayın.

Sayfaları Yeniden Sıralama

  1. Sayfalar > Tüm Sayfalar‘a gidin.
  2. Herhangi bir sayfa satırının üzerine gelin — solda bir sürükleme tutamacı belirir.
  3. Satırları istenen sıraya sürükleyin.
  4. 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_relationships yapı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)

  1. Yeniden sıralamak istediğiniz sayfayı açın.
  2. Sağ kenar çubuğunda Sayfa sekmesine tıklayın (Blok değil).
  3. Sayfa Özellikleri‘ne kadar aşağı kaydırın.
  4. Sıra alanını bulun ve bir tam sayı girin.
  5. Güncelle veya Kaydet‘e tıklayın.

Klasik Editör

  1. Sayfa editörünü açın.
  2. Sağ kenar çubuğunda Sayfa Özellikleri meta kutusunu bulun.
  3. Sıra alanına bir değer girin.
  4. 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 Sayfa1.1
Hakkımızda2.2
Hizmetler3.3
Portföy4.4
İletişim5.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=3

Ya 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]}"
done

Doğ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

  1. Görünüm > Menüler‘e gidin.
  2. Açılır listeden mevcut bir menü seçin veya Yeni menü oluştur‘a tıklayın.
  3. Soldaki Sayfalar panelinde dahil etmek istediğiniz sayfaları işaretleyin ve Menüye Ekle‘ye tıklayın.
  4. Menü Yapısı panelinde öğeleri istenen sıraya sürükleyin.
  5. 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.
  6. 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.

  1. Görünüm > Editör‘e gidin.
  2. Üst bilgi şablonundaki Navigasyon bloğuna tıklayın.
  3. Tüm navigasyon öğelerini görmek için Liste Görünümü panelini (üst araç çubuğundaki üç çizgi simgesi) kullanın.
  4. Yeniden sıralamak için öğeleri Liste Görünümü içinde sürükleyin.
  5. 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öntemDB’deki `menu_order`’yi EtkilerNavigasyon Menüsü Görüntüsünü EtkilerEklenti GerektirirEn İyi Kullanım
Simple Page Ordering eklentisiEvetHayırEvetÇok sayfalı siteler, teknik olmayan editörler
Sayfa Özellikleri (Sıra alanı)EvetHayırHayırKüçük siteler, hassas sayısal kontrol
WP-CLI toplu güncellemeEvetHayırHayırGeliştiriciler, geçişler, toplu işlemler
Doğrudan SQL güncellemesiEvetHayırHayırDB erişimi olan ileri düzey yöneticiler
Görünüm > MenülerHayırEvetHayırYalnızca navigasyon görüntüsü
Tam Site Editörü Navigasyon bloğuHayırEvetHayırBlok temalar
pre_get_posts kancasıHayırHayırHayırSorgu 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 flush

Tam 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‘daki menu_order bağı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 bir WP_Query veya 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_Query tabanlı 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_order güncellemesinden sonra nesne önbelleğini ve sayfa önbelleğini temizleyin.
  • Tam yeniden numaralandırma yapmadan gelecekteki eklemelere yer açmak için menu_order numaralandı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=asc iletin.

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.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın