5

我有一个照片/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']}"
4

1 回答 1

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在这种情况下可能不是最好的钩子,因为根据 Codex,每次编辑发布的帖子时都会调用它。除非您希望发布每个更新,否则您可能需要查看${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因为它将旧状态和新状态作为参数传递。

于 2013-03-15T16:08:25.270 回答