Menulis URL dalam Tips WordPress dan Plugin
Kemas kini terbaru ke WordPress telah membenarkan pembangun menyesuaikan laman web peribadi mereka dengan cepat. Ia mudah untuk mengemaskini bidang tema anda, menggantikan widget di bar sisi, dan juga menulis fungsi kod PHP tersuai anda sendiri. Hutan itu besar - dan satu bidang populariti menulis semula permalink URL cantik.
Terdapat beberapa kaedah yang boleh anda gunakan untuk mengemas kini sistem penulisan semula WordPress lalai. Dalam tutorial ini, saya akan berkongsi beberapa contoh dan menunjukkan betapa mudahnya proses tersebut. Anda akan memerlukan sedikit pemahaman tentang PHP untuk mengikuti apa yang sedang berlaku dalam kod, tetapi sangat mudah untuk menyalin dan menempel pada templat anda sendiri, ada praktikalnya tiada kerja yang terlibat.
Memahami WP_Rewrite
Jika anda biasa mengenali mod_rewrite pada pelayan Apache maka anda akan mengambil sintaks menulis semula WordPress. Sistem mereka masih dibina di atas .htaccess fail, tetapi semua peraturan dikodkan dalam PHP. Ini sebenarnya membuat proses agak mudah kerana kami mempunyai lebih banyak kawalan untuk menulis URL kami sendiri.
Saya mencadangkan skimming halaman kelas $ wp_rewrite kerana ia mempunyai banyak maklumat mengenai subjek. Terdapat juga contoh-contoh kecil yang boleh kita rujuk untuk membuat segala-galanya lebih mudah difahami. Kebanyakan kod boleh ditulis terus ke tema anda functions.php fail. Mari mulakan dengan melihat penulisan semula lalai yang sudah disertakan dengan WordPress.
Kandungan $ wp_rewrite-> peraturan
Dengan mengisytiharkan $ wp_rewrite
kelas sebagai global kita mempunyai akses kepada semua data dalaman. Apabila anda pergi untuk menambahkan peraturan anda sendiri, ini akan ditambah ke dalam array dengan nama itu $ wp_rewrite-> peraturan
. Penting untuk mengingati pembolehubah ini kerana anda mungkin perlu merujuk data berkali-kali semasa pembangunan.
peraturan); ?>
Saya menambah blok kod ini ke dalam tema saya page.php fail. Ia akan mengeluarkan sejumlah besar data yang kelihatan seperti kekacauan besar. Tetapi jika anda Lihat sumber pada halaman anda, sebenarnya mudah untuk melihat peraturan menulis semula yang dipadankan dengan nama fail mana. Sebagai contoh, mari lihat peraturan untuk menulis semula kategori:
[kategori /(.??)/?$] => index.php? category_name = $ matches [1]
Sedikit di sebelah kiri dalam kurungan adalah Apache RewriteRule kami untuk mencari. Bermula dengan bahagian itu / kategori / diikuti dengan sebarang aksara. Sekiranya ini dipadankan maka pelayan tahu untuk rujukan index.php? category_name =
sementara menggantikan pemboleh ubah pada akhir.
Menetapkan Permalink Custom
Terdapat banyak kandungan untuk pergi ke dalam kelas $ wp_rewrite sahaja. Banyak hartanah lain boleh dirujuk, seperti $ wp_rewrite-> category_base
atau $ wp_rewrite-> author_base
untuk menarik struktur URL lalai untuk halaman ini. Tetapi selain daripada menarik tetapan lalai WP kita juga boleh membina peraturan kita sendiri.
Membina semula Pangkalan Pengarang
Apabila anda memasukkan halaman tetapan Permalinks, anda mempunyai pilihan untuk menetapkan semula kategori dan pangkalan tag. Walau bagaimanapun pilihan untuk menetapkan semula pangkalan pengarang anda adalah pelik hilang.
Tetapi kita boleh gunakan add_rewrite_rule ()
dari WordPress 'codex untuk mengintegrasikan beberapa tetapan baru. Dalam kes ini saya telah diganti / penulis / dengan / penulis / tetapi anda boleh menggunakan apa sahaja asas yang anda suka. Di samping itu, saya telah menyalin beberapa pelencongan lain untuk halaman pengarang dan suapan RSS. Anda boleh menambah blok kod ini ke dalam fail functions.php tema anda.
add_action ('init', 'add_author_rules'); fungsi add_author_rules () add_rewrite_rule ("penulis / ([^ /] +) /?", "index.php? author_name = $ matches [1]", "top"); add_rewrite_rule ("penulis / ([^ /] +) / halaman /? ([0-9] 1,) /?", "index.php? author_name = $ matches [1] & paged = "," atas "); add_rewrite_rule ("penulis / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = atas "); add_rewrite_rule ("penulis / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = , "puncak");
Fungsi ini boleh diakses walaupun tanpa menggunakan pembolehubah $ wp_rewrite. Sesetengah pemaju seperti kaedah ini kerana ia lebih mudah daripada pengekodan keras dengan sifat kelas. Walau bagaimanapun saya juga perhatikan kaedah ini tidak boleh dipercayai untuk beberapa pemasangan WordPress. Sebenarnya terdapat pilihan kedua untuk menambah peraturan ini di cangkuk setelah mencuci .htaccess anda (lihat di bawah).
Pangkalan Pengarang menggunakan generate_rewrite_rules
Menulis untuk kaedah ini kita sekali lagi memerlukan kelas $ wp_rewrite global. Saya kemudian membuat persediaan pembolehubah baru bernama $ new_rules
yang mengandungi pelbagai data bersekutu. Kod contoh saya di bawah hanya menulis semula untuk seksyen halaman pengarang asas.
fungsi generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("penulis / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;
Tetapi jika kita mahu memasukkan beberapa halaman dan suapan RSS, kita boleh meningkatkan array. Anda mempunyai pilihan untuk mencipta fungsi PHP untuk mendorong data array bersekutu yang mungkin sedikit rumit. Kita juga boleh membahagi blok data melalui koma, berkelakuan sebagai entiti yang berasingan dalam array. Lihat kod dikemas kini lagi dalam fail tema functions.php.
fungsi generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1) /? "[>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2) "penulis / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "penulis / ([^ /] +) / feed / (suapan | 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;
Ingatlah bahawa kedua-dua kaedah ini tidak akan berfungsi sehingga selepas anda membuat peraturan penulisan semula asal. Anda perlu melakukan ini bila-bila masa anda membuat perubahan pada fungsi-fungsi ini, tetapi selepas itu peraturan-peraturan baru anda akan tetap berlaku selama-lamanya.
Menurun Peraturan Rewrite
Setiap kali anda membuat kemas kini ke kod penulisan semula URL, perubahan itu tidak digunakan dengan serta-merta. Anda perlu menyusun peraturan penulisan .htaccess supaya kod baru anda akan ditambah. Bagaimanapun melakukan ini pada setiap halaman init sangat membazir kerana ia menulis ke database dan hard-refresh file .htaccess.
Kaedah yang lebih baik adalah untuk mengakses halaman permalink anda di panel admin dan menyimpan semula perubahan. Ini sentiasa memanggil flush_rewrite_rules supaya anda tidak perlu bimbang tentang pengguna di frontend yang mengalami masalah pemuatan. Dan hanya perlu satu kali untuk menyimpan semula halaman dan mengemas kini semua peraturan dalam sistem anda. Tetapi jika ini tidak berfungsi, anda boleh cuba memanggil $ wp_rewrite-> flush_rules ();
Menggunakan Peraturan bukan WP
Di dalam $ wp_rewrite
kelas kita mempunyai akses kepada berpuluh-puluh hartanah. Salah satu pilihan yang lebih penting ialah $ wp_rewrite-> non_wp_rules
yang mengumpulkan pelbagai pengalihan yang tidak memukul fail index.php.
Ini sebenarnya digunakan paling sering dalam pembangunan plugin Wordpress. Anda boleh menolak jenis URL tersuai khusus (seperti / kalendar / june-2012 /
) ke bahagian belakang laman web anda (/wp-content/plugins/calendarplug/myscript.php
). Tetapi sudah tentu terdapat kegunaan lanjut untuk peraturan penyusunan semula adat yang bersekutu ini selain dari plugin. Saya telah memberikan contoh yang sangat baik dalam konteks di bawah.
Masking Fail Tema anda
Ini adalah cadangan biasa yang sering saya jumpai di papan perbincangan WordPress. Sebaiknya kami merujuk beberapa fail di dalamnya / wp-content / themes / mytheme /
folder dengan URL yang lebih elegan. Perhatikan bahawa ini akan memerlukan satu set penulisan WordPress yang berbeza untuk mengubah struktur direktori.
Sistem penulisan semula dalaman WordPress sentiasa mendorong kandungan ke fail penghalaan tunggal. Dalam kes lalai, kita menggunakan index.php bersama-sama dengan sebarang data rentetan pertanyaan tambahan. Tetapi untuk menyembunyikan direktori templat piawai kami (/ wp-content / themes / mytheme / *
) kita perlu memaparkan banyak fail berbeza.
add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); fungsi themes_dir_add_rewrites () $ theme_name = next (meledak ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; = new 'wp-content / themes / / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;
Saya telah menulis satu fungsi baru themes_dir_add_rewrites ()
untuk menarik semua kandungan utama dari URL yang lebih lama ini dan alihkannya ke dalam backend. Perhatikan bahawa kami menggunakan harta misteri yang lain dari kelas $ wp_rewrite bernama non_wp_rules
. Menurut dokumen, ini adalah peraturan yang tidak diarahkan ke fail index.php WP dan akan ditangani pada hujung pelayan.
Apa yang hebat tentang peraturan bukan WP ini ialah anda masih boleh mengurus kaedah URL lama dengan mudah. Tiada apa-apa yang menghalang anda daripada memaut kepada:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Tetapi ia kelihatan jauh lebih baik jika anda boleh merujuk:
/images/wordpress-urls-rewrite/logo.jpg
sebaliknya.
Alat & Plugin yang berguna
Terdapat beberapa alat yang boleh anda gunakan jika anda tersekat dengan pengekodan URL cantik anda sendiri. Proses ini sangat sukar untuk dijangkiti, jadi jangan berkecil hati jika anda sedang berjuang selama beberapa minggu. Saya rasa kandungan akan lebih mudah apabila anda meluangkan lebih banyak masa berlatih.
Tetapi untuk memulakan periksa beberapa alat tulis & plugin yang berguna ini. Anda mungkin tidak memerlukan mereka semua tetapi sangat bagus untuk mencari asas pemaju yang besar yang bekerja di sekitar penulisan WP.
Monkeyman Rewrite Analyzer
Apabila pertama melompat ke dalam peraturan penulisan semula, plugin ini mesti dimiliki. Ia sebenarnya tidak mengubah mana-mana peraturan untuk tapak web anda - ia hanya membolehkan anda untuk menguji kod dan melihat pengalihan ke halaman mana. Ia juga akan berfungsi untuk menguji pemboleh ubah pertanyaan adat untuk sebarang jenis pos adat.
AskApache RewriteRules Viewer
Ini sama dengan plugin di atas kecuali ia tidak membenarkan anda menguji peraturan anda sendiri. Sebaliknya plugin ini akan memaparkan semua peraturan WP lalai laman web anda dan di mana mereka mengarahkan semula. Ini termasuk semua ciri utama $ wp_rewrite
seperti tetapan permalink dan pangkalan halaman / kategori / tag anda.
Kawalan WP htaccess
Di sini anda mempunyai satu set peraturan yang berbeza untuk membuat pengalihan halaman baharu. Plugin ini mempunyai panel pentadbir sendiri di mana anda boleh mengedit pembolehubah seperti pangkalan pengarang anda, pangkalan halaman, dan bahkan memasukkan peraturan htaccess tersuai anda sendiri..
Kaedah ini berbeza berbanding dengan membina sendiri menggunakan wp_rewrite. Walau bagaimanapun, ia mungkin lebih mudah untuk para teknisi yang benar-benar mengetahui pelayan web dan berasa lebih selesa menulis terus ke .htaccess.
Penguji Peraturan Rewrite
Ini sebenarnya bukan plugin WordPress, tetapi pastinya alat yang berguna untuk menyimpan fail. Anda boleh menyalin peraturan peraturan menulis semula dan menguji mereka untuk laman web anda tanpa mengedit fail .htaccess anda. Ini adalah kaedah yang sempurna untuk mengeluarkan bug dari sintaks anda sebelum melancarkan secara langsung di Web.
DW ReWrite
DW Rewrite adalah plugin yang sangat mudah yang mewujudkan 3 URL cantik yang unik sebaik sahaja pemasangan. Secara lalai ia akan mengubah admin, login, dan pautan pendaftaran kepada / admin
, /log masuk
, dan / mendaftar
masing-masing.
Ini boleh menjadi hebat jika anda memerlukan pembetulan cepat untuk blog yang mempunyai pelbagai penulis. Ia secara khusus akan menyembunyikan pautan pendaftaran WordPress yang memalukan/wp-login.php?action=register
).
Kesimpulannya
Saya harap tutorial ini dapat memberikan beberapa contoh untuk membuat anda berfikir tentang menulis semula WordPress. CMS sangat popular dan pemaju masih menghasilkan ciri-ciri baru setiap hari. Menyesuaikan URL anda sendiri adalah satu-satunya fungsi fungsian berasaskan pengguna. Ia memberikan laman web anda kehadiran dan penjenamaan uniknya sendiri berbanding pilihan lalai.
Jika anda menghadapi masalah dengan peraturan menulis semula, janganlah sukar untuk membatalkan kerosakan. Dengan hanya memadam kod fungsi dan memadamkan peraturan .htaccess anda akan kelihatan seperti tiada perubahan. Pastikan anda menyemak beberapa artikel sejenis yang anda boleh temui dalam topik ini. Dan jika anda mempunyai sebarang pertanyaan atau komen anda boleh berkongsi dengan kami di kawasan perbincangan pos.