web-dev-qa-db-ja.com

WordPressで外部APIを消費する?

私はWordPress Webサイトを持っているクライアントがいます、そして彼はそれを拡張して新しい機能を追加したいと思っています。これらの機能は私がすでに行ったウェブサイト(データベース上のある種の検索エンジン、いくつかのフィルタ付き)に含まれており、それは新しい強化の下にあります。

私がやろうとしているのは私のウェブサイトのjson apiを(私のデータベース上のすべての検索機能付きで)作成し、wordpressのウェブサイトにこのapiを消費させることです。

問題は、私がWordPressをまったく知らないことです(私にとっては、管理者パネルから記事を追加できるようなものです...)。また、サーバーサイドコードを記述する方法もわかりません。私はGoogleで検索したところ "plugin"と呼ばれるものを見つけましたが、それが可能であるかどうか、そして私が他のどの第三者によっても使用される必要がないのでそれがする最も簡単な方法であるかどうか疑問に思いますパーティー。私のPHPファイルを追加するためにWordPressのインストールをハッキングすることが可能ならば、私が必要とするもの(同じWordPress cssを持つ私の見解)をコード化することはより簡単でしょう。

8
tahir

WordPress開発の短い入門書で、あなたを助けたり混乱させたりするかもしれません:

心に留めておくべき主なこと:それはすべてPHPです。また、WordPressのコアファイルを編集しないでください。後で新しいバージョンに更新すると問題が発生します。編集する必要があるコードは、プラグインとテーマのコードのみです。

既存のページに何かを追加するだけでよい場合は、適切なテーマファイルを編集するだけで機能する場合があります。ただし、高度な処理が必要な場合(および特定のURLなどの追加の "ビュー"の追加はWordPressの場合より高度です)、WordPressブートプロセス。

これは、WordPressがURLに基​​づいて常に投稿クエリを実行するためです。 /category/banana/に移動すると、カテゴリbananaの投稿を照会し、ループして表示するだけの正しいテンプレートファイルをロードします。ただし、/custom-view/に移動すると、WordPressはおそらく投稿を見つけず、404テンプレートをロードしません。簡単に回復する方法はありません。

「スタブページ」を作成することでこれを解決する人もいます。コンテンツが重要ではないWordPressにページを作成します。テンプレートのみが重要です。これはハックですが、動作します。クリーンな方法は、余分なrewrite rulesを定義することです。これにより、WordPressは/custom-view/が有効なURLであるが、別の何かが発生することを知ることができます。

これを行うには、hook intoコアWordPressシステムが必要です。ここで重要な部分はmodifyではなく、hook intoです。 WordPressにはactionsおよびfiltersがあります。アクションは単なるお知らせです("ねえ、現在<head>タグを書いています。何か追加しますか?")。フィルタを使用すると、変数を変更できます("これは投稿タイトルです。変更する場合は、新しい値を返します")。もちろん、今のコツは、どのアクションとフィルターを使用すべきかを知ることです。これは、選択方法(スタブページまたは新しい書き換えルール)に依存するため、ここでは詳しく説明しません。

プラグインファイルまたはテーマのfunctions.phpファイルで使用するアクションとフィルターを定義します。これらは、 WordPressの起動中にロードされる なので、メインクエリが実行される前などに特別です。プラグインファイルはPHPファイルであり、wp-content/plugins/ディレクトリに配置され、WordPressがその名前を読み取って有効化および無効化できる管理領域に表示できるように特別なヘッダーを付けます。それ(したがって、プラグインをディレクトリに残したまま一時的に無効にすることができます)。

9
Jan Fabry

基本

プラグインとテーマの基本を回避する必要があります。一言で言えば:彼らはwordpressのコア機能への追加です。通常 "プラグイン" は機能についての詳細、および "テーマ" は "ビュー"についての詳細です。 "Plugin API" についても少し読みたいと思うかもしれません。

JSON

「安全な」APIを提供するために、コアに組み込まれている json2 スクリプトを使用することをお勧めします。

JSONの例

残りは次のようになります。

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

XML RPC

コーデックスは "XML Rpc" についても何かを持っています。

HTTP API

もう一つの可能​​性は httpリクエスト かもしれません。必ずリンクの下部にある参照を読んでください。


ウェブフック

これは、消費可能なAPIについての{give}に関するものであるため、追加のものです。説明 ここ 。そして HookPress という名前のプラグインもあります。 スライド 作者より。

2
kaiser

私はあなたがPHPを知っていると思いますか?それとも障壁ですか?

WordPressの基本的なプラグインはPHPコードをパッケージ化してWordPressコアで認識され処理されるようにする方法の慣例です。機能ではなくフォーマットです。

実際の機能に関しては、ほとんど任意のPHPを実行することができますが、互換性と信頼性のためにWPのAPIを利用することはお勧めです。

あなたのコードをWPの文脈でinclude(それは技術的になるでしょう)と考えてください。そこからあなたのニーズとリソースの範囲はそれのどれだけがWordPressに特定であるために書き直されるかを決定するでしょう。

1
Rarst

はい、可能です。

ほとんどのプラグインはフックと呼ばれるものを通して作成されます。

例えば:

add_action("hook", "function")

そのフレームワークがどのように機能するかを知っていれば、自分自身でプラグインを作成するのはかなり簡単です。 net)は wordpressコーデックス です。

0
Itai Sagi