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 フィードからコンテンツを取得し、それらを Web サイトに投稿として作成します。

$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 に答える