我使用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
{
}
}
我现在要做的是将此网址保存到自定义字段中,而不是仅返回它。有没有人取得过类似的成就?
答案 0 :(得分:0)
据我了解,该插件会从外部RSS Feed中抓取内容并将其创建为您网站中的帖子。
如果是这种情况,使用您的过滤器,您应该能够在$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;
}
}