Sử dụng API bên ngoài trong WordPress?


9

Tôi có một khách hàng có một trang web WordPress và anh ta muốn mở rộng nó để thêm các chức năng mới. Các chức năng này được bao gồm trong một trang web tôi đã thực hiện (một loại công cụ tìm kiếm trên cơ sở dữ liệu, với một số bộ lọc) và được cải tiến mới.

Những gì tôi dự định làm là tạo ra một api json của trang web của tôi (với tất cả các chức năng tìm kiếm trên cơ sở dữ liệu của tôi) và làm cho trang web wordpress tiêu thụ api này, sau đó tôi sẽ chỉ phải tạo các lượt xem để hiển thị kết quả tìm kiếm.

Vấn đề là tôi hoàn toàn không biết WordPress (đối với tôi đó là thứ bạn có thể thêm bài viết qua bảng quản trị ...) và tôi không biết làm thế nào chúng ta có thể viết mã phía máy chủ của riêng mình trong đó. Tôi đã tìm kiếm trên Google và tìm thấy một cái gì đó gọi là "plugin", nhưng tôi tự hỏi liệu có thể làm như vậy không và liệu đó có phải là cách đơn giản nhất vì tôi không cần phải sử dụng mã bởi bất kỳ thứ ba nào khác buổi tiệc. Nếu có thể hack cài đặt WordPress để thêm các tệp PHP của tôi, hãy mã những gì tôi cần (các chế độ xem của tôi với cùng css WordPress) sẽ đơn giản hơn, nhưng tôi không biết liệu có thể không?


Chính xác thì bạn đang cố gắng làm gì, đọc một nguồn cấp dữ liệu json vào wordpress, chèn dữ liệu vào cơ sở dữ liệu, xuất bản qua XML-RPC, thử và rõ ràng hơn.
Wyck

đọc thức ăn json. cho dụ, trang web wordpress nên chứa một hình thức tìm kiếm, khi submiting, nó sẽ thực hiện một cuộc gọi get đến một api, api sẽ trở lại các đối tượng trong json, và tôi nên đầu ra các kết quả này trong một trang của trang web wordpress
Tahir

1
@tahir Mình đang cố làm điều này. Bạn có thể chia sẻ cách bạn hoàn thành mục tiêu của mình không?
SAH

Câu trả lời:


9

Một đoạn trích ngắn về phát triển WordPress có thể giúp hoặc có thể làm bạn bối rối:

Điều chính cần ghi nhớ: tất cả chỉ là PHP. Và cũng: không chỉnh sửa các tệp cốt lõi của WordPress, vì bạn sẽ gặp rắc rối khi cập nhật lên phiên bản mới hơn sau này. Mã duy nhất bạn nên chỉnh sửa là các plugin và chủ đề.

Nếu bạn chỉ cần thêm một cái gì đó vào một trang hiện có, nó có thể hoạt động để chỉ chỉnh sửa đúng tệp chủ đề. Tuy nhiên, nếu bạn cần làm một cái gì đó nâng cao (và thêm một "chế độ xem" bổ sung, như tại một URL cụ thể, nâng cao hơn trong WordPress), bạn cần thêm mã tại một nơi sẽ được tải trước đó trong quy trình khởi động WordPress .

Lý do cho điều này là WordPress luôn thực hiện một truy vấn bài đăng cho bạn, dựa trên URL. Khi bạn truy cập /category/banana/, nó sẽ truy vấn các bài đăng thuộc danh mục bananavà tải tệp mẫu chính xác mà bạn chỉ phải lặp lại và hiển thị chúng. Tuy nhiên, nếu bạn truy cập /custom-view/, WordPress có thể sẽ không tìm thấy bất kỳ bài đăng nào và tải mẫu 404 - không cho bạn cách khôi phục dễ dàng!

Một số người giải quyết điều này bằng cách tạo "các trang còn sơ khai": họ tạo Trang trong WordPress trong đó nội dung không quan trọng, chỉ có mẫu là: ở đó họ làm bất cứ điều gì họ muốn làm. Đây là hackish, nhưng nó hoạt động. Cách rõ ràng sẽ là xác định các quy tắc viết lại bổ sung , cho WordPress biết đó /custom-view/là một URL hợp lệ, nhưng điều đó sẽ xảy ra ở đó.

