Wordpress REST APIは、一般的なWordpress 4.7のインストールでインストールおよび有効化されていますか?


29

Wordpress 4.7をインストールしました。この発表で言及されていることの1つは、REST APIを備えているということです。

私の理解は:

  • Wordpress 4.7のコアと既に統合されているため、Wordpress REST APIプラグインはもう必要ありません。
  • Wordpress REST APIはデフォルトで有効になっています

ただし、Wordpress 4.7のバニラインストールでは、どのエンドポイントも機能していないようです(たとえばhttp://examples.com/wp-json/wp/v2/posts)。

新しいREST APIが実際にアクティブ化されているかどうかはどうすればわかりますか?REST APIをバニラのWordpress UIで有効または無効にできますか、またはそのためにサードパーティのプラグインをインストールする必要がありますか?


1
ページソースにディスカバリタグはありますか?<link rel='https://api.w.org/' href='https://example.com/wp-json/' />私のサイトで動作するようです。
ラースト16

@Rarst、I場合grep -r "<link rel='https://api.w.org/'" .ではhtml、ディレクトリ、それがファイルに1本のヒットを返します。./wp-includes/rest-api.phpこのテキストを持つ:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
ペップ

ソースコードではなく、ブラウザのサイトのページのHTMLソースにあります。
ラルスト

1
@Rarst、はい、わかりました<link href="http://example.com/wp-json/" rel="https://api.w.org/">
ペップ

ブラウザでリンクを開くと何が得られますか?WP_DEBUGが有効になっていますか?
ラスト16

回答:


21

4.7では、デフォルトで有効になっています。動作しているかどうかを確認する簡単な方法は、example.com / wp-jsonのURLにアクセスするだけです。登録されたエンドポイントのリストを取得する必要があります

それを無効にする公式のオプションはありません(少なくともリリースに含まれているかどうか不明な話がありました)、いくつかのコア機能はそれに依存しています。

動作していないかどうかを確認する最も明白なことは、htaccessルールです。wp-jsonディレクトリはありますか


wp-jsonディレクトリ/var/www/htmlまたはそのサブディレクトリはありません。私が持っていないようです.htaccess以外のファイルを(/var/www/html/wp-content/plugins/akismet/.htaccess?、私は1つ持っている必要があります
ペップ

@Pep、どのWebサーバーを使用していますか?あなたはかなりパーマリンクを持っていますか?
マークカプルン

Apache。これらのチュートリアルの手順を正確に実行して、AWSにWordpress 4.7をインストールしました:docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.htmlおよびdocs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ペップ

AWSには慣れていませんが、バニラワードプレスをインストールした場合は、インストールのルートに.htaccessがあるはずです。そうでない場合は、あなたが平野設定にされないことを確認し、保存、設定>パーマリンクに移動しようとすると、htaccessファイルが生成されたならば、チェック
マーク・Kaplun

6
私はついに問題を見つけました。REST APIが機能するためにPermalinkが必要になることを知らなかったためAllowOverride All、の<Directory "/var/www/html">セクションで設定するステップを初期セットアップ中にスキップしました/etc/httpd/conf/httpd.conf。それが、私の変更を無視していた理由.htaccessです。PLain以外のパーマリンクを使用すると、REST APIエンドポイントが機能します。
ペップ

11

4.7では、REST APIが無効になっていると思っていましたが、URLにだまされました。正しいURLを確認するには、次のような行を探します。

リンクrel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' />。そのため、http:// mysite?rest_route = /をプレフィックスとして使用すると、問題が解決しました。たとえば、次のように入力するだけで投稿を回復できます:http:// mysite?rest_route = / wp / json

クエリパラメータが必要であることをドキュメントで見つけることができませんでした。私だけがいましたか?


wordpress 4.8.xで私のために働いた。これがどこにも文書化されていない理由がわからない。
アニルダ

2
唯一のものではありません。この回答は、10分間の検索後にのみコメントに見つかりました。必要なこと:www.example.com?rest_route=/wp/v2/posts
ユージンK

3
これは、かなりパーマリンクが有効になっていないときに起こると思います。ドキュメントから...「かなりパーマリンクのないサイトでは、代わりにルートがrest_routeパラメーターとしてURLに追加されます。上記の例では、完全なURLはexample.com/?rest_route=/wp/v2/postsになります/ 123 "
ジャイルズバトラー


1

あなたは問題を修正しましたが、私にとってもうまくいったので、ここに私の解決策を残しました。wp 4.7でbeta15からコアAPIに更新するときに、この同じ問題が発生しました。変更ログのこのメモに従ってregister_rest_fieldに変更した廃止された関数register_api_fieldを使用しているプラ​​グインがあったことが判明しました:

重大な変更:register_api_field()の名前をregister_rest_field()に変更します。

_doing_it_wrong()を呼び出す後方互換用のregister_api_field()関数を導入します。ただし、register_api_field()はWordPressコアにコミットされることはないため、関数呼び出しを更新する必要があります。


1

REST APIがすぐに使用できない場合、または新規インストール後、入力後に

mydomain/wp-json/wp/v2/posts 

次に、単に「permalinks」をpost_nameとしてアクティブにする必要があります。

WPダッシュボード->設定->パーマリンク

または、パーマリンクをアクティブにしたくない場合は、単に次のように入力できます。

mydomain?rest_route=/wp/v2/posts

男、WordPressがRestハンドブックをよりユーザーフレンドリーなものに更新することを願っています。私は古いバージョンのドキュメントが好きです:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.