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.
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. |