Wp 4.7.4でカスタムプラグインを実行しようとしています。以下は私の簡単なプラグインです
add_action( 'rest_api_init', 'register_routes');
function register_routes() {
register_rest_route( 'taxonomy-manager/v1', '/taxonomies/(P<taxonomy_type>[a-zA-Z]+)', array(
'methods' => 'GET',
'callback' => 'get_or_insert'
) );
}
function get_or_insert( WP_REST_Request $request ) {
$parameters = $request->get_params();
return $parameters;
}
wp-json
エンドポイントプラグインルートがありません。プラグインが正常にアクティブ化されました。私は何かを見逃しましたか?上記のプラグイン(またはrest_api_init
event)他の人のために機能しますか?ありがとう。
以下のチェックリストを参照してください、
1。パーマリンクをかなりのパーマリンクに変更して確認してください。
2。 .htacessファイルを確認します(パーマリンク構造を保存すると書き込み可能になり、wpで再書き込み可能になります)。
3。 Authを確認します。
4。以下のカスタムエンドポイントの作成方法を確認します。
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
REF: https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
私は解決策を得ました、あなたはあなたのURLでwp-jsonを使う必要があります... https://yourdomain.com/wp-json/namespace/and-so-on/ のように
その後、動作します。 URLにwp-jsonがありませんでした。
私の場合、コールバックは実際にはプライベートメソッドでした。すべてを機能させるには、それをパブリックメソッドに変更する必要がありました。
class Example {
function __construct() {
add_action( 'rest_api_init', [ $this, 'example_method' ] );
}
public function example_method() {
/* This will not work if the method is private! */
/* ... */
}
}
new Example();
あるインストールでは、メソッドがプライベートであるためにスタックトレースでエラーが発生しましたが、別のインストールでは、プライベートメソッドが呼び出されず、エラーが生成されませんでした。なぜ1つのマシンが一方の方向に反応し、もう一方の方向に反応しないのか、両方ともWP_DEBUG
およびWP_DEBUG_LOG
をtrueに設定します。
最新のビルドを使用すると、rest_api_initアクションが実行されているのがわかりません。 plugin.php内の次のコードは常に空で返され、rest_api_initアクションの起動を許可しないように見えます。
if ( empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
return;
}