Nếu tôi đổi tên một plugin (trong tệp php chính của nó) tôi vẫn nhận được thông báo cập nhật chứ?


17

Gần đây tôi đã bị buộc phải chỉnh sửa các tập tin cốt lõi của một plugin. Tôi đã cập nhật tiêu đề của plugin đã nói để chỉ ra rằng nó đã được chỉnh sửa.

Câu hỏi của tôi là plugin vẫn sẽ nhận được thông báo cập nhật? Nếu vậy, tôi có thể vô hiệu hóa các bản cập nhật cho plugin này, để ngăn người khác quên về các bản cập nhật và ghi đè của tôi.

Lý tưởng nhất, tôi muốn xem liệu plugin có được cập nhật hay không, nhưng không cho phép chúng xảy ra chỉ bằng cách nhấp vào cập nhật. (nó sẽ phải được gỡ cài đặt và cài đặt lại, hoặc tương tự).


Về vấn đề này gần đây tôi đã đăng một báo cáo lỗi trên WordPress Track: Sao lưu thư mục plugin / theme. Tôi nghĩ rằng một bản sao lưu tự động đơn giản bên trong nhưng trước khi tính năng tự động cập nhật sẽ giúp mọi người dễ dàng hơn nhiều. Tôi không thấy bất kỳ lý do nào khiến việc này không được thực hiện khi bản cập nhật tự động được phát hành lần đầu tiên, cũng như tại sao nó không được thực hiện trong khi đó cũng như tại sao nó không nên được thực hiện.
Ando

Câu trả lời:


17

Như SickHippie nói và AFAIK, bạn không thể có cả hai. Tôi đang thêm một câu trả lời với thông tin tôi đã thu thập trong Stack này.


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

Bai Internet trong một bình luận:

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

Câu trả lời của Hameedullah Khan (xóa thông báo cập nhật Akismet):

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

Điều gì kích hoạt một cảnh báo cập nhật plugin

Trả lời của Otto:

API sử dụng một cơ chế khá phức tạp để khớp các plugin với các plugin mà nó biết, nhưng đây là những điều chính được kiểm tra: Plugin URI, Tên plugin và sên Plugin (tên thư mục của plugin nằm trong)

Thay đổi bất kỳ trong số đó và bạn giảm cơ hội tìm thấy trận đấu, nhưng nó vẫn có thể nhận được nếu hai trong số đó khớp nhau, chẳng hạn.

Thông tin trong readme.txt không được sử dụng cho việc này. Tiêu đề của tệp PHP của plugin được sử dụng.


Phương pháp thay thế 1

  • Sửa đổi plugin để kiểm tra cập nhật trong Kho lưu trữ tùy chỉnh của riêng bạn.
  • Bạn sẽ phải theo dõi các bản cập nhật plugin ban đầu, thường xuyên truy cập Repo chính thức hoặc cài đặt bản gốc trong một số cài đặt WordPress khác.
  • Khi bạn quyết định plugin đã sửa đổi của mình phải được cập nhật, hãy cam kết nó với Repo của bạn và bạn sẽ nhận được thông báo
  • Hướng dẫn: http://wp.tutsplus.com/tutorials/plugins/a-guide-to-the-wordpress-http-api-automatic-plugin-updates/
  • Cuốn sách Phát triển Plugin WordPress chuyên nghiệp , của Brad Williams, Ozh Richard và Justin Tadlock, có một chương về vấn đề này nhập mô tả hình ảnh ở đây

Cách tiếp cận 2 được lấy từ các Nhận xét

  • thay đổi tên plugin, số phiên bản và tên thư mục
  • cài đặt plugin gốc nhưng để nó bị vô hiệu hóa để nhận thông báo cập nhật
  • thêm một thông điệp tùy chỉnh vào mô tả plugin (hoặc thay thế bản gốc)
  • xóa các hành động plugin (Kích hoạt | Chỉnh sửa | Xóa) và hộp kiểm cho Hành động hàng loạt

nhập mô tả hình ảnh ở đây

add_filter( 'all_plugins', 'wpse_56968_on_list_plugins' );
add_filter( 'plugin_action_links_akismet/akismet.php', 'wpse_56968_remove_plugin_actions', 10, 4 );
add_action( 'admin_head-plugins.php', 'wpse_56968_remove_plugin_checkbox' );

function wpse_56968_on_list_plugins( $plugins )
{
    $plugins['akismet/akismet.php']['Description'] = '<strong>*** NOTICE: PLUGIN ONLY TO CHECK UPDATES IN THE ORIGINAL ONE! ***</strong> ';// . $plugins['akismet/akismet.php']['Description'];
    return $plugins;
}

function wpse_56968_remove_plugin_actions( $actions, $plugin_file, $plugin_data, $context ) 
{
    unset( $actions['activate'], $actions['edit'], $actions['delete'] );
    return $actions; 
}

function wpse_56968_remove_plugin_checkbox()
{
    ?>
        <script type="text/javascript">
            jQuery(document).ready( function($) {
                $('tr#akismet th.check-column').html('&nbsp;')
            });     
        </script>
    <?php
}

Vé lõi liên quan


Câu trả lời tuyệt vời! Có lẽ tôi sẽ thay đổi tên plugin, số phiên bản và tên thư mục, sau đó cài đặt plugin ban đầu nhưng để nó bị vô hiệu hóa để tôi có thể thấy khi cập nhật.
Zach Lysobey

1
@ZachL - Rực rỡ! Điều đó sẽ làm việc tốt!
SickHippie

2
Bạn cũng có thể sửa đổi tiêu đề plugin ban đầu Descriptionvà thêm một số thông báo, như:Description: ONLY FOR REFERENCE, DON'T ACTIVATE!...[rest of the description]
brasofilo

1
@ZachL - Đã thêm một thay thế thứ hai đầy đủ dựa trên Nhận xét này :)
brasofilo

3

Bạn không thể tắt cập nhật nhưng không cập nhật thông báo - chúng được gắn với nhau.

Để tắt thông báo hoàn toàn, hãy thay đổi tên thư mục mà plugin nằm trong.

Phương pháp cá nhân của tôi là thêm 3 a vào tiêu đề của plugin trong plugin.phptệp chính , vì vậy trong danh sách plugin của tôi, tôi thấy AAA/Plugin Name. Điều này đặt nó lên đầu danh sách để tham khảo và sẽ hiển thị trong danh sách plugin và trong danh sách cập nhật. Về cơ bản, nó là một cờ cá nhân để tôi biết không tự động bổ sung các plugin cụ thể đó.


Cảm ơn vì sự trả lời. Chỉ cần làm rõ, bạn đang nói rằng đổi tên một plugin KHÔNG dừng thông báo cập nhật của nó?
Zach Lysobey

Đối với câu đầu tiên của bạn ... Tôi chắc chắn rằng tôi có thể tìm ra cách nào đó để đạt được hiệu ứng này, có lẽ với một số js lén lút để xóa liên kết khỏi thông báo.
Zach Lysobey

AFAIK, đổi tên tệp chính hoặc tiêu đề của plugin trong tệp chính đó không dừng thông báo cập nhật. Tôi khá chắc chắn rằng Kho lưu trữ Plugin kéo dựa trên tên thư mục (mã zip được tải xuống từ Repo phải có cùng tên với số phiên bản). Để vô hiệu hóa cập nhật, có danh sách plugin và danh sách cập nhật, vì vậy hãy đảm bảo rằng JS của bạn đang bắn ở cả hai nơi (đồng thời, chia sẻ rằng JS - có thể hữu ích).
SickHippie
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.