Saat ini saya menggunakan aliran umum berikut untuk menambahkan kode pendek untuk sebuah plugin.
class MyPlugin {
private $myvar;
function baztag_func() {
print $this->myvar;
}
}
add_shortcode( 'baztag', array('MyPlugin', 'baztag_func') );
Sekarang ketika kelas ini dan metode itu disebut saya mendapatkan kesalahan berikut.
Kesalahan fatal: Menggunakan $ this saat tidak dalam konteks objek di ...
(Jalur no adalah tempat saya telah mencetak $this->myvar
)
Apakah ini masalah di ujung Wordpress atau ada sesuatu yang saya lakukan salah? Tampaknya menjadi sesuatu yang sangat sederhana.
plugin-development
shortcode
oop
xmaestro
sumber
sumber
static
.Jawaban:
Seperti yang dikatakan kesalahan, Anda memerlukan instance kelas untuk digunakan
$this
. Setidaknya ada tiga kemungkinan:Jadikan semuanya statis
Tapi itu bukan OOP nyata lagi, hanya namespace.
Buat objek nyata terlebih dahulu
Ini bekerja. Tetapi Anda mengalami beberapa masalah yang tidak jelas jika ada yang ingin mengganti kode pendek.
Jadi tambahkan metode untuk memberikan instance kelas:
Sekarang, ketika seseorang ingin mendapatkan objek contoh, ia hanya perlu menulis:
Solusi lama: buat objek di kelas Anda
sumber
NULL === self::$instance and self::$instance = new self;
? Saya agak bingung karena===
danand
digunakan, tetapi tanpaif
, jika Anda tahu apa yang saya maksud.Anda dapat menggunakan seperti ini, kode pendek di dalam Kelas
Jika Anda ingin mengakses konten kode pendek dari kelas lain. Anda bisa melakukan ini.
sumber
Pastikan Anda membuat instance kelas Anda sebelum menggunakannya kecuali Anda yakin itu seharusnya dipanggil secara statis. Ketika Anda memanggil metode secara statis, Anda tidak menggunakan instance apa pun dan karena itu tidak memiliki akses ke variabel atau metode anggota.
sumber