2011-08-16 34 views
6

Tôi đang phát triển một plugin Wordpress yêu cầu cập nhật, mặc dù phiên bản plugin đang được kiểm tra từ máy chủ của tôi. Có một số plugin mà tôi đã phát triển sử dụng cùng một máy chủ chính xác để kiểm tra các phiên bản mới. Vấn đề tôi gặp phải là khi tất cả các plugin yêu cầu cập nhật và tôi nhấp vào Xem chi tiết, một trong các plugin sẽ hiển thị chi tiết về bản cập nhật (phiên bản, mô tả và v.v.) nhưng các plugin khác sẽ không hiển thị bất kỳ thông tin nào . Sau khi gỡ lỗi, tôi có thể thấy máy chủ đang trả về dữ liệu.Plugin Wordpress - Cập nhật Tự lưu trữ

Câu hỏi của tôi là, làm cách nào để áp dụng bộ lọc plugins_api nhiều lần mà không bị xung đột với các plugin khác?

Trả lời

9

Quan sát của bạn là đúng. Nó không phải là hiển nhiên. Ngay cả những cuốn sách của Brad và Ozh (Plugin phát triển ed. Wrox) bao gồm một lỗi trong ví dụ trên trang 267 trong chương "làm cho kho lưu trữ API của riêng bạn". Cũng giống như bạn, tôi đã dành (đã mất) thời gian để tìm vấn đề với một hai plugins trong API thay thế ...

Giải pháp: Hãy nhớ rằng rằng tham số đầu tiên trong bộ lọc WP là giá trị ban đầu truyền cho bộ lọc. Vì vậy, để nối các bộ lọc (được liệt kê bởi các plugin sử dụng api thay thế) ... dòng đầu tiên phải là:

function xiliw_altapi_information($false, $action, $args) { 
    $plugin_slug = plugin_basename(__FILE__); 
     // Check if this plugins API is about this plugin 
     if($args->slug != $plugin_slug) { 
      return $false; // var to conserve the value of previous filter of plugins list in alternate api. fixes book error not val false 
     } 

     // POST data to send to your API 
     $args = array(
      'action' => 'plugin_information', 
      'plugin_name' => $plugin_slug, 
      'version' => $transient->checked[$plugin_slug], 
      'registration' => $this->registration 
     );//../.. 

Bằng cách làm bài kiểm tra này, mỗi lần danh sách các móc được gọi, chỉ có một - sự quan tâm plugin - cung cấp câu trả lời đúng để hiển thị thông tin cho cửa sổ giật gân.

Nếu có thời gian, tôi có thể sẽ sớm xuất bản một bài viết hoàn chỉnh hơn về một lớp học để quản lý API mạnh mẽ thay thế này và cách thêm nó vào một plugin riêng tư.

+4

Chỉ cần để làm cho nó rõ ràng cho tất cả mọi người, chính là mã trong cuốn sách trả về boolean 'false' trong khi mã trên trả về biến PHP '$ false'. Rất tinh tế, nhưng khác biệt rất lớn. Cảm ơn câu trả lời này + 1. – rcravens

+3

Có một đối số tốt để đổi tên đối số đầu tiên, er, thành một cái gì đó khác với '$ false'. Tại sao không thử '$ original'? –

Các vấn đề liên quan