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


117

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 đóng gói các 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à một ứ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?


Tôi tin rằng điều này đã được thảo luận như là một tùy chọn có thể lọc trong danh sách gửi thư của tin tặc wp trở lại trong ngày. Nó không bao giờ được giải quyết, IIRC. Tôi nghĩ rằng các cuộc thảo luận có liên quan là trong chủ đề này : lists.automattic.com/pipermail/wp-hackers/2009-F / 2 / giả ... nhưng tôi có thể sai.
ZaMoose

Nếu bạn không muốn đưa ra giải pháp của riêng mình, bạn có thể sử dụng kernl.us để cập nhật plugin được lưu trữ.
Jack Slingerland

Câu trả lời:


48

Trông giống như mã được áp dụng là 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 hiểu biết của tôi đó 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_pluginsbạn có thể thêm chi tiết gói của riêng bạn 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ĩ rằng 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 các chi tiết gói được định dạng và khớp với nó.


42

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 một thư viện PHP mà bạn có thể sử dụng để thêm các 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 GitHub


2
Bạn cũng có thể quan tâm để quản lý các plugin về phía mình ... có thể với gói wp-update-server, được viết bởi cùng một tác giả;) github.com/YahnisElsts/wp-update-server Bằng cách sử dụng máy chủ này, bạn có thể bảo mật các plugin của mình, như được mô tả tại đây: w-shadow.com/blog/2013/03/19/ Mạnh
SimonSimCity

Làm thế nào tôi có thể vô hiệu hóa trình kiểm tra cập nhật mặc định của wordpress trên các plugin miễn phí?
csandreas1

Mặc dù trang web đó có vẻ lỗi thời, dự án vẫn được hỗ trợ rất tích cực và nó cũng hoạt động với các repos Bitbucket / Github riêng tư! Xem repo Github của họ để biết thêm thông tin về các tích hợp khác nhau có sẵn github.com/YahnisElsts/plugin-update-checker
Ông Me

10

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


1
Ồ Trông giống như một dự án được hỗ trợ tốt và trưởng thành!
Armstrongest

1
Dựa vào một plugin khác dường như không phải là một giải pháp rất rõ ràng.
kontur

2
@kontur rất đúng, nhưng như thể đây là nguồn mở và liên tục được cập nhật, nó có thể được sử dụng như một khung công tác, hoặc chỉ là một ví dụ mã để xây dựng riêng của bạn.
sMstyle


1

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à plugins.json 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 một ví dụ về danh sách phiên bản trên trang ở đâ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 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

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.


Điều này có vẻ khả thi.
kontur

-1

bạn có thể sử dụng plugin thương mại này: http://autohosted.com/ không giới hạn và có một số tính năng khác bạn có thể cần:

  • Không tính phí hàng tháng
  • Sử dụng không giới hạn
  • Dễ dàng tích hợp với Chủ đề và Plugin
  • Xác thực theo tên miền, khóa và vai trò

1
Nó đã đóng cửa để đăng ký mới ...
Cliff P
Licensed under cc by-sa 3.0 with attribution required.