Saya ingin mengubah $ path di filter berikut. Ini memiliki 1 input dan 2 argumen.
function documents_template( $template = '' ) {
$path = DOCUMENTS_INCLUDES_DIR . '/document/' . $template;
return apply_filters( 'document_template', $path, $template );
}
Ini adalah fungsi saya untuk menambahkan filter, mendapat pesan kesalahan, bagaimana cara memperbaikinya?
function my_template( $template = '' ){
$path = MY_INCLUDES_DIR . '/document/'. $template;
return $path;
}
add_filter( 'document_template','my_template', 10, 2 );
Saya mencoba mengubah nilai pengembalian sebagai berikut, tidak berfungsi:
return apply_filters( 'my_template', $path, $template);
Dengan jawaban di bawah ini, filter baru saya masih tidak berfungsi, jadi, mungkin itu karena filter saya ada di kelas? ini kode yang sama sekali baru:
Class My_Class{
function __construct() {
add_filter( 'document_template', array( $this, 'my_template',10, 2 ) );
}
function my_template( $path, $template ){
$path = MY_INCLUDES_DIR . '/document/'. $template;
return $path;
}
}
Ini harus cocok, tetapi jangan:
dan
document_template
! =documents_template
Kalau tidak, semuanya terlihat benar.
Edit
Tunggu, tidak semuanya terlihat benar. Saya tidak berpikir Anda ingin menambahkan parameter ke definisi fungsi panggilan balik Anda. Sebagai gantinya, Anda perlu mendefinisikan
$template
dalam callback, atau hanya mengirimkannya kembali tanpa dimodifikasi. Jadi, ganti ini:...dengan ini:
misalnya:
Edit 2
Oke, kesalahan kecil di pihak saya. Coba ini sebagai panggilan balik Anda:
sumber