Tắt Tự động cập nhật cho Plugin đơn


10

Tôi có một plugin mà tôi biết tôi không bao giờ muốn cập nhật. Tôi biết rằng đây KHÔNG phải là cách thực hành tốt nhất, nhưng trong trường hợp này nó phải được thực hiện. Có cách nào để ngăn WordPress nhắc tôi tự động cập nhật một plugin cụ thể không (nhưng vẫn cảnh báo như bình thường đối với tất cả các plugin khác).


6
Tăng số phiên bản bên trong tệp chính của plugin .. vd. 99.9... và cũng thực hiện thay đổi tương tự trong tệp readme để có biện pháp tốt (mặc dù tôi không nghĩ rằng điều đó thực sự cần thiết) ..
t31os

Điều chỉnh số phiên bản vẫn hoạt động nếu plugin cập nhật số phiên bản của nó thành một cái gì đó như thế 1.10.1nào?
emc

Câu trả lời:


11

bạn đặt cái này trong hàm của chủ đề.

// Disable update notification for individual plugins - see my example of plugin block-spam-by-math-reloaded as to how to use this function

function filter_plugin_updates( $value ) {
    unset( $value->response['plugin-folder-name/plugin-file-name.php'] );    
    return $value;
}

add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Tôi không hiểu tại sao lại có mã nút Google +1 trong câu trả lời của bạn ... Có lẽ là còn sót lại ...
brasofilo

thức ăn thừa. Lấy làm tiếc.
Tara

3
Giải pháp này đưa ra cảnh báo trong khi bật hoặc tắt bất kỳ plugin nào khác. Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/custom-functions.php on line 15
gurung

Bạn đang sử dụng phiên bản WP nào?
fedmich 17/2/2015

7

Câu trả lời của T31os đã đúng: Tăng số phiên bản bên trong tệp chính của plugin .. vd. 99,9 ... và cũng thực hiện thay đổi tương tự trong tệp readme để có biện pháp tốt (mặc dù tôi không nghĩ rằng điều đó thực sự cần thiết) .. - t31os


5

Mặc dù câu trả lời của Tara hoạt động tốt, nó yêu cầu lập trình viên nhập đường dẫn đến tệp plugin chính và nó chỉ hoạt động trong khi chủ đề cụ thể đó được bật. Một giải pháp thay thế có thể trông như thế này:

add_filter('site_transient_update_plugins', 'remove_update_notification_1234');
function remove_update_notification_1234($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
    return $value;
}

phiên bản một dòng:

add_filter('site_transient_update_plugins', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });

Đặt mã này ở đầu .phptệp chính của plugin bạn muốn tắt. Nếu bạn dự định sử dụng điều này nhiều lần trong trang web của mình, hãy thay đổi _1234tên bộ lọc và tên hàm thành một bộ số ngẫu nhiên khác nhau để tránh trùng tên hàm.

Rất có thể là nếu bạn đang vô hiệu hóa các bản cập nhật cho một plugin cụ thể, thì đó là vì bạn đang chỉnh sửa nó vì một số lý do ... vì vậy, việc thêm một vài dòng bổ sung vào plugin đó là khả thi.


1
Đây là câu trả lời tốt nhất theo ý kiến ​​của tôi, đặc biệt nếu bạn đang vô hiệu hóa các bản cập nhật vì bạn đang tự chỉnh sửa plugin. Cảm ơn emc.
Nathan

3

Tôi đã nhận được các Cảnh báo PHP như 'gurung' được đề cập ở trên khi tôi cài đặt hoặc cập nhật các plugin khác khi tôi đang sử dụng mã này. Tôi đã thấy Cảnh báo PHP trong WP 4.3.1.

Tôi đã tìm thấy một số bài đăng khác trên stackexchange về vấn đề này và tôi đã đưa ra một chức năng lặp qua mảng tham chiếu plugin của bạn và kiểm tra trước xem đã có tham chiếu đến plugin đó chưa (để tránh cảnh báo PHP về các đối tượng không phải là đối tượng nếu không có) và nếu có một đối tượng, nó sẽ bỏ đặt nó giống như mã gốc.

Tôi chưa thực hiện kiểm tra đơn vị nhưng nhận được cảnh báo PHP trên mỗi bản cập nhật / cài đặt plugin và bây giờ tôi không thấy chúng.

function filter_plugin_updates( $value ) {

  // Add references to plugins you want to disable update notices for in the $plugins array
  $plugins = array(
    'k-elements/setup.php'
  );

  foreach( $plugins as $plugin ) {
    if ( isset( $value->response[$plugin] ) ) {
      unset( $value->response[$plugin] );
    }
  }

  return $value;

}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

1

Hoặc bạn chỉ đổi tên nó để nó không phải là cùng một plugin.
Bạn cần đổi tên không chỉ thư mục mà còn trong tiêu đề readme và plugin.


1

Tôi đã kế thừa một trang web với việc triển khai mã snip của npc, điều này đã gây ra lỗi cho mỗi bình luận của gurung. Thả tôi hạt dẻ. Tôi đã do dự để chỉnh sửa mã trong một plugin, cho đến khi tôi nhận ra rằng snipper là tùy chỉnh.

Để loại bỏ các lỗi, thay đổi điều này:

unset($value->response[ plugin_basename(__FILE__) ]);

đến đây:

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

Nó có thể rõ ràng đối với một số người, nhưng điều quan trọng là nó đã được tùy chỉnh để bạn có thể chỉnh sửa nó và có thể nó sẽ không bị ghi đè bởi các bản cập nhật vì toàn bộ vấn đề là ngăn bạn cập nhật plugin.


0

Bạn có thể ngăn cập nhật đơn giản bằng cách đổi tên thư mục plugin (hoặc, trong trường hợp plugin một tệp, đổi tên tệp PHP đó). Đây là giải pháp đơn giản nhất. Ngoài ra, cách tiếp cận này làm cho thực tế là bạn đã thay đổi mã trong suốt cho các nhà phát triển trong tương lai, bao gồm cả "bạn trong tương lai".


0

Phiên bản cao hơn trong tệp plugin chính là tốt nhất, nhưng chỉ khi thêm một bản hack đặc biệt. Nó gọi một số null / không xác định và sau đó sẽ vẫn ở phiên bản đó. Thí dụ:

Phiên bản:

Điều này sẽ đảm bảo rằng vào năm 2100, nó sẽ không được cập nhật sau ngày 9,9.9 hoặc đại loại như thế. Đó là một cách tiếp cận đơn giản cho các plugin bị bỏ rơi đôi khi sẽ được thay thế.

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.