TL; DR
WordPressコアにはJavaScript APIはなく、計画もされていませんが、実際には必要ありません。
バックエンド
まず最初に、バックエンドに関して、すでに存在するJavaScriptグローバル変数からいくつかの有用な情報を取得できるとしましょう(WordPressはすべてのグローバルフレーバーを愛しています)。
例えば
ajaxurl
以下のためのadmin-ajax.php
URLは、Ajaxの呼び出しで使用されます
pagenow
現在の管理ページのスラッグの場合、たとえば「ダッシュボード」
adminpage
現在の管理ページファイル、たとえば 'index-php'(ドットはハイフンに置き換えられます)
typenow
の現在の投稿タイプedit.php
、post.php
またはpost-new.php
userSettings
現在ログインしているユーザーの情報を取得するために使用できます
これらの情報は、バックエンドにいる間のアプリケーションの状態の「コンテキスト」を提供します。
質問で言及されている他のことについては、「API」は必要ありません。これは、超単純なjQuery関数で対処できるためです。たとえば、管理メニューが閉じているかどうかを確認するには、本文の「折りたたまれた」クラスを確認します。
if ( $(body).hasClass('folded') ) {
alert( 'Admin left menu is closed!' );
} else {
alert( 'Admin left menu is open!' );
}
ドキュメント不足
前のスニペットのようなものでは、関数を作成する価値はありません。WPはすでにPHPの関数が多すぎます。これらのような追加機能がコアに追加されないことを本当に望んでいます。
WordPressのJavaScriptが実際に必要とするのは、既存の機能に関する追加のドキュメントです。上で書いたものは、Codexのような公式ドキュメントやソースファイルにドキュメント化されていません。
フロントエンド?
ここまでは、バックエンドについてのみ説明しました。
これは、フロントエンドで発生するほとんどすべてのことが現在使用されているテーマに関連しているためです。現在のアプリケーションの状態に関する情報を取得するための関数を含む、WordPressによって提供されるJavaScriptファイルがあるとしましょう。テーマはそのJSファイルをエンキューしない場合は、それらの機能は利用できませんとする強制的なスクリプトは絶対に間違っているだろうエンキューするテーマを。
(別の)APIは不要
ただし、WordPressでは、PHP経由で取得できるすべての情報をJavaScriptでも簡単に使用でき、AJAXリクエストは必要ありません。これを可能にする関数はwp_localize_script()
です。
JavaScriptで現在のユーザーとそのユーザーロールのようなユーザーデータを取得し、現在のページで使用されているクエリ変数も知りたい場合は、次のようにします。
$data = array(
'user' => wp_get_current_user(),
'query_vars' => $GLOBALS['wp']->query_vars
);
wp_localize_script( 'myscript', 'MyScriptData', $data );
スクリプトでこれを行うと、MyScriptData.user
変数はすべてのユーザー情報とすべてのクエリ変数を含むJavaScriptオブジェクトになります。
これは、バックエンドスクリプトとフロントエンドスクリプトに有効です(つまり、両方の「サイド」に)。その情報を取得するためだけに追加の JavaScript APIを使用する必要はありません。PHPからJSに情報を渡す適切な方法を使用する場合は、PHPで十分です。
Backbone.js
Backbone.jsは、JavaScriptで(一種の)MVC開発パターンを可能にするJavaScriptフレームワークです。それは主にメディアギャラリーを処理するために、WP 3.5のコアに含まれていました。
このライブラリは、WordPress JavaScript APIではありません。より強力なJavaScript開発が確実に可能になるためです。しかし、このライブラリには、WordPress固有の関数が1つも追加されておらず、Backbone.jsの現在のコア使用法はこれだけです。メディアライブラリは多かれ少なかれ文書化されておらず、パブリックAPIはありません。そして私の知る限り、そのギャップを埋める計画はありません。(誰かが私に間違いを証明することができるなら-その声明を変更/削除して喜んでください)。
WP-API
RarstとBrian Fegterが指摘したように、WP APIはコアの一部になるでしょう(おそらくWP 4.1以降)。
しかし、私はそれがJavaScript API ではないことを言わなければなりません。WP-APIによって制御されるアプリケーションエンドポイントにHTTPリクエストを接続することを許可するだけです。APIはデータベースからデータをフェッチし、そこでフォーマットされたJSONを返します。ドキュメントの例:
あなたのサイトの投稿を取得したいですか?単にGET
リクエストをに送信してください/wp-json/posts
。IDでユーザーを更新します4
か?にPOST
リクエストを送信し/wp-json/users/4
ます。「素晴らしい」という検索用語を含むすべての投稿を取得しますか?GET /wp-json/posts?filter[s]=awesome
。
HTTPリクエストと関連するJSON応答は、HTTPリクエストとJSONデータ形式(それらのうち、PHP、Ruby、Python、ASPなど)をサポートする任意の言語で処理できるため、WP APIの主な目的は、WordPressデータの取得と設定を可能にすることです非WPアプリケーションから。つまり、WordPressだけでなく、あらゆるアプリケーションの内部からです。
もちろん、JavaScriptはHTTPリクエストとJSON形式の両方を処理できる言語であるため、WordPress JavaScript内からWP-APIを使用することもできます。誰かがそのAPIのWP jsクライアントにも取り組んでいますが、
使用してwp_enqueue_script()
+ AjaxのAPI + WordPressのPHP関数を、あなたが任意の追加のAPIなしで必要なすべての情報を検索することができます。また、3つの「成分」はすべてWPが確立した標準であるため、それらを使用することは「独自のソリューション」ではありません。これは、標準のソリューションを使用してカスタム(および一般的な)タスクを実行するだけです。これが、このプラグイン開発のすべてです。
JavaScriptを使用してWP APIを利用することも可能です。WP-APIがJSONを返すからといって、JavaScript APIにはなりません。JavaScript関数は含まれていません(HTTPリクエストが送信され、JSON応答が返されます。AJAXAPIを使用して行われるものとほとんど同じです)。それ以外の場合、JSONを返すサービスはすべてWordPress JS APIと見なされます。WP-APIは、JSONを返す外部サービスAPIと考える必要があります。このJSONサービスを使用するサイトが、それを提供するサイトと同じである場合があります。
AJAX APIを使用しても実行できない、WP APIで実行できることは1つだけではありません。しかし、AJAX APIでできることはたくさんあります。しかしない WP-APIを持ちます。
WP-API + Backbone.jsに関するメモ
Backbone.jsを使用すると、RESTful HTTPリクエストをサポートするアプリケーションで情報を取得して保存できます。
問題は、「通常の」リクエストとAJAXリクエストの両方で、WordPressはすべてRESTfulであるということです。デフォルトでのみサポート$_GET
および$_POST
リクエストし、同じURlでどちらか一方を使用すると、結果は同じになります。 。
それどころか、WP APIはRESTfulなので、バックボーンベースのアプリケーションは強力なJavaScriptアプリケーションでそれを利用できますが、私は、バックボーンまたはWP APIまたはバックボーン+ WP APIをWordPressのJavaScript APIとして定義しないでください。上記。