Pengurusan Pengguna WordPress: Analisis mendalam tentang peranan dan keizinan
sistem pengurusan pengguna WordPress adalah berdasarkan peranan dan keizinan. Peranan adalah entiti yang mengandungi nama yang unik dan satu set keizinan, yang masing-masing mentakrifkan tahap akses kepada ciri-ciri khusus platform peranan tersebut. Mari kita menggali mekanisme kerja peranan dan keizinan WordPress.
mata utama
- Pengurusan Pengguna WordPress adalah berdasarkan peranan dan keizinan. Peranan mempunyai nama yang unik dan satu set keizinan yang menentukan tahap akses kepada ciri -ciri yang berbeza dari platform dengan peranan.
- WordPress menyediakan API yang komprehensif untuk menyesuaikan peranan dan keizinan mereka. Fungsi seperti
add_role()
,remove_role()
,add_cap()
, danremove_cap()
boleh digunakan untuk menguruskan peranan dan keizinan. Walau bagaimanapun, anda mesti memberi perhatian kepada akses dan prestasi pangkalan data apabila menggunakan fungsi ini. - Terdapat beberapa cara untuk mengelakkan isu pangkalan data apabila berurusan dengan peranan dan keizinan. Salah satu cara adalah untuk mencetuskan kod hanya apabila plugin diaktifkan, anda boleh menggunakan fungsi
register_activation_hook()
. Cara lain ialah memintas pangkalan data WordPress dengan menetapkan pembolehubah global$wp_user_roles
.
kembali ke mekanisme adegan
Penyimpanan Peranan
Peranan lalai dan senarai kebenaran boleh didapati di WordPress Codex. Pangkalan data
menyimpan senarai ini dalam jadual. wp_options
. wp_user_roles
Data deserialized adalah seperti berikut:
<code>array( 'administrator' => array( 'name' => '管理员', 'capabilities' => array( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, 'edit_plugins' => true, 'edit_users' => true, // [...] ) ), 'contributor' => array( 'name' => '投稿者', 'capabilities' => array( 'delete_pages' => true, 'delete_others_pages' => true, 'delete_published_pages' => true, 'delete_posts' => true, // [...] ) ), // [...] );</code>Metadata ini ditetapkan secara automatik apabila tapak WordPress baru dipasang.
Apabila WordPress bermula, kelas
memuatkan senarai dari pangkalan data.
WP_Roles
Ini berlaku antara cangkuk
. plugins_loaded
init
Pautan pengguna ke peranan
WordPress menggunakan
disimpan dalam jadual untuk menghubungkan pengguna ke peranan mereka. wp_usermeta
meta_key
<code>array( 'administrator' => true )</code>
Juga, ingat
adalah awalan blog semasa.
wp_
(kita boleh menggunakannya menggunakan fungsi
$GLOBALS['wpdb']->get_blog_prefix()
Dalam pemasangan pelbagai tapak, ini membolehkan pengguna menggunakan peranan yang berbeza dalam keadaan yang berbeza:
- = & gt;
-
wp_capabilities
= & gt;a:1:{s:13:"administrator";b:1;}
= & gt;
-
wp_10_capabilities
a:1:{s:11:"contributor";b:1;}
Peraturan ini juga terpakai pada entri - yang kita lihat dalam jadual
wp_15_capabilities
.a:1:{s:10:"subscriber";b:1;}
Akhirnya, kita dapat melihat metadata
wp_user_level
serta peranannya.Ia digunakan untuk berurusan dengan watak -watak dalam versi lama WordPress dan kini ditolak.
Gunakan kebenaran dalam kod teras
Kami telah belajar bagaimana peranan dimuatkan dan dihubungkan dengan pengguna;
Beberapa Kebenaran Lalai adalah Hardcoded dalam Kod Teras WordPress.
Contohnya, apabila skrin plugin dimuatkan, ia akan menyemak sama ada pengguna semasa boleh menguruskan plugin dengan menjalankan kod berikut:<code>array( 'administrator' => array( 'name' => '管理员', 'capabilities' => array( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, 'edit_plugins' => true, 'edit_users' => true, // [...] ) ), 'contributor' => array( 'name' => '投稿者', 'capabilities' => array( 'delete_pages' => true, 'delete_others_pages' => true, 'delete_published_pages' => true, 'delete_posts' => true, // [...] ) ), // [...] );</code>
Peranan tidak pernah dikodkan;current_user_can()
Periksa sama ada pengguna semasa mempunyai keizinan yang diperlukan.<code>array( 'administrator' => true )</code>
Semak sama ada pengguna tertentu mempunyai kebenaran.
WP_User::has_cap
kita dapat melihat bahawa
menggunakan fungsi ini.<code>if (!current_user_can('activate_plugins')) { wp_die(__('您没有足够的权限来管理此站点的插件。')); }</code>
current_user_can
get_editable_roles()
, jadi kita tidak boleh bergantung pada fungsi ini untuk mendapatkan senarai penuh peranan di laman web.
<code>add_action('init', function() { if (current_user_can('install_plugins')) { echo '您可以安装插件'; } else { echo '您不能安装插件'; } });</code>
Sila ambil perhatian penggunaan cangkuk, kerana fungsi itu belum dimuatkan dalam cangkuk
editable_roles
lagi.admin_init
init
GETObjek Berdasarkan slugnya. get_role()
Periksa sama ada peranan mempunyai keizinan yang diperlukan.
WP_Role
<code>add_action('init', function() { $user = get_user_by('slug', 'admin'); if ($user->has_cap('install_plugins')) { echo '管理员可以安装插件'; } else { echo '管理员不能安装插件'; } });</code>
Api CustomWP_Role::has_cap()
WordPress juga menyediakan API lengkap untuk menyesuaikan peranan dan keizinan mereka.<code>add_action('admin_init', function() { $roles = get_editable_roles(); var_dump($roles); });</code>
Daftar peranan baru dalam pangkalan data.Jika hadir, padamkan peranan yang diperlukan dari pangkalan data.
add_role()
<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role); }); // 这将打印: // WP_Role 对象 // ( // [name] => administrator // [capabilities] => Array // ( // [switch_themes] => 1 // [edit_themes] => 1 // [activate_plugins] => 1 // [edit_plugins] => 1 // [...]</code>
Tambah keizinan kepada peranan.remove_role()
,
...) atau mana -mana rentetan tersuai (<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role->has_cap('install_plugins')); // 打印 TRUE });</code>
).WP_Role::add_cap()
Ia membolehkan kami mendaftar sebanyak mungkin kebenaran tersuai untuk plugin kami.<code>add_action('init', function() { add_role('plugins_manager', '插件管理员', array( 'install_plugins', 'activate_plugins', 'edit_plugins' )); });</code>
Jika wujud, padamkan keizinan dari peranan.install_plugins
edit_posts
my_awesome_plugin_cap
Fungsi ini membolehkan anda secara teorinya menetapkan pelbagai peranan untuk pengguna yang sama.
Oleh kerana backend WordPress hanya memaparkan dan menguruskan satu peranan setiap pengguna, kita tidak boleh menambah banyak peranan untuk pengguna dan harus sentiasa menggunakanWP_Role::remove_cap()
sebelum menambah peranan baru.
<code>add_action('init', function() { remove_role('plugins_manager'); });</code>
WP_User::add_role()
Keluarkan peranan dari pengguna yang diberikan.<code>add_action('init', function() { $role = get_role('contributor'); $role->add_cap('install_plugins'); });</code>
Tambah keizinan kepada pengguna yang diberikan.
<code>array( 'administrator' => array( 'name' => '管理员', 'capabilities' => array( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, 'edit_plugins' => true, 'edit_users' => true, // [...] ) ), 'contributor' => array( 'name' => '投稿者', 'capabilities' => array( 'delete_pages' => true, 'delete_others_pages' => true, 'delete_published_pages' => true, 'delete_posts' => true, // [...] ) ), // [...] );</code>
Ini sangat berguna jika kita mahu menambah kebenaran tunggal kepada pengguna tanpa perlu membuat peranan penuh.
WP_User::remove_cap()
<code>array( 'administrator' => true )</code>
Beberapa isu dengan WordPress APIharus kod kita dicetuskan? Untuk menjelaskan ini, mari kita lihat kod teras WordPress.
Pertama, kami ingin menambah watak kosong baru:
<code>if (!current_user_can('activate_plugins')) { wp_die(__('您没有足够的权限来管理此站点的插件。')); }</code>
(sebenarnya diarahkan ke):
Jika kita menambah peranan baru, fungsiadd_role
WP_Roles::add_role
<code>add_action('init', function() { if (current_user_can('install_plugins')) { echo '您可以安装插件'; } else { echo '您不能安装插件'; } });</code>
berjalan sekali dan kemudian tidak melakukan apa -apa.add_role
Seterusnya, katakan kami ingin menambah keizinan kepada peranan kami yang baru dibuat:<code>add_action('init', function() { $user = get_user_by('slug', 'admin'); if ($user->has_cap('install_plugins')) { echo '管理员可以安装插件'; } else { echo '管理员不能安装插件'; } });</code>
dalam WordPress 4.2.2 adalah seperti berikut:WP_Role::add_cap()
<code>add_action('admin_init', function() { $roles = get_editable_roles(); var_dump($roles); });</code>
, tetapi kita juga dapat melihat bahawa pangkalan data akan mengemas kini setiap kali kod kami berjalan, walaupun keizinan baru kami sudah didaftarkan!$this->roles
Ini bermakna jika kita mengambil berat tentang prestasi, semua kod yang kita tulis untuk peranan dan keizinan tersuai tidak boleh dijalankan apabila setiap halaman dimuatkan. PenyelesaianTerdapat beberapa cara untuk mengelakkan masalah pangkalan data ini.
Aktifkan dengan plug-in
WordPress membolehkan penulis plugin menggunakan fungsi
untuk mencetuskan kod apabila plugin diaktifkan di backend.register_activation_hook()
<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role); }); // 这将打印: // WP_Role 对象 // ( // [name] => administrator // [capabilities] => Array // ( // [switch_themes] => 1 // [edit_themes] => 1 // [activate_plugins] => 1 // [edit_plugins] => 1 // [...]</code>
Apa yang berlaku jika plugin sudah dalam pengeluaran, atau jika reaktivasi ditinggalkan apabila kemas kini ditolak?
Malah, penyelesaian ini juga bergantung pada pangkalan data dan memerlukan langkah tambahan apabila menolak kod.
Bypass WordPress Database
Terdapat juga penyelesaian yang tidak didedahkan yang berfungsi dengan baik dalam beberapa kes.
mari kita lihat kod teras WordPress pada akhir, apabila objek
memuatkan peranan dari pangkalan data apabila WordPress bermula:cek WordPress untuk pembolehubah global
WP_Roles
sebelum mendapatkan data dari pangkalan data.<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role->has_cap('install_plugins')); // 打印 TRUE });</code>
Jika ditetapkan, WordPress akan menggunakan kandungannya dan menyekat penggunaan pangkalan data dengan menetapkan pembolehubahkepada palsu.
mari kita cuba, hanya menyimpan peranan pentadbir yang baru dan terhad:$wp_user_roles
$this->use_db
Penyelesaian ini menyelesaikan masalah pangkalan data, tetapi mungkin memperkenalkan beberapa isu lain:
- Plugin menggunakan API asli mungkin tidak berfungsi dengan betul.
- kita perlu menetapkan definisi setiap peranan secara manual, walaupun untuk peranan yang kita tidak mahu berubah.
Walau bagaimanapun, ini mungkin merupakan penyelesaian yang berdaya maju apabila membina aplikasi WordPress tersuai yang memerlukan senarai tersuai peranan statik: - Definisi peranan boleh dikira dengan kod.
- Pusing kod baru ke persekitaran secara automatik akan mengemas kini definisi secara automatik.
- tidak perlu mempertimbangkan isu pangkalan data lagi.
. Fungsi ini menerima tiga parameter: peranan, nama paparan, dan array kebenaran. Sebagai contoh, untuk menambah peranan baru yang dipanggil "custom_role" dan mempunyai kebenaran untuk membaca dan mengedit catatan, anda boleh menggunakan kod berikut:
add_role()
add_role( 'custom_role', __('自定义角色'), array( 'read' => true, // 可以读取帖子 'edit_posts' => true, // 可以编辑帖子 ) );
Bagaimana untuk memadam peranan pengguna di WordPress?Untuk memadam peranan pengguna dalam WordPress, anda boleh menggunakan fungsi
. Fungsi ini menerima satu parameter: peranan. Sebagai contoh, untuk memadam "custom_role" yang telah ditambah sebelum ini, anda boleh menggunakan kod berikut:remove_role()
Bagaimana untuk menambah kebenaran kepada peranan pengguna dalam WordPress?
Untuk menambah kebenaran kepada peranan pengguna dalam WordPress, anda boleh menggunakan fungsiremove_role('custom_role');
. Fungsi ini menerima dua parameter: kebenaran dan nilai boolean yang menunjukkan sama ada peranannya mempunyai kebenaran. Sebagai contoh, untuk menambah kebenaran "Publish_posts" ke "Custom_Role", anda boleh menggunakan kod berikut:
$role = get_role('custom_role'); $role->add_cap('publish_posts', true);
. Fungsi ini menerima parameter: kebenaran. Sebagai contoh, untuk mengeluarkan kebenaran "Publish_posts" dari "Custom_Role", anda boleh menggunakan kod berikut:
remove_cap()
$role = get_role('custom_role'); $role->remove_cap('publish_posts');
Bagaimana untuk menukar peranan pengguna lalai di WordPress?untuk menukar peranan pengguna lalai dalam WordPress, navigasi ke Tetapan & GT; Di bawah peranan lalai pengguna baru, pilih peranan yang ingin anda tetapkan sebagai lalai dari menu lungsur.
Bagaimana untuk menetapkan pelbagai peranan kepada pengguna di WordPress?
WordPress tidak menyokong memberikan pelbagai peranan kepada pengguna secara lalai. Walau bagaimanapun, anda boleh melakukan ini menggunakan plugin seperti pelbagai peranan. Selepas anda memasang dan mengaktifkan plugin, anda boleh menetapkan pelbagai peranan kepada pengguna dari halaman profil pengguna.
Bagaimana untuk mengehadkan akses kandungan berdasarkan peranan pengguna dalam WordPress?
Untuk menyekat akses kandungan berdasarkan peranan pengguna dalam WordPress, anda boleh menggunakan plugin seperti ahli. Plugin ini membolehkan anda mengawal peranan mana yang boleh mengakses kandungan tertentu di laman web anda.
Bagaimana untuk membuat keizinan tersuai di WordPress?
Untuk membuat keizinan tersuai dalam WordPress, anda boleh menggunakan fungsi
. Fungsi ini menerima dua parameter: kebenaran dan nilai boolean yang menunjukkan sama ada peranannya mempunyai kebenaran. Sebagai contoh, untuk menambah kebenaran tersuai bernama "Manage_Custom" kepada "Custom_role", anda boleh menggunakan kod berikut:add_cap()
Bagaimana untuk memeriksa sama ada pengguna di WordPress mempunyai keizinan tertentu?
Untuk memeriksa sama ada pengguna di WordPress mempunyai keizinan tertentu, anda boleh menggunakan fungsi$role = get_role('custom_role'); $role->add_cap('manage_custom', true);
. Fungsi ini menerima parameter: kebenaran. Sebagai contoh, untuk memeriksa sama ada pengguna semasa mempunyai kebenaran "Manage_Custom", anda boleh menggunakan kod berikut:
current_user_can()
Atas ialah kandungan terperinci Menguasai peranan dan keupayaan WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

WordPressisAdvantageousovercodingawebsiteFromScratchdueto: 1) EaseOfuseandFasterDevelopment, 2) flexibilityandscalability, 3) strongCommunitySupport, 4) terbina dalam-inseoandmarketingtools, 5) COST-INSEFECTIFITYS

