可以使用add_rewrite_rule().
在这种情况下,我们将注册端点http://example.com/api/user_data/{id}. 
然后检查以确保IDis numeric. 如果是,请查找user by id 并输出JSON response.
    URL
    http://example.com/api/user_data/1
    JSON
    {
      "success": true,
      "data": {
        "id": 1,
        "display_name": "your_username",
        "user_registered": "2015-11-12 05:00:00",
        "first": "First",
        "last": "Last Name"
      }
    }
 PHP将其放入函数中。php或插件,然后刷新永久链接。
if ( ! class_exists( \'JSONEndpoint_UserData\' ) ):
    /**
     * The code that registers the endpoint and handles the result
     */
    class JSONEndpoint_UserData {
        const ENDPOINT_NAME       = \'api/user_data\'; // endpoint to capture
        const ENDPOINT_QUERY_NAME = \'__api_user_data\'; // turns to param
        // WordPress hooks
        public function run() {
            add_filter( \'query_vars\', array( $this, \'add_query_vars\' ), 0 );
            add_action( \'parse_request\', array( $this, \'sniff_requests\' ), 0 );
            add_action( \'init\', array( $this, \'add_endpoint\' ), 0 );
        }
        // Add public query vars
        public function add_query_vars( $vars ) {
            $vars[] = static::ENDPOINT_QUERY_NAME;
            $vars[] = \'id\';
            return $vars;
        }
        // Add API Endpoint
        public function add_endpoint() {
            add_rewrite_rule( \'^\' . static::ENDPOINT_NAME . \'/([^/]+)/?$\', \'index.php?\' . static::ENDPOINT_QUERY_NAME . \'=1&id=$matches[1]\', \'top\' );
// --->
            flush_rewrite_rules( true ); //// <---------- REMOVE THIS WHEN DONE TESTING
// --->
        }
        // Sniff Requests
        public function sniff_requests( $wp_query ) {
            global $wp;
            if ( isset( $wp->query_vars[ static::ENDPOINT_QUERY_NAME ] ) ) {
                $this->handle_request(); // handle it
            }
        }
        // Handle Requests
        protected function handle_request() {
            global $wp;
            // we only deal with number$
            $id = is_numeric( $wp->query_vars[ \'id\' ] ) ? absint( $wp->query_vars[ \'id\' ] ) : false;
            if ( ! is_numeric( $id ) || ! $user = get_user_by( \'id\', $id ) ) {
                wp_send_json_error( array( \'message\' => \'Invalid User ID\' ) );
            }
            // ALLOWING ACCESS FROM ANYWHERE --- WE MIGHT WANT TO RESTRICT THE PLACES THAT CAN USE THIS
            header( "Access-Control-Allow-Origin: *" );
            // prep the response
            $data = array(
                \'id\'              => $user->ID,
                \'display_name\'    => $user->data->display_name,
                \'user_registered\' => $user->data->user_registered, 
                \'first\'           => $user->first_name,
                \'last\'            => $user->last_name,
            );
            // write the response
            wp_send_json_success( $data );
            die(); // just in case
        }
    }
    $ep = new JSONEndpoint_UserData();
    $ep->run();
endif; // JSONEndpoint_UserData