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:
<?php
include "wp-load.php";
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 ke require_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.
require_once( ABSPATH . WPINC . '/registration.php');
$user = get_user_by('slug','johnsmith');
if (!is_object($user)) {
wp_insert_user(array(
'user_login' => 'johnsmith',
'role' => 'administrator',
'user_email' => 'johnsmith@example.com',
'user_url' => 'http://example.com',
'first_name' => 'John',
'last_name' => 'Smith',
'comment_shortcuts' => '',
'use_ssl' => '0',
'user_pass' => '12345',
));
}
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 hanya hello.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 adalah akismet/akismet.php
.
Namun, delete_plugins()
tidak tersedia sampai kami sudah memasukkan /wp-admin/includes/plugin.php
dan ada juga ketergantungan dengan wp-admin/includes/file.php
jadi kami require_once()
berdua sebelum menelepon delete_plugins()
. Akhirnya kami menggunakan WP_PLUGIN_DIR
konstan dikombinasikan dengan file_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) :
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
if (file_exists(WP_PLUGIN_DIR . '/hello.php'))
delete_plugins(array('hello.php'));
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 suka delete_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 di my-custom-plugin
subdirektori:
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
$plugin_filepath = 'my-custom-plugin/my-custom-plugin.php';
$plugin_dir = WP_PLUGIN_DIR . "/{$plugin_filepath}";
if (file_exists($plugin_dir) && !is_plugin_active($plugin_filepath))
activate_plugin($plugin_filepath);
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()
. The switch_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:
switch_theme('twentyten', 'my-custom-theme');
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 memanggil switch_theme()
seperti ini:
switch_theme('thematic', 'thematic');
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 memastikan get_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 dari get_theme()
fungsi.
activate_my_theme('My Current Theme');
function activate_my_theme($theme_name) {
if ($theme_name!=get_current_theme()) {
$theme = get_theme($theme_name);
switch_theme(
$theme['Template'],
$theme['Stylesheet']
);
}
}
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 header style.css
file tema . Untungnya get_current_theme()
fungsi mengembalikan nama juga.)
Memeriksa header di style.css
file tema default WordPress Twenty Ten yang kita lihat namanya sebenarnya 'Twenty Ten'
:
/*
Theme Name: Twenty Ten
Theme URI: http://wordpress.org/
Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
Author: the WordPress team
Version: 1.1
Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style
*/
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 sayangnya get_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'
. Karena get_page_by_path()
akan mengembalikan objek posting yang kita butuhkan atau kembali null
jika tidak ada posting yang sesuai dengan siput kita dapat memeriksa keberadaannya dan melakukan pencarian pada saat yang sama:
$post = get_page_by_path('hello-world',OBJECT,'post');
if ($post)
wp_delete_post($post->ID,true);
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.
Create Menus for Custom Pages
? Apakah maksud Anda area menu individual pada beberapa halaman atau apa?