WordPressisAcmsDuetoitSeSeAfuse, penyesuaian, usermanagement, SEO, dan komandoSupport.1) ITImplifiesContentManagementelmithanintuitiveInterface

Dayakan komen di laman web WordPress anda untuk menyediakan pelawat dengan platform untuk mengambil bahagian dalam perbincangan dan berkongsi maklum balas. Untuk melakukan ini, ikuti langkah -langkah ini: Dayakan komen: Di papan pemuka, navigasi ke Tetapan & GT; Perbincangan, dan pilih kotak semak Comment Comments. Buat borang komen: Dalam editor, klik Tambah Blok dan cari Blok Komen untuk menambahkannya ke kandungan. Borang komen tersuai: Sesuaikan blok komen dengan menetapkan tajuk, label, pemegang tempat, dan teks butang. Simpan Perubahan: Klik Kemas Kini untuk menyimpan kotak komen dan tambahkannya ke halaman atau artikel.

Bagaimana cara menyalin subsite WordPress? Langkah-langkah: Buat sub-tapak di tapak utama. Menglonkan sub-tapak di tapak utama. Import klon ke lokasi sasaran. Kemas kini nama domain (pilihan). Plugin dan tema berasingan.

Langkah -langkah untuk membuat tajuk tersuai di WordPress adalah seperti berikut: Edit fail tema "header.php". Tambahkan nama dan keterangan laman web anda. Buat menu navigasi. Tambah bar carian. Simpan perubahan dan lihat tajuk tersuai anda.

