URL'leri WordPress İpuçları ve Eklentilerinde Yeniden Yazma
WordPress'teki en yeni güncellemeler, geliştiricilerin kişisel web sitelerini çok hızlı bir şekilde özelleştirmelerini sağladı. Temanızın alanlarını güncellemek, kenar çubuğundaki araçları değiştirmek ve hatta kendi özel PHP kod işlevlerinizi yazmak basittir. Genişliği çok büyük - ve popülerlik alanlarından biri URL’nin kalıcı bağlantılarını yeniden yazıyor.
Varsayılan WordPress yeniden yazma sistemini güncellemek için kullanabileceğiniz birkaç yöntem vardır. Bu derste birkaç örneği paylaşacağım ve sürecin ne kadar basit olabileceğini göstereceğim. Kodda olup bitenleri takip etmek için bir miktar PHP anlayışına ihtiyacınız olacak, ancak kendi şablonunuza kopyalamak ve yapıştırmak çok kolaydır, pratikte hiçbir iş yoktur.
WP_Rewrite'ı anlama
Apache sunucularında mod_rewrite hakkında bilginiz varsa, WordPress yeniden yazma sözdizimini alırsınız. Onların sistemi hala bir üstünde inşa edilmiştir .htaccess dosya, ancak tüm kurallar PHP olarak kodlanmıştır. Bu aslında kendi URL'lerimizi yazmak üzerinde daha fazla kontrol sahibi olduğumuz için süreci biraz daha kolaylaştırıyor..
Konuyla ilgili tonlarca bilgi içerdiği için $ wp_rewrite sınıf sayfasını gözden geçirmenizi tavsiye ederim. Her şeyin anlaşılmasını kolaylaştırmak için başvurabileceğimiz küçük örnekler bile var. Kodun çoğu doğrudan temanızın içine yazılabilir. functions.php dosya. WordPress'in içerdiği varsayılan yeniden yazmalara bakarak başlayalım.
$ Wp_rewrite-> kurallarının içeriği
İlan ederek $ wp_rewrite
Global olarak sınıf, tüm iç verilere erişebiliyoruz. Kendi kurallarınızı eklemeye gittiğinizde, bunlar isimleri içeren bir diziye eklenir. $ Wp_rewrite-> kurallar
. Geliştirme sırasında verilere birçok kez başvurmanız gerekeceğinden, bu değişkeni hatırlamak önemlidir..
Kurallar); ?>
Bu kod bloğunu temanın içine ekledim page.php dosya. Büyük bir karışıklığa benzeyen çok sayıda veriyi çıktıracak. Ama eğer sen Kaynağı Görüntüle sayfanızda, hangi yeniden yazma kurallarının hangi dosya adına uyduğunu görmek gerçekten kolaydır. Örneğin, kategori tekrar yazma kurallarına bakalım:
[category /(.+?)/?$] => index.php? category_name = $, [1] ile eşleşiyor
Parantez içindeki sol taraftaki bit, aramak için Apache RewriteRule'ümüzdür. Bölüm ile başlayan /kategori/ ardından herhangi bir karakter dizesini takip edin. Eğer bu eşleşirse, sunucu referans vermeyi bilir index.php? category_name =
uçtaki değişkeni değiştirirken.
Özel Kalıcı Bağlantıları Ayarlama
Yalnızca $ wp_rewrite sınıfında geçilecek çok fazla içerik var. Gibi birçok başka özellik başvurulabilir $ Wp_rewrite-> category_base
veya $ Wp_rewrite-> author_base
bu sayfalar için varsayılan URL yapılarını çekmek için. Ancak WP’nin varsayılan ayarlarını çıkarmanın yanı sıra kendi kurallarımızı da oluşturabiliriz..
Yazar Tabanını Yeniden İnşa Etmek
Permalinks ayarları sayfasına girdiğinizde, kategori ve etiket tabanlarını sıfırlama seçeneğiniz vardır. Ancak yazar tabanınızı sıfırlama seçeneği garip bir şekilde eksik.
Ama kullanabiliriz add_rewrite_rule ()
bazı yeni ayarları entegre etmek için WordPress'in kodeksinden. Bu durumda değiştirdim /yazar/ ile /yazar/ ama ne istersen tabanını kullanabilirsin. Ek olarak, yazar sayfaları ve RSS beslemeleri için diğer yönlendirmeleri de kopyaladım. Bu kod bloğunu temanın functions.php dosyasına ekleyebilirsiniz..
add_action ('init', 'add_author_rules'); add_author_rules () add_rewrite_rule ("yazar / ([^ /] +) /?", "index.php? author_name = $, [1]", "top" ile eşleşir); add_rewrite_rule ("yazar / ([^ /] +) / sayfa /? ([0-9] 1,) /?", "index.php? author_name = $ eşleşir [1] & paged = $ eşleşir [2] ", "üst"); add_rewrite_rule ("yazar / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ eşleşiyor [1] & feed = $ eşleşiyor [2]", " üst"); add_rewrite_rule ("yazar / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ eşleşiyor [1] & feed = $ eşleşiyor [2]" , "üst");
Bu işleve $ wp_rewrite değişkenini kullanmadan bile erişilebilir. Bazı geliştiriciler bu yöntemi sever çünkü sınıf özelliklerine göre kodlamaktan daha basittir. Ancak, bu yöntemin bazı WordPress kurulumları için her zaman güvenilir olmadığını da farkettim. .Htaccess adresinizi temizledikten sonra kancaya bu kuralları eklemeniz için ikinci bir seçenek var (aşağıya bakınız).
Construc_rewrite_rules kullanarak Yazar Bankası
Bu yöntem için yazarken yine global $ wp_rewrite sınıfına ihtiyacımız olacak. Daha sonra adında yeni bir değişken kurdum $ new_rules
hangi bir ilişkisel veri dizisini içerir. Aşağıdaki örnek kodum sadece temel yazar sayfası bölümü için yeniden yazıyor.
function develop_author_rewrite_rules () global $ wp_rewrite; $ new_rules = dizi ("yazar / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;
Ancak birden fazla sayfa ve RSS beslemeleri eklemek istiyorsak diziyi hızlandırabiliriz. Biraz fazla karmaşık olabilen ilişkisel dizi verilerini zorlamak için bir PHP işlevi oluşturma seçeneğiniz vardır. Ayrıca veri bloklarını dizgide ayrı varlıklar olarak hareket ederek virgüllerle bölebiliriz. Güncellenen kodum- da yine function.php tema dosyasına yazılmış bir göz atın.
function develop_author_rewrite_rules () global $ wp_rewrite; $ new_rules = dizi ("yazar / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "yazar / ([^ /] +) / sayfa /? ([0-9] 1,) /? "=>" İndex.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "yazar / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;
Sadece bu yeniden yazma yöntemlerinin hiçbirinin orijinal yeniden yazma kurallarını çözene kadar işe yaramayacağını unutmayın. Bu işlevlerde değişiklik yaptığınız zaman bunu yapmak zorunda kalacaksınız, ancak daha sonra yeni kurallarınız süresiz olarak geçerli olacak.
Yeniden Yazma Kurallarını Temizleme
URL yeniden yazma kodunda güncelleme yaptığınızda, değişiklikler hemen uygulanmaz. .Htaccess yeniden yazma kurallarını temizlemeniz gerekir, böylece yeni kodunuz eklenecektir. Bununla birlikte, bunu her sayfada başlatmak, veritabanına yazdığı ve .htaccess dosyasını yenilediği için oldukça zararlıdır..
Yönetici panelinde bulunan kalıcı bağlantı sayfanıza erişmek ve değişiklikleri yeniden kaydetmek daha iyi bir yöntemdir. Bu her zaman bir flush_rewrite_rules öğesini çağırır, böylece öndeki yükleme sorunları yaşayan kullanıcılar hakkında endişelenmenize gerek kalmaz. Sayfayı yeniden kaydetmek ve sisteminizdeki tüm kuralları güncellemek sadece bir kez alır. Ancak bu işe yaramazsa aramayı deneyebilirsiniz $ Wp_rewrite-> flush_rules ();
WP olmayan kuralları kullanma
İçinde $ wp_rewrite
sınıf onlarca özelliğe erişimimiz var. En önemli seçeneklerden biri $ Wp_rewrite-> non_wp_rules
Bu index.php dosyasına ulaşmayan bir dizi yönlendirmeyi toplar..
Bu aslında WordPress eklentisinin geliştirilmesinde en sık kullanılanıdır. Belirli bir özel URL türünü (örneğin / Takvim / Haziran-2012 /
) web sitenizin arka ucuna (/wp-content/plugins/calendarplug/myscript.php
). Fakat elbette, bu ilişkisel eklenti dışındaki özel yeniden yazma kuralları dizisinin başka kullanımları da var. Aşağıdaki bağlamda mükemmel bir örnek verdim.
Tema Dosyalarınızı Maskeleme
Bu, WordPress tartışma panolarında sıkça gördüğüm yaygın bir öneridir. İdeal olarak, içindeki bazı dosyalara referans vermek isteriz. / Wp-content / themes / Mytheme /
daha şık bir URL'ye sahip klasör. Bunun, dizin yapısını değiştirmek için farklı bir WordPress kümesi yeniden yazması gerektirdiğine dikkat edin.
WordPress'in dahili yeniden yazma sistemi, içeriği her zaman tek bir yönlendirme dosyasına doğru iter. Varsayılan durumda, herhangi bir ekstra sorgu dizesi verisiyle birlikte index.php dosyasını kullanırız. Ancak standart şablon dizinimizi gizlemek için (/ Wp-content / themes / Mytheme / *
) birçok farklı dosyayı görüntülememiz gerekecek.
add_action ('construc_rewrite_rules', 'themes_dir_add_rewrites'); function themes_dir_add_rewrites () $ theme_name = next (patlayabilir ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = dizi ('css /(.*)' => 'wp-content / themes /'. $ tema_adı. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' görüntüler / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ tema_adı.' / görüntüler / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;
Yeni bir fonksiyon yazdım themes_dir_add_rewrites ()
tüm ana içeriği bu daha uzun URL’lerden çekmek ve arka uçlarına yeniden yönlendirmek için. Bu adlı $ wp_rewrite sınıfının bu diğer gizemli özelliğini kullandığımıza dikkat edin non_wp_rules
. Belgelere göre, bunlar WP'nin index.php dosyasına yönlendirmeyen ve sunucu tarafından ele alınacak kurallardır..
Bu WP dışı kuralların harika yanı, eski URL yöntemini oldukça kolay bir şekilde yönetebilmenizdir. Bağlanmanı engelleyen hiçbir şey yok:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Ancak başvurabilirsiniz eğer çok daha güzel görünüyor:
/images/wordpress-urls-rewrite/logo.jpg
yerine.
Faydalı Araçlar ve Eklentiler
Kendi güzel URL'lerinizi kodlamanız durumunda, kullanabileceğiniz birkaç araç var. Süreci kavramak çok zor, bu yüzden birkaç hafta boyunca mücadele ediyorsanız cesaretiniz kırılmasın. Uygulamaya daha fazla zaman harcadığınızda içeriğin daha kolay olacağını düşünüyorum.
Ancak, başlamak için bu kullanışlı yeniden yazma araçlarını ve eklentilerini inceleyin. Muhtemelen hepsine ihtiyacınız olmayacak ama WP'nin yeniden yazdığı çalışmalarda böyle büyük bir geliştirici tabanı bulmak harika..
Monkeyman Rewrite Analyzer
İlk yeniden yazma kurallarına atladığınızda bu eklenti mutlaka sahip olunması gereken bir şey. Aslında web sitenizin kurallarından hiçbirini değiştirmez - yalnızca kodu test etmenize ve hangi yönlendirmelerin hangi sayfalara gittiğini görmenize izin verir. Herhangi bir özel gönderi türü için özel sorgu değişkenlerini test etmek için bile çalışacaktır.
AskApache RewriteRules Viewer
Bu, kendi kurallarınızı test etmenize izin vermemesi dışında, yukarıdaki eklentiye benzer. Bunun yerine, bu eklenti web sitenizin varsayılan WP kurallarının tümünü ve nereye yönlendirdiklerini gösterecektir. Bu, tüm ana özellikleri içerecektir $ wp_rewrite
kalıcı bağlantı ayarlarınız ve sayfa / kategori / etiket tabanları gibi.
WP htaccess Kontrolü
Burada, yeni sayfa yönlendirmeleri yapmak için farklı kurallar vardır. Eklenti, yazar tabanınız, sayfa tabanlarınız gibi değişkenleri düzenleyebileceğiniz ve hatta kendi özel .htaccess kurallarınızı ekleyebileceğiniz kendi yönetici paneline sahiptir..
Bu yöntem, kendi wp_rewrite kullanarak kendi bina oluşturmaktan farklıdır. Bununla birlikte, web sunucularını gerçekten tanıyan ve doğrudan .htaccess'e yazmakta daha rahat hisseden teknisyenler için daha kolay olabilir.
Kural Testini Yeniden Yaz
Bu aslında bir WordPress eklentisi değil, ancak kesinlikle dosyada tutmak için kullanışlı bir araçtır. .Htaccess dosyanızı düzenlemeden önce yeniden yazma kurallarının üstüne kopyalayabilir ve web siteniz için test edebilirsiniz. Web'de canlı yayınlanmaya başlamadan önce hataları sözdiziminizden çıkarmak için mükemmel bir yöntemdir..
DW Yeniden Yazma
DW Rewrite, kurulumdan hemen sonra 3 benzersiz güzel URL oluşturan çok basit bir eklentidir. Varsayılan olarak, yönetici, giriş ve kayıt bağlantılarını değiştirir / admin
, /oturum aç
, ve /kayıt olmak
sırasıyla.
Birden fazla yazar içeren bir blog için hızlı bir düzeltme yapmanız gerekirse, bu harika olabilir. Özellikle utanç verici şekilde sarılmış WordPress kayıt bağlantısını gizleyecektir (/wp-login.php?action=register
).
Sonuç
Umarım bu eğitim WordPress yeniden yazma hakkında düşünmek için bazı örnekler sağlayabilir. CMS çok popüler ve geliştiriciler hala her gün yeni özellikler üretiyor. Kendi URL’lerinizi kişiselleştirmek çok büyük bir kullanıcı tabanlı işlevselliktir. Web sitenize varsayılan seçeneklerle karşılaştırıldığında kendi benzersiz varlığı ve markasını sunar.
Yeniden yazma kuralları ile ilgili sorun yaşıyorsanız, hasarı geri almak asla zor olmamalıdır. Sadece fonksiyon kodunu silerek ve .htaccess kurallarınızı temizleyerek hiçbir şey değişmemiş gibi görünür. Konuyla ilgili bulabileceğiniz diğer benzer makalelere de dikkat edin. Herhangi bir sorunuz veya yorumunuz varsa, tartışma sonrası bizimle paylaşabilirsiniz..