WordPressで有名なTCDのテーマ (zoomy_tcd067) を導入しているサイトのstripeの改修作業をさせていただいておりましたが、Webhookがうまく機能しませんでした。
最初原因が何にあるかわからなかったんですが、
テーマを変更すると、エラーにならなかったことから、テーマに依存していることがわかりました。
その後、/wp-content/themes/zoomy_tcd067/functions/membership/frontend.php に見つけたのです。
/**
* 未ログインの場合にREST APIで使える機能を制限
* 参考 https://nendeb.com/541
*/
function tcd_membership_rest_pre_dispatch( $result, $wp_rest_server, $request ){
$namespaces = $request->get_route();
if ( current_user_can( 'read' ) ) {
return $result;
// /oembed/1.0
} elseif ( strpos( $namespaces, 'oembed/' ) === 1 ){
return $result;
// /jetpack/v4
} elseif( strpos( $namespaces, 'jetpack/' ) === 1 ){
return $result;
// contact form 7 (Ver4.7~)
} elseif( strpos( $namespaces, 'contact-form-7/' ) === 1 ){
return $result;
}
return new WP_Error( 'rest_disabled', __( 'The REST API on this site has been disabled.', 'tcd-w' ), array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_pre_dispatch', 'tcd_membership_rest_pre_dispatch', 10, 3 );
このコードがあることで、無効化されているようでした。
なので、
remove_filter('rest_pre_dispatch', 'tcd_membership_rest_pre_dispatch');
ということをさせていただきました。
これがセキュリティ的に、いいか悪いかで言えばおそらく悪いので、
他にいい方法があれば教えていただきたいです🙇♂️🙇♂️🙇♂️