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 変数に、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 );

ちなみに、Codexによると、公開された投稿が編集されるたびに呼び出されるpublish_postため、この場合に使用するのに最適なフックではない可能性があります。すべての更新をつぶやきたい場合を除き、フック (投稿オブジェクトを渡す) を確認することをお勧めします。したがって、代わりに、おそらく次のような方がうまくいくでしょう:${old_status}_to_${new_status}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 に答える