Tôi đang cập nhật một trong các plugin của mình và tôi hơi bị mắc kẹt với các chức năng không dùng nữa.
Ban đầu, plugin của tôi có một biến toàn cục và lớp chính của plugin đã được khởi tạo và lưu trữ trong biến toàn cục. Bằng cách này, người dùng có thể sử dụng toàn cầu để truy cập các chức năng trong lớp plugin.
$GLOBALS['my_custom_plugin'] = new my_custom_plugin();
Sau đó, ví dụ, trong Câu hỏi thường gặp của tôi, tôi có mã chỉ ra cách loại bỏ một trong các hàm của lớp khỏi một hook cụ thể và thêm vào một hook khác:
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' );
Bây giờ, trong bản cập nhật của tôi, display_input()
chức năng đã được chuyển sang một lớp khác và tôi muốn cho mọi người biết cách truy cập nó. Tôi đã thử thay thế chức năng ban đầu (trong lớp plugin chính) bằng thông báo phản đối sau:
public function display_input() {
_deprecated_function( 'display_price', '2.0', 'my_custom_plugin()->display->display_input' );
return $this->display->display_input();
}
Tuy nhiên, add_action
và các remove_action
chức năng dường như không kích hoạt thông báo khấu hao. Thật kỳ lạ, loại bỏ hoàn toàn chức năng không gây ra lỗi dù array( $my_custom_plugin, 'display_input')
không tồn tại.
Nếu ai đó cố gắng truy cập chức năng trực tiếp:
$my_custom_plugin->display_input();
Sau đó, tôi thấy các thông báo gỡ lỗi. Đây có phải là kết quả mong đợi cho _deprecated_function()
? hoặc tôi đang thiếu một cái gì đó? Có thể hiển thị thông báo gỡ lỗi khi ai đó cố gắng xóa hoặc thêm một hành động bằng cách sử dụng chức năng không dùng nữa không?
Cập nhật
Tôi nhận ra rằng tôi chỉ đơn giản là không thấy thông báo gỡ lỗi add_action
vì tôi đã thêm nó khá thấp trên trang. #facepalm! Tuy nhiên, tôi vẫn không thấy bất kỳ thông báo gỡ lỗi nào cho remove_action
.
add_action()
đã thực sự ở đó. remove_action()
không thể bị xử lý như thế.
call_user_func(function(){trigger_error('hello?');});
động thú vị , nhưng nó thất bại trong một cuộc gọi lại được đăng ký cho mỗi add_action.