Dayakan komen di laman web WordPress: 1. Log masuk ke panel admin, pergi ke "Tetapan" - "Perbincangan", dan periksa "Benarkan komen"; 2. Pilih lokasi untuk memaparkan komen; 3. Sesuaikan komen; 4. Menguruskan komen, meluluskan, menolak atau memadam; 5. menggunakan & lt ;? php comments_template (); ? & gt; tag untuk memaparkan komen; 6. Membolehkan komen bersarang; 7. Laraskan bentuk komen; 8. Gunakan plugin dan kod pengesahan untuk mengelakkan komen spam; 9. Menggalakkan pengguna menggunakan gravatar avatar; 10. Buat komen untuk dirujuk

Anda boleh memasang pemalam FTP melalui WordPress, konfigurasikan sambungan FTP, dan kemudian muat naik kod sumber menggunakan Pengurus Fail. Langkah-langkah termasuk: memasang pemalam FTP, mengkonfigurasi sambungan, melayari lokasi muat naik, memuat naik fail, dan memeriksa bahawa muat naik berjaya.

Bagaimana cara menyalin kod WordPress? Salin dari antara muka pentadbir: Log masuk ke laman web WordPress, navigasi ke destinasi, pilih kod dan tekan Ctrl C (Windows)/Command C (Mac) untuk menyalin kod. Salin dari fail: Sambung ke pelayan menggunakan SSH atau FTP, navigasi ke fail tema atau plug-in, pilih kod dan tekan Ctrl C (Windows)/Command C (Mac) untuk menyalin kod.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna
