Title: IXR_Server::serve
Published: July 6, 2022
Last modified: February 24, 2026

---

# IXR_Server::serve( $data = false )

## In this article

 * [Source](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#related)

[ Back to top](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#wp--skip-link--target)

## 󠀁[Source](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#source)󠁿

    ```php
        function serve($data = false)
        {
            if (!$data) {
                if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] !== 'POST') {
                    if ( function_exists( 'status_header' ) ) {
                        status_header( 405 ); // WP #20986
                        header( 'Allow: POST' );
                    }
                    header('Content-Type: text/plain'); // merged from WP #9093
                    die('XML-RPC server accepts POST requests only.');
                }

                $data = file_get_contents('php://input');
            }
            $this->message = new IXR_Message($data);
            if (!$this->message->parse()) {
                $this->error(-32700, 'parse error. not well formed');
            }
            if ($this->message->messageType != 'methodCall') {
                $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall');
            }
            $result = $this->call($this->message->methodName, $this->message->params);

            // Is the result an error?
            if (is_a($result, 'IXR_Error')) {
                $this->error($result);
            }

            // Encode the result
            $r = new IXR_Value($result);
            $resultxml = $r->getXml();

            // Create the XML
            $xml = <<<EOD
    <methodResponse>
      <params>
        <param>
          <value>
          $resultxml
          </value>
        </param>
      </params>
    </methodResponse>

    EOD;
          // Send it
          $this->output($xml);
        }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/ixr/class-ixr-server.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/IXR/class-IXR-server.php#L38)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/IXR/class-IXR-server.php#L38-L85)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#related)󠁿

| Uses | Description | 
| [IXR_Server::error()](https://developer.wordpress.org/reference/classes/ixr_server/error/)`wp-includes/IXR/class-IXR-server.php` |  | 
| [IXR_Server::output()](https://developer.wordpress.org/reference/classes/ixr_server/output/)`wp-includes/IXR/class-IXR-server.php` |  | 
| [IXR_Server::call()](https://developer.wordpress.org/reference/classes/ixr_server/call/)`wp-includes/IXR/class-IXR-server.php` |  | 
| [IXR_Value::__construct()](https://developer.wordpress.org/reference/classes/ixr_value/__construct/)`wp-includes/IXR/class-IXR-value.php` |

PHP5 constructor.

  | 
| [IXR_Message::__construct()](https://developer.wordpress.org/reference/classes/ixr_message/__construct/)`wp-includes/IXR/class-IXR-message.php` |

PHP5 constructor.

  | 
| [status_header()](https://developer.wordpress.org/reference/functions/status_header/)`wp-includes/functions.php` |

Sets HTTP status header.

  |

[Show 1 more](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/ixr_server/serve/?output_format=md#)

| Used by | Description | 
| [IXR_Server::__construct()](https://developer.wordpress.org/reference/classes/ixr_server/__construct/)`wp-includes/IXR/class-IXR-server.php` |

PHP5 constructor.

  |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fixr_server%2Fserve%2F)
before being able to contribute a note or feedback.