Hasil saat ini adalah "Kesalahan PHP fatal: Panggil ke fungsi yang tidak terdefinisi wp_get_current_user ()" yang masuk akal, tetapi tidak membantu.
Saya perlu menggunakan $ current_user.
Berikut adalah kode yang saya gunakan saat ini:
$wp->init();
do_action( 'init' ); // Check site status
$file='http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php';
if ( is_multisite() ) {
if ( true !== ( $file = ms_site_check() ) ) {
require( $file );
die();
}
unset($file);
}
// Get the current user's info
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
echo $current_user->user_login;
function paf_uname(){
return $current_user->user_login;
}
$wp->init(); do_action( 'init' ); // Check site status $file='http://taddy.co.uk/wp-admin/wp_includes/pluggable.php'; if ( is_multisite() ) { if ( true !== ( $file = ms_site_check() ) ) { require( $file ); die(); } unset($file); } // Get the current user's info $current_user = wp_get_current_user(); if ( !($current_user instanceof WP_User) ) return; echo $current_user->user_login; function paf_uname(){ return $current_user->user_login; }
Jawaban:
Untuk menambahkan jawaban @ EAMann, Anda harus membungkus
wp_get_current_user()
panggilan Anda (atau panggilan apa pun yang mencoba mengakses fungsi yang ditentukan di dalampluggable.php
) dalam'plugins_loaded'
tindakan.Jadi, jika Anda meletakkan ini di dalam
functions.php
file Anda , lakukan seperti ini:Perhatikan bahwa kami tidak tertarik dengan fungsi yang dikembalikan ini . Kami tertarik ketika fungsi ini mengeksekusi , yaitu, setelah itu
pluggable.php
berkas telah dimuat dan didefinisikan Andawp_get_current_user()
fungsi.Jadi, jangan berharap untuk melakukan apa pun dengan nilai pengembalian untuk fungsi ini. Alih-alih, pertimbangkan fungsi ini sebagai titik awal untuk semua yang ingin Anda lakukan setelah mendapat info pengguna saat ini.
Melakukannya dalam plugin
Demi kelengkapan, inilah cara Anda mengakses fungsi pluggable serupa dari dalam konteks plugin Anda sendiri:
(letakkan ini di dalam file .php di dalam
plugins
folder Anda )Saya telah menggunakan teknik ini dengan sukses untuk jenis plugin "Coming Soon" yang sangat sederhana yang mengarahkan ulang pengguna ke halaman tertentu jika mereka tidak menggunakan login
wp_safe_redirect()
.sumber
plugins_loaded
tindakan untuk menjalankanwp_safe_redirect()
jika halaman admin plugin menghasilkan HTML sebelumheader('Location: …')
memiliki kesempatan untuk menjalankan? Saya mengalami masalah ketika halaman didefinisikan menggunakanadd_menu_page(…)
output WP header (dan konten dan footer) ketika plugin dimuat, jauh sebelumplugins_loaded
dijalankan. Saya ingin memiliki akses ke fungsi di dalampluggable.php
(untuk mengakses data pengguna dan melakukan pengalihan) tetapi ini tampaknya mustahil. Apakah Anda menggunakanadd_menu_page
denganplugins_loaded
?plugins are included
→pluggable.php is included
→'plugins_loaded' is triggered
→'load-{page_hook}' is triggered
→'page_hook' is triggered
Masalahnya adalah Anda mencoba memuat kode secara langsung daripada menggunakan pengait WordPress. WordPress memuat banyak kode dalam urutan tertentu (Anda dapat melihat daftar tindakan yang dipecat dalam permintaan khas di Codex ).
Dengan mencoba memecat kode Anda secara langsung, Anda mengeksekusi sebelum
pluggable.php
dimuat. Dan Anda tidak boleh mencobainclude()
file ini secara langsung. Biarkan WordPress melakukan itu untuk Anda.Alih-alih, tentukan fungsi yang mendapatkan informasi pengguna:
Anda kemudian dapat menggunakan fungsi ini di mana saja dalam tema Anda tanpa masalah. Sebagai contoh:
Jika Anda perlu menggunakan
$current_user
kode lain, pastikan Anda memecat kode itu dengan tindakan WordPress ... jangan panggil secara langsung atau akan dieksekusi sebelum fungsi tersedia.sumber
Sepertinya Anda memuat kode Anda sebelum fungsi tertentu tersedia. Sudahkah Anda mencoba:
sumber
Cukup tambahkan fungsi ini ke file .php plugin Anda
Lalu panggil ke mana saja Anda ingin mendapatkan status login pengguna. Sebagai contoh:
sumber