Wordpress发布特色图片到Twitter

时间:2012-11-06 13:58:25

标签: wordpress twitter

我有一个Photo / Wordpress网站,其中每个帖子都包含一个精选图片。我想要创建的是在发布帖子后自动将上传的特色图像发布到Twitter。我设法为Functions.php添加一个函数,该函数在发布帖子时执行。

add_action('publish_post','postToTwitter');

postToTwitter函数使用Matt Harris OAuth 1.0A库创建推文。 如果我附加一个相对于postToTwitter函数文件的图像,这可以正常工作。

// this is the jpeg file to upload. It should be in the same directory as this file.
$image = dirname(__FILE__) . '/image.jpg';

所以我希望$ image var保存我上传到Wordpress帖子的特色图片。

但是,仅通过添加上传图像中的URL(因为Wordpress上传文件夹与postToTwitter函数的文件无关),这不起作用: 使用媒体端点(Twitter)的更新仅支持在POST中直接上传的图像 - 它不会将远程URL作为参数。

所以我的问题是我如何参考POST上传的精选图片?

// This is how it should work with an image upload form
$image = "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}"

1 个答案:

答案 0 :(得分:0)

听起来你只是在询问如何获取图像文件路径而不是url,并填充$ image字符串的其余部分。您可以使用Wordpress函数get_attached_file()获取文件路径,然后将其传递给一些php函数以获取其余的图像元数据。

// Get featured image.
$img_id = get_post_thumbnail_id( $post->ID );
// Get image absolute filepath ($_FILES['image']['tmp_name'])
$filepath = get_attached_file( $img_id );
// Get image mime type ($_FILES['image']['type'])
//  Cleaner, but deprecated: mime_content_type( $filepath )
$mime = image_type_to_mime_type( exif_imagetype( $filepath ) );
// Get image file name ($_FILES['image']['name'])
$filename = basename( $filepath );

顺便说一句,publish_post可能不是在这种情况下使用的最佳钩子,因为according to the Codex,每次编辑发布的帖子时也会调用它。除非您希望每个更新都是Twitter,否则您可能需要查看${old_status}_to_${new_status}挂钩(它传递post对象)。因此,代替add_action('publish_post','postToTwitter'),也许这样的事情会更好:

add_action( 'new_to_publish', 'postToTwitter' );
add_action( 'draft_to_publish', 'postToTwitter' );
add_action( 'pending_to_publish', 'postToTwitter' );
add_action( 'auto-draft_to_publish', 'postToTwitter' );
add_action( 'future_to_publish', 'postToTwitter' );

或者,如果您想根据帖子的先前状态更改推文,最好使用此挂钩:transition_post_status,因为它会将旧状态和新状态作为参数传递。