0

我正在使用 FeedWordPress 插件http://wordpress.org/extend/plugins/feedwordpress/将帖子从一个站点拉到另一个站点。

我编写了一个过滤器,在 Stack 用户的帮助下成功扫描 $content 并将图像 URL 提取到 $new_content

define('FWPASTOPC_AUTHOR_NAME', 'radgeek');

add_filter(
/*hook=*/ 'syndicated_item_content',
/*function=*/ 'fwp_add_source_to_content',
/*order=*/ 10,
/*arguments=*/ 2
);

function fwp_add_source_to_content ($content, $post) {
// Use SyndicatedPost::author() to get author
// data in a convenient array
$content = $post->content();

// Authored by someone else
if( preg_match( '/<img[^>]+src\s*=\s*["\']?([^"\' ]+)[^>]*>/', $content, $matches ) ) {
$new_content .= 'URL IS '.$matches[0].'';

return $new_content;
}
else
{
}
}

我现在想做的是将此 URL 保存到自定义字段中,而不是仅仅返回它。有没有人取得过类似的成就?

4

1 回答 1

0

据我了解,该插件从外部 RSS 提要中获取内容并将它们创建为您网站中的帖子。

如果是这种情况,使用您的过滤器,您应该能够在$post变量中获取帖子 ID。

因此,您只需要add_post_meta()函数即可将自定义字段添加到特定帖子。

所以在它上面包含你的代码应该看起来像:

define('FWPASTOPC_AUTHOR_NAME', 'radgeek');

add_filter(
/*hook=*/ 'syndicated_item_content',
/*function=*/ 'fwp_add_source_to_content',
/*order=*/ 10,
/*arguments=*/ 2
);

function fwp_add_source_to_content ($content, $post) {
// Use SyndicatedPost::author() to get author
// data in a convenient array
$content = $post->content();

// Authored by someone else
if( preg_match( '/<img[^>]+src\s*=\s*["\']?([^"\' ]+)[^>]*>/', $content, $matches ) ) {
$new_content .= 'URL IS '.$matches[0].'';    

//Add custom field with author info to post
add_post_meta($post->ID, 'post_author', $new_content); 

return $new_content;
}
}
于 2012-09-17T00:11:20.433 回答