Nếu bạn muốn làm điều này, bạn cần nối vào hệ thống WordPress cốt lõi. Phần quan trọng ở đây là móc vào , không sửa đổi . WordPress có hành độngbộ lọc . Một hành động chỉ là một thông báo ( "Này, chúng tôi hiện đang viết <head>thẻ. Bạn có muốn thêm bất cứ điều gì không?" ). Bộ lọc cho phép bạn sửa đổi một biến ( "Đây là tiêu đề bài viết. Nếu bạn muốn sửa đổi nó, hãy trả về một giá trị mới" ). Tất nhiên, mẹo bây giờ là biết những hành động và bộ lọc nào bạn nên sử dụng. Điều này phụ thuộc vào cách bạn chọn (sơ khai trang hoặc quy tắc viết lại mới), vì vậy tôi sẽ không đi vào chi tiết ở đây.

Bạn xác định hành động và bộ lọc mà bạn muốn sử dụng trong một file plugin hoặc trong functions.php tập tin của chủ đề của bạn. Chúng đặc biệt ở chỗ chúng được tải trong khi WordPress đang khởi động , vì vậy trước khi truy vấn chính được thực thi, v.v. Tệp plugin chỉ là một tệp PHP, được đặt trong wp-content/plugins/thư mục, với một tiêu đề đặc biệt để WordPress có thể đọc tên của nó và hiển thị nó trong khu vực quản trị nơi bạn có thể bật và tắt nó (vì vậy bạn có thể tạm thời để lại plugin trong thư mục vô hiệu hóa nó).


2

Khái niệm cơ bản

Bạn phải đi xung quanh những điều cơ bản cho plugin và chủ đề. Tóm lại: Chúng là bổ sung cho chức năng cốt lõi của wordpress. Thông thường "Plugin" có nhiều hơn về chức năng và "Chủ đề" sẽ nói nhiều hơn về "chế độ xem". Bạn cũng có thể muốn đọc một chút về "API Plugin" .

JSON

Bạn có thể muốn sử dụng tập lệnh json2 được tích hợp vào lõi để cung cấp API "an toàn".

Ví dụ JSON

Phần còn lại sẽ là một cái gì đó như thế này:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

Rpc XML

Codex cũng có vài thứ về "XML Rpc" .

API http

Một khả năng khác có thể là các yêu cầu http . Hãy chắc chắn rằng bạn đọc các tài liệu tham khảo ở dưới cùng của liên kết.


Webhooks

Đây là bổ sung, vì nó liên quan nhiều hơn đến việc cung cấp API tiêu thụ. Giải thích tại đây . Và cũng có một plugin có tên HookPress thực hiện công việc này cho bạn. Một số slide từ tác giả là tốt.


1

Tôi giả sử bạn biết PHP? Hay đó là rào cản?

Về cơ bản các plugin trong WordPress là quy ước cách đóng gói mã PHP để nó được nhận dạng và xử lý bởi lõi WordPress. Nó là định dạng, hơn là chức năng.

Đối với chức năng thực tế, bạn có thể chạy PHP tùy ý khá nhiều, nhưng nên sử dụng API của WP để tương thích và tin cậy.

Hãy nghĩ về mã của bạn trong ngữ cảnh của WP là include(về mặt kỹ thuật). Từ đó, phạm vi nhu cầu và tài nguyên của bạn sẽ xác định số lượng sẽ được viết lại để dành riêng cho WordPress.


0

Vâng, nó là có thể.

hầu hết các plugin được tạo thông qua cái được gọi là hook:

ví dụ:

add_action("hook", "function")

Thật dễ dàng để xây dựng cho mình một plugin khi bạn biết khung đó hoạt động như thế nào, ... tôi sẽ khuyên bạn nên tự làm quen với nó, nơi kiến ​​thức rộng lớn nhất (mặc dù không phải là php có tổ chức nhất - như php. net) là codex wordpress .

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.