函数文档

trackback()

💡 云策文档标注

概述

trackback() 函数用于发送 Trackback 到指定 URL,并更新数据库以防止重复发送。它通过 HTTP POST 请求发送数据,并在成功后更新相关帖子的 pinged 和 to_ping 字段。

关键要点

  • 函数参数包括 $trackback_url(必需,Trackback URL)、$title(必需,帖子标题)、$excerpt(必需,帖子摘要)和 $post_id(必需,帖子 ID)。
  • 使用 wp_safe_remote_post() 发送安全的 HTTP POST 请求,包含标题、URL、博客名称和摘要等数据。
  • 成功发送后,通过 $wpdb->query() 更新数据库:将 Trackback URL 添加到 pinged 字段,并从 to_ping 字段中移除。
  • 返回数据库查询结果(int|false|void),具体取决于操作成功与否。

代码示例

function trackback( $trackback_url, $title, $excerpt, $post_id ) {
    global $wpdb;

    if ( empty( $trackback_url ) ) {
        return;
    }

    $options            = array();
    $options['timeout'] = 10;
    $options['body']    = array(
        'title'     => $title,
        'url'       => get_permalink( $post_id ),
        'blog_name' => get_option( 'blogname' ),
        'excerpt'   => $excerpt,
    );

    $response = wp_safe_remote_post( $trackback_url, $options );

    if ( is_wp_error( $response ) ) {
        return;
    }

    $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET pinged = CONCAT(pinged, 'n', %s) WHERE ID = %d", $trackback_url, $post_id ) );
    return $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $trackback_url, $post_id ) );
}

注意事项

  • 如果 $trackback_url 为空,函数将直接返回,不执行任何操作。
  • 使用 wp_safe_remote_post() 确保 HTTP 请求的安全性,避免潜在的安全风险。
  • 数据库更新操作依赖于 $wpdb 对象,确保在调用前已正确初始化。
  • 函数返回类型为 int|false|void,开发者需根据返回值处理成功或失败情况。

📄 原文内容

Sends a Trackback.

Description

Updates database when sending trackback to prevent duplicates.

Parameters

$trackback_urlstringrequired
URL to send trackbacks.
$titlestringrequired
Title of post.
$excerptstringrequired
Excerpt of post.
$post_idintrequired
Post ID.

Return

int|false|void Database query from update.

Source

function trackback( $trackback_url, $title, $excerpt, $post_id ) {
	global $wpdb;

	if ( empty( $trackback_url ) ) {
		return;
	}

	$options            = array();
	$options['timeout'] = 10;
	$options['body']    = array(
		'title'     => $title,
		'url'       => get_permalink( $post_id ),
		'blog_name' => get_option( 'blogname' ),
		'excerpt'   => $excerpt,
	);

	$response = wp_safe_remote_post( $trackback_url, $options );

	if ( is_wp_error( $response ) ) {
		return;
	}

	$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET pinged = CONCAT(pinged, 'n', %s) WHERE ID = %d", $trackback_url, $post_id ) );
	return $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $trackback_url, $post_id ) );
}

Changelog

Version Description
0.71 Introduced.