For pingbacks, it seems only the linked page/post and the page/post it linked
from are sent. Check out the pingback()
function, specifically this line:
$client->query( 'pingback.ping', $pagelinkedfrom, $pagelinkedto );
… where $client
is an instance of WP_HTTP_IXR_Client
. The query
method uses IXR_Request
to package up a simple XML document:
<?xml version="1.0"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value>
<string>[pagelinkedfrom]</string>
</value>
</param>
<param>
<value>
<string>[pagelinkedto]</string>
</value>
</param>
</params>
</methodCall>
… which is then sent to the pingback server URL (passed in when $client
is instantiated).
Trackbacks, little more straightforward, and with a bit more data – see trackback()
:
$options['body'] = array(
'title' => $title,
'url' => get_permalink($ID),
'blog_name' => get_option('blogname'),
'excerpt' => $excerpt
);
// WP_Http will automatically convert body to a HTTP query string
$response = wp_safe_remote_post( $trackback_url, $options );
As for handling/intercepting the responses, check out the source of wp_xmlrpc_server::pingback_ping()
in wp-includes/class-wp-xmlrpc-server.php
for pings, and the file wp-trackback.php
for trackbacks.
You’ll quickly see what actions/filters you have available, and how much you can interact with (& alter) the responses.