WordPress'te URL'ler rotalarla eşleşmez. Veritabanı sorgularıyla eşlenirler.
WordPress'i "varsayılan" kalıcı bağlantı modunda kullanırken, ana URL sorgusunda? P = 1 veya? Sayfa = 234 gibi bir dizi değişkeniniz vardır. Ayrıca? S = arama ve diğerleri de var.
"Güzel" kalıcı bağlantılar kullanırsanız, çeşitli URL kalıplarını doğrudan aynı URL parametreleri kümesiyle eşleyen "yeniden yazma kuralları" adı verilen büyük bir kural kümesi oluşturulur. / 2014/04/12 / example gibi bir URL? Yıl = 2014 & ay = 04 & gün = 12 & postname = örnek veya benzeri ile eşlenir. Dolayısıyla, bu haritalama yapıldıktan sonra, aşağıdakiler için de geçerlidir.
Bu değişkenler esasen WP_Query sınıfının ana örneğini kontrol etmektedir. WP_Query sınıfı, veritabanından "gönderiler" almak için veritabanı sorgusunu oluşturan tüm bilgileri tutar. İçine geçirilen çeşitli parametreler, ne tür bir sorgu oluşturduğunu ve hangi verileri aldığını kontrol eder.
Bakın, WordPress tarafından görüntülenebilecek her şey aslında bir "gönderi" dir. Blog ters zamana dayalı bir dizi gönderi. "Sayfa", tanımlı ada sahip statik bir gönderidir. "Özel gönderi türü" tam olarak göründüğü gibi, tanımladığınız özel türde bir "gönderi" dir. WordPress'te bir şey görüntülemek için tüm ana sorgular, wp_posts tablosundan yayınların bazı alt kümesini alıyor.
WP_Query bunu yapar. Ve URL'deki parametreler doğrudan bu ana sorguya gönderilir ve orada kullanılır.
Tema daha sonra sorgunun geri döndüğüne göre hangi şablonu kullanacağını belirler. / Category / example isteğinde bulunmuş olsaydınız, bu? Category_name = example olur, bu da ana $ wp_query-> query_vars dizisinin bu bilgiyi alacağı ve WP_Query'nin "example" kategorisi için son X gönderilerini çekeceği anlamına gelir ve is_category bayrağını true olarak ayarlar.
Şablon yükleyici bundan sonra çalışır, is_category () öğesinin true değerini döndürür ve kategori şablonunu seçmeye karar verir, böylece Template-example.php öğesini arar ve Template'e göre category.php'ye döner. Hiyerarşi.
Dolayısıyla, URL'lerin çalışma şeklini değiştirmek isteyip istemediğiniz soru basittir: URL'leri mi değiştirmek istiyorsunuz veya neyle eşleştirildiniz? URL'ler işlevlerle eşlenmediğinden, sorguyu denetleyen parametrelere eşlenirler. URL'nin bu ana sorguyu ayarlamasını istiyorsanız, özel bir URL'nin tamamen diğer bazı özel kodları çalıştırmasını istediğinizden biraz farklı bir işlemdir.
Ve yorumlarınızda özel sorunuza cevap vermek için: "gerçekten yayın görüntülemek istemediğiniz durumlar yok mu?" Hayır yok. Her şey bir gönderi. Tüm içerik yayınlarda saklanır. İçeriği başka bir yerde saklamak ve farklı olmak istiyorsanız, bunu yapabilirsiniz, ancak daha zor çünkü dürüst olmak gerekirse, genellikle gerekli değildir. Özel içeriğiniz varsa, özel bir gönderi türü oluşturun, içeriğinizi bu tür bir gönderi olarak saklayın, bir URL kalıbı ile eşleyin. Kolay.