XML-RPCを無効化の方法

WordPress には外部からの接続を可能にする XML-RPC 機能があります。
言い換えるとXML-RPC は「リモートからWordPressにアクセスするための通信プロトコル(仕組み)」です。

しかし現在ではセキュリティリスクやスパムの原因になるケースが多いため、外部からWordPressに投稿する必要がある(モバイルアプリを使って記事を書くなど)の場合を除き、不要であれば無効化することをおすすめします。

実装のポイント

以下のような方法で XML-RPC を無効化できます:

  • functions.php にコードを追加
  • テーマに応じて CSS で通知やデザインを整える
  • プラグインで制御する方法

functions.php にコードを追加


/**
 * XML-RPC を無効化
 */
add_filter( 'xmlrpc_enabled', '__return_false' );

/**
 * pingback を無効化
 */
add_filter( 'wp_headers', function( $headers ) {
    unset( $headers['X-Pingback'] );
    return $headers;
});

/**
 * 管理バーに「XML-RPC 無効化済み」を表示
 */
add_action( 'admin_bar_menu', function( $wp_admin_bar ) {
    $args = array(
        'id'    => 'xmlrpc-status',
        'title' => 'XML-RPC 無効化済み',
        'href'  => false,
        'meta'  => array(
            'class' => 'xmlrpc-status-node'
        )
    );
    $wp_admin_bar->add_node( $args );
}, 100 );

/**
 * 管理バー用CSSを読み込み
 */
add_action( 'admin_enqueue_scripts', function() {
    wp_enqueue_style(
        'xmlrpc-status-style',
        get_stylesheet_directory_uri() . '/css/xmlrpc-status.css',
        array(),
        '1.0'
    );
});

    
補足:
上記コードを functions.php の末尾に追加してください。

汎用CSS

管理画面などで「XML-RPC 無効化済み」といった通知を表示したい場合の汎用CSS例です。


/* 管理バーに追加した XML-RPC 無効化表示用 */
#wpadminbar #wp-admin-bar-xmlrpc-status > .ab-item {
  background: #27ae60; /* 緑背景 */
  color: #fff !important;
  font-weight: bold;
}

#wpadminbar #wp-admin-bar-xmlrpc-status .ab-icon:before {
  color: #fff !important;
}
    

代用プラグイン

コード編集が不安な場合は以下のプラグインでも XML-RPC を簡単に無効化できます:

  • Disable XML-RPC
  • All In One WP Security(セキュリティ対策の一部機能として無効化可能)

まとめ

XML-RPC は現在ほとんど使われておらず、セキュリティ上のリスクもあるため、無効化するのが推奨です。functions.php へコードを追加する方法がシンプルで軽量ですが、不安な場合はプラグインを利用しましょう。