WordPress Version: 6.3
/**
* Performs trackbacks.
*
* @since 1.5.0
* @since 4.7.0 `$post` can be a WP_Post object.
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int|WP_Post $post Post ID or object to do trackbacks on.
* @return void|false Returns false on failure.
*/
function do_trackbacks($post)
{
global $wpdb;
$post = get_post($post);
if (!$post) {
return false;
}
$to_ping = get_to_ping($post);
$pinged = get_pung($post);
if (empty($to_ping)) {
$wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post->ID));
return;
}
if (empty($post->post_excerpt)) {
/** This filter is documented in wp-includes/post-template.php */
$excerpt = apply_filters('the_content', $post->post_content, $post->ID);
} else {
/** This filter is documented in wp-includes/post-template.php */
$excerpt = apply_filters('the_excerpt', $post->post_excerpt);
}
$excerpt = str_replace(']]>', ']]>', $excerpt);
$excerpt = wp_html_excerpt($excerpt, 252, '…');
/** This filter is documented in wp-includes/post-template.php */
$post_title = apply_filters('the_title', $post->post_title, $post->ID);
$post_title = strip_tags($post_title);
if ($to_ping) {
foreach ((array) $to_ping as $tb_ping) {
$tb_ping = trim($tb_ping);
if (!in_array($tb_ping, $pinged, true)) {
trackback($tb_ping, $post_title, $excerpt, $post->ID);
$pinged[] = $tb_ping;
} else {
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->posts} SET to_ping = TRIM(REPLACE(to_ping, %s,\n\t\t\t\t\t'')) WHERE ID = %d", $tb_ping, $post->ID));
}
}
}
}