Fixing WordPress App Error: Required XML-RPC methods are missing on the server

Problem

I want to use the WordPress App (iOS) with my WordPress website (not wordpress.com, the self-deployed wordpress.org version) but I am getting error message on the App saying: “Couldn’t connect. Required XML-RPC methods are missing on the server”.

Background

My WordPress website is hosted on a DigitalOcean‘s cloud Ubuntu droplet which, for deployment, I used the WordPress 1-click Application. This was great, as everything is configured for and means that there is very minimal work for me to install or configure any component!

The 1-click WordPress automatically includes components like Apache, PHP, MySQL as well as multiple security stuff like UFW, fail2ban, and custom Apache conf setting for blocking WordPress’s XML-RPC service.

Fix attempts (which in the end still did not work)

Disable XML-RPC blocking Apache configuration

  • a2disconf block-xmlrpc
  • service apache2 restart

Disable UFW

  • service ufw stop

Disable fail2ban

  • service fail2ban stop

Disable any WordPress plugin that might be blocking the XML-RPC service

  • E.g. Wordfence, Sucuri, iThemes Security

Checking that the no theme/plugins are disabling the XML-RPC service

  • Search for add_filter(“xmlrpc_enabled”, “__return_false”)

Disable proxying through Cloudflare

  • Cloudflare could be blocking the service

Solution (kind of)

In the end, what worked for me was this:

  1. Disable XML-RPC blocking Apache configuration
    • a2disconf block-xmlrpc
    • service apache2 restart
  2. Enter server’s IP Address instead of domain name on the WordPress App
  3. If you are using Wordfence’s 2FA login, you would also need to disable “Require 2FA for XML-RPC call authentication”

Yes!! Now the app works. Not a great solution, having to use the IP address, but if it works… it works.

P.S. I still don’t know why using the domain name would not work 🙁

Update: A working solution!!

I am now able to use domain name on the WordPress App. The solution was to force quit the app first and then reopen the app and use the domain name.

This is probably related to some kind of caching issue. If the first time you try to connect was unsuccessful and returned an error, somehow the subsequent attempt to connect, even though everything is already setup correctly, would be also unsuccessful.

Hope this helps!!

Leave a comment

Your email address will not be published. Required fields are marked *