WordPress Popular Posts 4.1.0 で REST API が必須に

WordPress
この記事は約3分で読めます。
この記事は最終更新日より 1 年以上経過しています。
画像やリンクが無効になっている可能性もあるのでご了承下さい。

 当ブログでは WordPress で記事毎のアクセス数を取得したいとかウィジェットで人気記事を表示したいという目的で WordPress Popular Posts (以下 WPP) を導入している。
 その WPP がこの度 4.1.0 にバージョンアップしたのだが、記事の PV カウントやウィジェットに配置した人気記事やらの項目が表示されなくなってしまった。
 WPP の更新履歴をみてやるとどうも REST API を使用するようになったとか。
 たしか特定のプラグイン以外では REST API が無効となるように設定していたなという事で確認をしたら、テーマである Simplicity2 の子テーマ側の functions.php を弄っていたことを思いだした。

WordPressのREST APIを無効化しつつ特定プラグインは動作するようにカスタマイズする方法
先日、Contact Form 7プラグインでメールフォームを作成しました。 そして、動作確認のためメールを送…

 上記アドレスの手順通りに行っているので、許可するアドオンの namespace を追加してあげるだけで済みそうだ。
 そこで次に示すソースの 19~22 行目を追記した。WPP の namespace は wordpress-popular-posts/ と指定すれば OK だった。

//特定のプラグインを除外してREST APIを無効にする
function deny_restapi_except_plugins_demo( $result, $wp_rest_server, $request ){
    $namespaces = $request->get_route();

    //oembedの除外
    if( strpos( $namespaces, 'oembed/' ) === 1 ){
        return $result;
    }
    //Jetpackの除外
    if( strpos( $namespaces, 'jetpack/' ) === 1 ){
        return $result;
    }

    //Contact Form7の除外
    if( strpos( $namespaces, 'contact-form-7/' ) === 1 ){
        return $result;
    }

    //WPP
    if( strpos( $namespaces, 'wordpress-popular-posts/' ) === 1 ){
        return $result;
    }

    return new WP_Error( 'rest_disabled', __( 'The REST API on this site has been disabled.' ), array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_pre_dispatch', 'deny_restapi_except_plugins_demo', 10, 3 );

 もしその他手段を用いた一括での REST API 無効化をしていたらこの際だから有効化してみたり、本記事の様に特定のプラグインだけ許可してあげると言った対策が必要となるだろう。

 とはいえ REST API を制限していた理由ってなんだっけかなーと改めて見返してみるとクエリーを投げて何かしらの情報が簡単に得られるとか、過去には脆弱性があってそれを突いた不正な攻撃があった―― なんて事が挙がった。
 脆弱性が過去にあった物をオープンにしておくのもなぁとは思ったけど現状は特に騒がれていないから大丈夫かとも思われる。それならば上記特定プラグインだけ許可するとか細々やるよりも、問答無用で有効化しておいたほうが今後のプラグイン更新次第ではいちいち対策をしなくて楽で良いのかなとも思う。
 この辺は追って情報を集めてから考えてみよう。なるべく WordPress によるブログ運営に手間をかけたくないというのもあるし、それはそれで面白いという相反する考えもあるしでなかなか収拾が付かなそうだけど。

著者プロフィール
ぶっち

本格的に PC へ触れ始めてたのは 1990 年位から。
興味は PC 全般。OS は Windows と Linux などを嗜む。
プログラマやネットワークエンジニアを経てフリーに活動している 2 児の父な 40 代半ばのおじさんです。

ぶっちをフォローする

コメント

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.