it-swarm-vi.tech

Plugin kết nối với nhau

Tôi đang làm việc với một plugin lý tưởng có thể thực hiện mọi việc khi người dùng thực hiện điều gì đó thông qua một khác biệt plugin.

Tôi có thể thêm các móc tùy chỉnh trong các plugin đó nhưng rõ ràng điều này sẽ không hoạt động tốt khi tôi muốn phân phối plugin của mình. Có cách nào tốt để thêm móc vào plugin của người khác từ plugin của riêng tôi không? Là giải pháp thực sự duy nhất để yêu cầu tác giả đưa vào các móc tùy chỉnh để các nhà phát triển khác có thể xây dựng công việc của họ?

Ví dụ: Tôi muốn làm một cái gì đó trong plugin của mình khi ai đó đăng lại bài viết. Nếu có một cái móc tùy chỉnh trong bất cứ thứ gì mà plugin rạn phổ biến là tôi có thể nối vào và thoát ra, điều đó thật tuyệt. Không có, vì vậy tôi có thể sửa đổi plugin của họ để bao gồm nó, nhưng nó chỉ hoạt động cho bản sao của tôi và tôi không muốn cố gắng phân phối lại.

Chúng ta có cần thử và trở thành nhà phát triển plugin tốt hơn để tất cả chúng ta có thể chơi Nice cùng nhau không?

12
Ryan Elkins

@Ryan Elkins:

Tôi đoán câu trả lời phụ thuộc vào cách nhập từng trường hợp sử dụng đối với bạn. Trong một số trường hợp, đó sẽ là thứ bạn cần nhanh chóng và bẩn thỉu, trong những trường hợp khác, nó có thể là một trường hợp sử dụng quan trọng hơn. Đây là hai điều mà tôi suy nghĩ:

Tìm kiếm móc thay thế trong WordPress Core

Nếu đôi khi điều gì đó nhanh chóng và bẩn thỉu, bạn có thể sử dụng các móc nối xuôi dòng khác từ lõi để sửa đổi những gì bạn cần, hoặc cả móc ngược dòng và hạ lưu thông qua việc sử dụng ob_start()/ob_end_clean() (xem @Todd Perkins trả lời đến "Xử lý đầu ra HTML lớn thông qua mã plugin"cho một ví dụ về mã.)

Để theo dõi các hook bạn có thể sử dụng, hãy kiểm tra Plugin Hook nhạc cụ Tôi đã đăng ngày hôm qua để giúp bạn tìm các hook mà bạn có khả năng có thể sử dụng.

Gửi một bản vá với Hook mong muốn của bạn cho Nhà phát triển Plugin

Nếu trường hợp sử dụng của bạn có ý nghĩa hơn đối với bạn hoặc cộng đồng, tôi khuyên bạn nên tiếp tục và thêm hook mà bạn cần vào plugin. Sau đó kiểm tra nó thật tốt để đảm bảo nó thực sự giải quyết trường hợp sử dụng của bạn sau đó bạn có thể gửi một bản vá cho nhà phát triển plugin với hy vọng rằng họ sẽ áp dụng nó. Bằng cách này, bạn làm cho chúng dễ dàng nhất có thể với chúng bằng cách cung cấp cho chúng mã đã được kiểm tra và bạn có thể tự mình xử lý trường hợp sử dụng để đảm bảo đó thực sự là thứ bạn cần. Tôi không thể nói cho bạn biết mức độ thường xuyên tôi nghĩ rằng tôi chỉ cần một cái móc nhất định để tìm sau khi cố gắng thực hiện một cái tôi cần một cái móc nhưng cái khác với cái tôi hình dung trước tiên.

Nếu bạn không quen với việc tạo một bản vá thì đây là một bài viết hay về việc vá lõi WordPress, trong đó áp dụng nhiều nhất cho việc vá các plugin và đối với những điều không hy vọng thì rõ ràng sẽ phải làm gì:

Hi vọng điêu nay co ich?

P.S. Một điều tôi cảm thấy hơi thất vọng và địa chỉ câu hỏi của bạn là tỷ lệ phần trăm các plugin được thiết kế chỉ dành cho người dùng cuối, tức là không có móc nối của riêng họ. Hãy tưởng tượng nếu WordPress được thiết kế giống như hầu hết các plugin? Nó sẽ không linh hoạt và là một giải pháp rất thích hợp.

