Saya memperbarui salah satu plugin saya dan saya sedikit macet dengan fungsi yang sudah usang.
Awalnya, plugin saya memiliki variabel global dan kelas utama plugin adalah instantiated dan disimpan dalam variabel global. Dengan cara ini pengguna dapat menggunakan fungsi global untuk mengakses di kelas plugin.
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
Kemudian, misalnya, dalam FAQ saya, saya memiliki kode yang menunjukkan cara menghapus salah satu fungsi kelas saya dari hook tertentu dan menambahkan ke hook yang berbeda:
function move_input(){
global $my_custom_plugin;
remove_action( 'before_main_content', array( $my_custom_plugin, 'display_input') );
add_action( 'after_main_content', array( $my_custom_plugin, 'display_input' ) );
}
add_action( 'wp_head' , 'move_input' );
Sekarang, dalam pembaruan saya display_input()
fungsi telah dipindahkan ke kelas lain dan saya ingin memberi tahu orang-orang bagaimana cara mengaksesnya. Saya mencoba mengganti fungsi asli (di kelas plugin utama) dengan pemberitahuan penghentian berikut:
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
Namun, fungsi add_action
dan remove_action
sepertinya tidak memicu pemberitahuan penghentian. Anehnya, menghapus fungsi sepenuhnya tidak menyebabkan kesalahan baik meskipun array( $my_custom_plugin, 'display_input')
tidak ada.
Jika seseorang mencoba mengakses fungsi secara langsung:
$my_custom_plugin->display_input();
Lalu saya melihat pemberitahuan debug. Apakah ini hasil yang diharapkan _deprecated_function()
? atau aku melewatkan sesuatu? Apakah mungkin untuk menampilkan pemberitahuan debug ketika seseorang mencoba untuk menghapus atau menambahkan tindakan menggunakan fungsi yang sudah usang?
Memperbarui
Saya menyadari bahwa saya tidak melihat pesan debug add_action
karena saya menambahkannya cukup rendah pada halaman. #Telapak tangan! Namun, saya masih belum melihat pemberitahuan debug untuk remove_action
.
add_action()
sebenarnya ada di sana. remove_action()
tidak bisa ditangani seperti itu.
call_user_func(function(){trigger_error('hello?');});
Pekerjaan yang menarik , tetapi gagal dalam panggilan balik yang terdaftar per add_action.