Saya akan harus menulis skrip untuk menginstal WordPress 3.0.1 yang baru dan menambahkan semua fitur awal untuk sebuah situs web . Ini untuk perusahaan yang memasang banyak situs web serupa dan mereka membutuhkan titik awal standar dalam konfigurasi dan data.
- Saya ingin tahu apakah ada orang lain yang telah melakukan ini dan jika demikian apakah mereka dapat membagikan kode mereka?
Saya membayangkan kita akan mengubah skrip ini setiap kali mereka membuat situs baru sehingga hard-coding baik-baik saja walaupun pada akhirnya (setelah pengalaman yang cukup) saya ingin mengonversinya menjadi plugin.
Inilah daftar tugas-tugas dasar yang saya pikir akan perlu (anggap saya sudah mulai dengan WordPress 3.0.1 yang sudah diinstal dan plugin kustom dan tema khusus saya disalin ke direktori yang sesuai) :
// Create users for the current site
// Delete Hello Dolly Plugin
// Download, Install and Activate repository plugins
// Activate Custom Plugins (assume the plugins are already there)
// Activate Custom Theme
// Delete Hello Post
// Delete Comment on Hello Post
// Create Pages with Starter Content
// Create Initial Custom Post Types with Starter Content
// Create Multiple Menus
// Create Menu Items for those Menus linking to Pages and wp-login.php
// Create Initial Taxonomy Terms
// Set Desired Permalinks Setting
// Set Static Front Page Setting
Itu saja (meskipun saya dapat mengidentifikasi lebih banyak ketika saya masuk ke dalamnya.)
Sekali lagi, saya mencari kode yang hanya bisa saya salin dan modifikasi sehingga saya tidak perlu sendiri mencari tahu semua detail ini (yang tidak sulit, hanya membosankan dan memakan waktu) .
Oh satu hal lagi, saya harus memulainya sekarang jadi semakin cepat semakin baik! :-)
sumber
Create Menus for Custom Pages
? Apakah maksud Anda area menu individual pada beberapa halaman atau apa?Jawaban:
Seperti yang saya sebutkan saya akan segera mulai mengerjakan kebutuhan ini jadi saya membuat kemajuan. Mengingat bahwa saya merobohkan ini, saya pikir yang terbaik adalah mulai mempostingnya. Namun, jika orang lain dapat / akan memposting (sebagian) bagian yang belum saya lakukan, saya akan dengan senang hati membiarkan Anda menyalin apa pun yang telah saya lakukan dan belum memilih jawaban Anda sebagai jawaban terbaik. Sampai saat itu saya akan mulai memposting kode.
Hal Pertama: Sertakan
wp-load.php
:Karena kami membuat file mandiri di root situs web untuk menjalankan inisialisasi yang hanya akan digunakan untuk "bootstrap" sebuah situs (saya namakan milik saya
/my-init.php
), kami mulai dengan memasukkan/wp-load.php
untuk memuat fungsi WordPress API:Menciptakan Pengguna untuk Situs
Kami akan menggunakan
wp_insert_user()
fungsi yang terletak di/wp-includes/registration.php
untuk membuat pengguna kami. File ini tidak dimuat secara default sehingga kami harus memuatnya sendiri dengan panggilan kerequire_once()
.Kami juga akan menggunakan
get_user_by()
fungsi untuk melihat terlebih dahulu apakah pengguna telah dibuat; tidak perlu menjalankan kode dua kali jika belum. CATATAN: Ini adalah pola yang akan mengikuti; misalnya skrip kami tidak boleh menggandakan atau menimpa apa pun jika dipanggil beberapa kali, terutama setelah pengguna menambahkan atau mengubah data untuk salah satu item yang kami rencanakan untuk diinisialisasi.Menghapus Plugin "Hello Dolly"
Untuk menghapus plugin "Hello Dolly" ( maaf Matt ), kami akan menggunakan
delete_plugins()
fungsinya.delete_plugins()
mengharapkan array jalur file yang relatif terhadap/wp-content/includes/
direktori. Untuk plugin Hello Dolly path file hanyahello.php
karena plugin Hello Dolly tidak disimpan dalam direktori itu sendiri tetapi untuk sebagian besar plugin itu akan dalam bentuk{$subdir}\{$filename}.php
; yaitu path file untuk Akismet adalahakismet/akismet.php
.Namun,
delete_plugins()
tidak tersedia sampai kami sudah memasukkan/wp-admin/includes/plugin.php
dan ada juga ketergantungan denganwp-admin/includes/file.php
jadi kamirequire_once()
berdua sebelum menelepondelete_plugins()
. Akhirnya kami menggunakanWP_PLUGIN_DIR
konstan dikombinasikan denganfile_exists()
untuk melihat apakah file plugin utama ada sebelum kami mencoba untuk menghapusnya (tidak masalah jika kami mencoba untuk menghapus file yang hilang, tetapi lebih elegan untuk benar-benar memeriksa dulu dan Anda mungkin perlu tahu caranya untuk beberapa alasan lain) :Perhatikan bahwa kadang-kadang
delete_plugins()
akan gagal karena izin file atau mungkin fakta plugin saat ini diaktifkan atau alasan lain bahwa Anda harus terlebih dahulu menyelesaikannya tetapi untuk kasus penggunaan kami Hello Dolly hilang tanpa perlawanan.Mengunduh, Menginstal, dan Mengaktifkan Plugin Repositori
Saya sebenarnya tidak perlu mengunduh plugin dari repositori sekarang (saya pikir itu akan menyenangkan untuk dimiliki) kita akan membiarkan persyaratan ini meluncur dan mengunjungi kembali nanti.
Mengaktifkan Plugin Anda
Selanjutnya adalah mengaktifkan plugin kustom kami sendiri. Kami berasumsi bahwa kami telah mengunggahnya ke direktori plugin dan yang perlu kita lakukan adalah mengaktifkannya untuk WordPress. ( Catatan : Teknik ini juga akan berfungsi untuk mengaktifkan plugin repositori, itu tidak akan mengunduh dan menginstalnya terlebih dahulu.)
Kami akan menggunakan
activate_plugin()
fungsi yang sukadelete_plugins()
menuntut/wp-admin/includes/plugin.php
untuk dimasukkan tapi tidak perlu/wp-admin/includes/file.php
dalam kasus Anda hanya perlu untuk mengotomatisasi aktivasi dan tidak penghapusan.Kami akan lagi menguji keberadaan (tidak perlu mengaktifkan jika tidak ada, eh?) Dan kami juga akan memverifikasi menggunakan
is_plugin_active()
fungsi bahwa plugin belum diaktifkan. Catatan saya menggunakan beberapa variabel kali ini ($plugin_filepath
dan$plugin_dir
) agar tidak menduplikasi pengidentifikasi plugin berkali-kali.Contoh kami berikut ini mengaktifkan plugin
my-custom-plugin.php
yang terletak dimy-custom-plugin
subdirektori:Mengaktifkan Tema Pilihan Anda
Mengaktifkan tema sedikit lebih mudah daripada menghapus atau mengaktifkan plugin, secara relatif; salah satu fungsi panggilan adalah semua yang diperlukan:
switch_theme()
. Theswitch_theme()
Fungsi menerima dua (2) parameter: Template dan stylesheet . Yah, setidaknya itulah yang dinamai parameter. Anda mungkin lebih akrab dengan istilah Tema Orang Tua dan Tema Anak .Dengan asumsi Anda telah membuat Tema Anak dengan tema TwentyTen default yang datang dengan WordPress menjadi Tema Induk dan Anda menyebutnya "Tema Kustom Saya" dan meletakkannya di
/wp-content/themes/my-custom-theme
direktori, Anda akan mengaktifkan tema Anda menggunakan panggilan ini:Tetapi bagaimana jika itu bukan tema anak? Itu mudah, cukup lewati direktori slug / pengenal tema (yaitu nama subdirektori
/wp-content/themes
yang mengandung tema Anda) sebagai kedua parameter. Dengan asumsi Anda ingin mengaktifkan tema Tematik oleh Ian D Stewart Anda telah memanggilswitch_theme()
seperti ini:Secara pribadi saya pikir itu agak aneh untuk harus melacak kedua detail di sini jadi saya menulis fungsi yang disebut
activate_my_theme()
cek pertama untuk memastikanget_current_theme()
fungsi dan jika tidak mengaktifkannya. Anda hanya perlu memberi tahu itu tema anak (alias "stylesheet") dan mencari tahu tema induk untuk Anda (alias "templat") dengan mengambil detail dariget_theme()
fungsi.Satu hal penting yang harus diperhatikan ; yang
get_theme()
mengharapkan fungsi yang akan lulus nama dari Tema Anak, TIDAK direktori itu slug / tema identifier. (Nama ini berasal dari bagian "Nama Tema:" di headerstyle.css
file tema . Untungnyaget_current_theme()
fungsi mengembalikan nama juga.)Memeriksa header di
style.css
file tema default WordPress Twenty Ten yang kita lihat namanya sebenarnya'Twenty Ten'
:Menghapus Posting "Hello World"
Selanjutnya kita ingin menghapus posting "Hello World" . Anda mungkin telah melihat bahwa @Rarst telah menunjukkan kepada kita bagaimana menggunakan
wp_delete_post()
fungsi yang memang kita butuhkan. Saat ia menjelaskan parameter kedua akan sepenuhnya menghapus pos sebagai kebalikan dari memindahkannya ke tempat sampah dan parameter pertama adalah$post->ID
.Tentu saja akan menyenangkan untuk dapat menentukan siput bukan
$post->ID
dan jadi saya memutuskan untuk menemukan cara untuk melakukan itu. Setelah beberapa spelunking saya menemukan bahwa WordPress memiliki fungsi bernama sayangnyaget_page_by_path()
yang disebut yang sebenarnya memungkinkan kita untuk mencari semua jenis posting dengan siputnya (itu sayangnya dinamai karena Anda mungkin mengabaikannya ketika mencoba menemukan sesuatu yang berfungsi dengan jenis posting selain'page'
.)Sejak kita lewat
get_page_by_path()
konstanta yang didefinisikan oleh WordPress,OBJECT
maka akan kembali kepada kita sebuah tulisan dalam bentuk objek posting. Untuk parameter ketiga yang kami lewati'post'
menunjukkan bahwa kami ingin mencari jenis posting'post'
. Karenaget_page_by_path()
akan mengembalikan objek posting yang kita butuhkan atau kembalinull
jika tidak ada posting yang sesuai dengan siput kita dapat memeriksa keberadaannya dan melakukan pencarian pada saat yang sama:Catatan: Kami dapat menjalankan kode untuk menghapus setiap posting di basis data tetapi jika kami melakukannya, kami tidak akan dapat menjalankan kode ini lagi setelah kami menambahkan posting yang ingin kami simpan dan itu adalah salah satu kendala desain kami.
Berikutnya...
Saya akan terus menambahkan ini ketika saya mencari tahu sampai saya selesai atau sampai orang lain membantu.
sumber
Tetapkan Permalinks yang Diinginkan
Sebuah proyek tema baru (luar biasa) yang saya temui minggu ini yang sangat berfokus pada fungsionalitas HTML5 / CSS3 memiliki skrip 'bootstrap' sendiri untuk membuat beberapa konten boilerplate, menggabungkan pengaturan permalink, mengatur root relatif untuk instalasi situs, dll. Ini fitur dipanggil pada aktivasi tema. Proyek ini disebut Roots dan kode dapat diunduh di sini ; Saya tidak mengambil kredit untuk kode ini. Yang mengatakan, inilah kode untuk auto-set / year / postname sebagai struktur permalink (dan kait aktivasi di bawah ini untuk global $ pagenow dijelaskan di sini: http://foolswisdom.com/wp-activate-theme-actio/ .) .
?>
sumber
Hapus Hello Post (dengan komentar)
wp_delete_post( 1, true );
Langsung dari
wp_delete_post()
dokumen. Parameter kedua nukes sepenuhnya, alih-alih pindah ke tempat sampah.Buat menu
Ini menciptakan menu baru dan menambahkan semua halaman yang ada sebagai item ke dalamnya. Saya tidak yakin itu sepenuhnya benar, saya tidak bisa mendapatkan item menu untuk menunjukkan
Page
label antara lain. Pokoknya otak saya meleleh jadi saya istirahat. Mungkin seseorang akan dapat meningkatkan ini ke sesuatu yang lebih dapat diandalkan.sumber
Jika saya memahaminya dengan baik, Anda menginginkannya untuk instalasi awal - maka saya khawatir pendekatan Anda benar-benar salah.
Jauh lebih baik, lebih mudah dan cara terstandarisasi adalah membuat install.php dan meletakkannya di folder konten-wp - itu secara otomatis dimuat selama instalasi.
Di sana Anda dapat meletakkan fungsi wp_install Anda sendiri (seperti fungsi wordpress sendiri menggunakan if (! Function_exist)) sehingga Anda dapat dengan mudah mengatur opsi Anda, mengaktifkan plugin, mengisi posting awal, kategori, tag, pengguna ...
Opsi kedua mungkin untuk situasi, di mana Anda ingin menghapus wp yang sudah ada (misalnya untuk versi demo disetel setiap mis 30 menit menggunakan cron) - Anda dapat a) memotong basis data dan menggunakan prosedur di atas, atau membuat plugin yang melakukan sama.
sumber
install.php
, dan kedua ada kasus penggunaan lain di manainstall.php
tidak berlaku. Ya,install.php
sudah digunakan tetapi itu tidak mengurus detailnya juga tidak untuk obat mujarab yang Anda maksudkan.Lihatlah skrip instalasi ini. https://github.com/Pravdomil/WP-Quick-Install
Saya mengambil ide-ide Anda dan beberapa kode dan menciptakan sesuatu yang mungkin Anda cari.
Fitur-fiturnya adalah pengaturan basis data, berbagai bahasa, buat pengguna, setel pengaturan situs dasar, hapus plugin dan templat default, unduh instal dan aktifkan plugin dan tema, avatar default, permalinks, halaman depan statis.
Jatuh bebas untuk berkontribusi.
sumber