Có lẽ mọi thứ sẽ khác nếu WordPress có khả năng tự động cài đặt các plugin mà các plugin khác phụ thuộc vào? Vì tôi thường phải viết rất nhiều chức năng tôi cần từ đầu vì khách hàng muốn mọi thứ theo một cách nhất định và các plugin có sẵn, trong khi 90% ở đó không cho phép tôi linh hoạt cập nhật 10% còn lại.

Tôi thực sự mong muốn những người dẫn đầu cộng đồng WordPress sẽ xác định một cách để đảm bảo rằng các plugin được khen thưởng khi tuân theo các thực tiễn tốt nhất (như thêm móc nối cho các nhà phát triển khác) giống như các câu trả lời tốt được thưởng trên trang web StackExchange.

6
MikeSchinkel

Chúng ta chỉ cần cố gắng thôi   to trở thành nhà phát triển plugin tốt hơn để tất cả chúng ta có thể chơi Nice cùng nhau?

Để bắt đầu, có.

Là giải pháp thực sự duy nhất để yêu cầu tác giả đưa vào các móc tùy chỉnh để các nhà phát triển khác có thể xây dựng công việc của họ?

Đó sẽ là một giải pháp tốt.

Bạn cũng có thể sao chép các plugin khác và chỉ cần thêm bất kỳ thay đổi nào, mặc dù điều đó sẽ rắc rối hơn.

2
Arlen Beiler

Tôi nghĩ rằng bạn trả lời câu hỏi của bạn trong câu hỏi, để nó trở nên hơi khoa trương.

Rõ ràng bạn đang nói về một hệ thống tương tự như một hệ thống mà Google khuyến khích với Android và hệ thống Intent, rằng một ứng dụng có thể xuất bản các hành động mà nó có khả năng thực hiện thay mặt cho các ứng dụng khác, sau đó có thể nối vào chúng và truyền lại dữ liệu ra Cá nhân tôi nghĩ rằng đó là thứ mà chúng tôi cần hướng tới như những nhà phát triển giỏi - chúng tôi sử dụng WordPress vì nó đã tuyệt vời, đủ tuyệt vời để đưa ra quyết định về việc sử dụng nó hay phát triển một sản phẩm nội bộ tương tự khá dễ dàng trong hầu hết các trường hợp. Bản thân kho lưu trữ plugin lại là một thứ tương tự, chủ yếu là người dùng cuối + nhà phát triển - tại sao lại phát triển plugin Twitter khi có một plugin hoàn toàn tốt.

Điều tương tự 'tại sao phát triển các bản sao' là mấu chốt của câu hỏi của bạn ở đây. Hệ thống Android Intent cho phép các ứng dụng sử dụng các chức năng đã được tạo và truyền dữ liệu giữa chúng và điều này rất phổ biến và thường được sử dụng, vì nó được đẩy rất nhiều. Có một hệ thống tương tự đã được triển khai trong WordPress, nhưng rất hiếm khi được sử dụng ngoài các móc có trong mã lõi, được sử dụng rất nhiều.

Nó sẽ có lợi cho cộng đồng nếu có nhiều hook trong các plugin tùy chỉnh, nhưng như bạn nói, không có cách nào dễ dàng để thêm hook vào khi nào/nơi bạn cần chúng.

Về phần plugin Twitter mà bạn muốn kết nối, gửi email cho tác giả, tôi chắc chắn anh ấy sẽ rất vui khi thêm chúng vào cho bạn.

Nếu có một nơi mà bạn nghĩ sẽ là một nơi tốt để đặt một cái móc vào plugin của bạn, hãy làm nó và ghi chép lại thật tốt. Nếu nhiều người bắt đầu đưa hook vào plugin, hoặc có một sự thúc đẩy chung hướng tới việc đó, điều đó cuối cùng sẽ xảy ra.

Vì vậy, để trả lời câu hỏi kết thúc của bạn về:

Chúng ta có cần thử và trở thành nhà phát triển plugin tốt hơn để tất cả chúng ta có thể chơi Nice cùng nhau không?

Vâng.


Chỉnh sửa: Tôi đã nghĩ thêm về câu hỏi thực tế và cách tốt nhất để thực hiện các hook, bạn không thể thêm một hành động sẽ chạy nếu có chức năng cụ thể mà bạn đang cố gắng chạy plugin?

2
nobody

định nghĩa một hàm:

function my_footer() {
    do_action('my_footer');
}

bây giờ bạn có thể móc vào cái móc này: add_action('my_footer', 'example_function', 1); # thêm thông tin xem trên bài đăng của tôi .

0
bueltge