Vô hiệu hóa thông báo cập nhật cho các plugin riêng lẻ


49

Có cách nào để vô hiệu hóa thông báo cập nhật cho các plugin cụ thể không?

Là một nhà phát triển plugin, tôi có một số plugin được cài đặt trên trang cá nhân của mình bằng phiên bản trung kế svn để thử nghiệm, nhưng các plugin tương tự có sẵn từ trang web plugin. Trong những trường hợp này, WP coi phiên bản mới nhất là phiên bản được xuất bản gần đây nhất và liên tục cố gắng cảnh báo tôi rằng các bản cập nhật có sẵn.

Tôi vẫn muốn xem thông báo về các bản cập nhật trên các plugin khác, nhưng thật bất ngờ khi liên tục bỏ qua Updates (2)thông báo trong tiêu đề!


Chỉ cần mở tệp plugin và thay đổi số phiên bản thành thứ gì đó như
9,9.9

Xin lỗi @Bai Internet nhưng điều đó đã quá hack vì trang web là một kiểm tra svn và plugin đến từ một svn:externaltham chiếu đến mã phát triển plugin. Có một tệp sửa đổi cục bộ trên một máy chủ sản xuất không phải là một lựa chọn. Bộ lọc của Hameedullah hoạt động vì nó được lưu trong kho mã cho trang web.
Caleb

Vâng, tôi đã bỏ lỡ phần về trang web đang chạy trên svn
BaiNET

Bạn cũng có thể chỉ cần sử dụng plugin Vô hiệu hóa Trình quản lý Cập nhật của Websiteguy trên WordPress.org.
Matthew

Câu trả lời:


67

Ví dụ: nếu bạn không muốn Wordpress hiển thị thông báo cập nhật cho akismet, bạn sẽ làm như sau:

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

1
Tôi đã đặt nó ở cuối ./wp-config.php, thay thế đường dẫn tệp plugin và nó đã thực hiện công việc.
Caleb

6
Bạn có thể đặt nó trong hàm.php của chủ đề nếu không thể thì bạn có thể đặt một tệp plugin riêng. Theo quan điểm của tôi, việc đưa nó vào wp-config.php không phải là một ý kiến ​​hay.
Hameedullah Khan

1
Tôi thực sự không muốn chức năng của mình gắn liền với chủ đề và việc thêm một plugin có vẻ giống như một vụ hack giống như việc hack plugin mà tôi có. Bạn có thể giải thích lý do tại sao bạn nghĩ wp-config.php không phải là nơi tốt để đặt các bản hack cấu hình cụ thể của trang web không?
Caleb

Giải pháp rất tốt, hoạt động tốt với tôi trong hàm.php. Thật dễ dàng để thêm nhiều plugin vào danh sách chỉ bằng cách thêm một unset khác () ... Mẹo hay Hameedullah ..
Lars Koudal

2
Đối với những người có cùng nhận xét như @Caleb, hãy tạo trong thư mục wp-content một thư mục mới có tên: mu-pluginsvà tạo một plugin nhỏ mà bạn thả trong phạm vi. Để thêm nó như đã đề cập ở trên bởi một số trong đó wp-config.phplà imho hoàn toàn sai nơi làm.
Charles

31

Câu trả lời của Hameedullah Khan sẽ đưa ra cảnh báo về PHP. Bao gồm mệnh đề if này để kiểm tra để đảm bảo đó là một đối tượng trước khi bỏ đặt phản hồi cho plugin đó.

'Cảnh báo: Cố gắng sửa đổi thuộc tính của phi đối tượng'

Hãy thử điều này để tránh các cảnh báo (mã cho chính tệp plugin):

// remove update notice for forked plugins
function remove_update_notifications($value) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ plugin_basename(__FILE__) ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );

Tôi thích đặt cái này trong plugin thực tế. Vì tôi chỉ từng vô hiệu hóa các bản cập nhật trên một plugin vì tôi đã chỉnh sửa hoặc rẽ nhánh mã và không muốn mất các chỉnh sửa của mình trên một bản cập nhật, nên tôi đã chỉnh sửa plugin và do đó, đừng bận tâm chỉnh sửa nó nữa. Nó giữ cho các chức năng của tôi tập tin sạch hơn một chút. Nhưng nếu bạn muốn bạn có thể đặt nó vào tệp chức năng và một lợi ích cho phương pháp đó là bạn có thể xóa nhiều plugin khỏi các bản cập nhật bằng cách thêm một dòng unset khác cho plugin đó như vậy (mã cho hàm.php):

// remove update notice for forked plugins
function remove_update_notifications( $value ) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ 'hello.php' ] );
        unset( $value->response[ 'akismet/akismet.php' ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );

Thx cho điều này. Tôi gặp vấn đề khi sử dụng mã này trực tiếp trong các plugin, có vẻ ổn khi nó là một plugin nhưng ngay sau khi tôi làm điều đó với các plugin khác (tên diff func) tôi đã mất thông báo cho tất cả các plugin và liên kết "xem chi tiết" cho các plugin wp-repo biến mất. Sử dụng séc của bạn nhưng đặt vào hàm.php của chủ đề của tôi đáng tin cậy hơn mà không bị can thiệp vào thông báo cập nhật cho các plugin khác. Cuối cùng, việc không có trong plugin có lợi ích là không cần plugin đó hoạt động để nó hoạt động. Vô hiệu hóa một plugin với mã này rõ ràng sẽ hiển thị lại thông báo cập nhật.
Philip Ingram

2

Vô hiệu hóa tất cả các thông báo cập nhật với mã

function remove_core_updates(){
        global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,);
    }
    add_filter('pre_site_transient_update_core','remove_core_updates');
    add_filter('pre_site_transient_update_plugins','remove_core_updates');
    add_filter('pre_site_transient_update_themes','remove_core_updates');

Mã sẽ vô hiệu hóa thông báo cập nhật cho lõi, plugin và chủ đề của WordPress.


"các plugin riêng lẻ" là chìa khóa
Gangesh

@Gangesh, tôi nghĩ rằng anh ấy muốn tắt một số thông báo cụ thể của plugin
Siêu mẫu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.