it-swarm-vi.tech

Cập nhật cho một plugin riêng?

Nếu tôi viết một plugin riêng, có cách nào để sử dụng cơ chế tự động cập nhật WordPress để cập nhật không?

Tôi muốn gói gọn chức năng, nhưng nó đặc trưng cho 5 blog của riêng tôi, vì vậy nó không phải là ứng cử viên tốt cho tài nguyên bổ trợ công cộng. Nhưng tôi thích cơ chế dễ cập nhật.

Có cách nào để làm việc này không?

112
artlung

Có vẻ như mã áp dụng nằm trong wp-includes/update.php, wp_update_plugins():

$to_send = (object) compact('plugins', 'active');

$options = array(
    'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3), 
    'body' => array( 'plugins' => serialize( $to_send ) ),
    'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
);  

$raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);

Nó đặc biệt kiểm tra api.wordpress.org. Về mặt kỹ thuật, có thể chuyển một khóa bên trong $to_send để ủy quyền kiểm tra, nhưng theo tôi biết đó không phải là một tính năng được hỗ trợ.

Nếu bạn móc vào set_site_transient_update_plugins, bạn có thể thêm chi tiết gói của riêng mình vào biến này. Có vẻ như những giá trị đó sẽ được tin cậy khi bạn chạy trình cập nhật plugin. Xem wp-admin/update.phpwp-admin/includes/class-wp-upgrader.php. Với mã trong hai chức năng này, tôi nghĩ có thể tiêm máy chủ cập nhật của riêng bạn, bạn chỉ cần xem cách chi tiết gói được định dạng và khớp với nó.

45
Annika Backstrom

Plugin này làm điều đó cho bạn:

Cập nhật tự động cho các plugin tư nhân và thương mại

Kể từ thời xa xưa, chỉ các plugin được lưu trữ trong thư mục plugin WordPress.org chính thức mới hỗ trợ cập nhật tự động. Bây giờ, tôi đã viết thư viện PHP mà bạn có thể sử dụng để thêm khả năng cập nhật tự động cho bất kỳ plugin nào. Các plugin công khai, riêng tư và thương mại đều giống nhau - tất cả giờ đây có thể tận hưởng những lợi ích của thông báo cập nhật tự động và nâng cấp bằng một cú nhấp chuột.

Kho lưu trữ GitHub

40
agileapricot

Nếu bạn thích miễn phí ... và muốn sử dụng một cái gì đó như GitHub, GitLab hoặc BitBucket, đây là một plugin chất lượng tốt và được hỗ trợ để xử lý nó (hỗ trợ riêng tư và doanh nghiệp):

https://github.com/afragen/github-updater

9
sMyles

Tôi đang nhìn vào điều tương tự. Một vài liên kết mà tôi thấy có thể hữu ích:

Đầu tiên là một số thông tin và con trỏ đến API nâng cấp. Thứ hai là một đoạn mã cho biết cách thực sự yêu cầu thông tin từ API.

8
Dougal Campbell

Bạn có thể muốn kiểm tra Plugin WordPress Development Kit . Gần đây tôi đã di chuyển hệ thống cập nhật độc quyền của mình sang plugin này. Plugin hiện đóng vai trò là bộ xử lý back-end cho các cập nhật plugin cao cấp của tôi.

Điều này tương tự trong thiết lập với giải pháp được cung cấp bởi agileapricot ở trên. Nó sẽ cài đặt như một plugin tiêu chuẩn trên một trang web WordPress. Bạn lưu trữ các tệp .Zip cao cấp của bạn và các plugin của plugin trong các thư mục sản xuất hoặc phát hành trước trên máy chủ của bạn (được chỉ định trong cài đặt cho plugin).

Plugin cũng cho phép bạn liệt kê các phiên bản plugin và thậm chí có thể cung cấp tải xuống cho các tệp trên các trang công khai, được bảo vệ bằng mật khẩu hoặc được bảo vệ đăng ký. Bạn có thể xem ví dụ về danh sách phiên bản trên trang tại đây .

Tôi đã sử dụng plugin trong nhiều tháng để xuất bản nhật ký thay đổi cho các tiện ích bổ sung cao cấp, danh sách các phiên bản hiện tại và danh sách tải xuống cho chủ sở hữu Đăng ký Premier của tôi. Giờ đây, với phiên bản 0.7.01, nó đang hoạt động như là đích truy vấn cho các cập nhật WordPress nội tuyến.

Hy vọng một số bạn thấy nó hữu ích.

1
Lance Cleveland

Nếu bạn muốn một giải pháp được lưu trữ mà bạn không phải quản lý, hãy xem Kernl ( https://kernl.us ). Đây là một dịch vụ cung cấp cơ sở hạ tầng để cập nhật các plugin và giúp bạn dễ dàng tích hợp vào các plugin của riêng mình.

1
Jack Slingerland