【メモ】wp_upload_dir – 画像のフルパスが欲しい –

画像のフルバスが欲しい。。。
Function Reference/wp upload dir « WordPress Codex

[code]
Array
(
[path] => /var/www/wordpress/wp-content/uploads/2016/01
[url] => http://test.local/wp-content/uploads/2016/01
[subdir] => /2016/01
[basedir] => /var/www/wordpress/wp-content/uploads
[baseurl] => http://test.local/wp-content/uploads
[error] =>
)
[/code]

な配列が返ってくる。
例えば、アイキャッチ画像のURLの場合、get_attachment_image_src使って

[php]
<?php
$post_thumbnail_id = get_post_thumbnail_id( $post->ID );
$post_thumbnail_datas = wp_get_attachment_image_src( $post_thumbnail_id, ‘full’ );
$attachments[] = esc_url( $post_thumbnail_datas[0] );
[/php]

でhttp://test.loca/wp-content/uploads/2016/01/xxxx.jpgとか出せる。

…でも欲しいのはフルパス。
結局、上の二つを合わせて、

[php]
<?php
$image_abs_path = esc_url( $post_thumbnail_datas[0] );
$to_file_name_byte = mb_strrpos( $image_abs_path, ‘/’ );
$to_file_name_byte = $to_file_name_byte + 1;
$berore_filename = mb_substr( $image_abs_path, 0, $to_file_name_byte );

$filename = explode( $berore_filename, $image_abs_path ); // File name.
$image_full_path = trailingslashit( $upload_dir_path ) . sanitize_file_name( $filename[1] );
[/php]

これで一先ずフルパスになる。。
関数無いのかな?って思ったけど、見つけられず。。

でも上記だと、uploadsディレクトリを、

[code]
define( ‘UPLOADS’, ‘/blog/wp-content/uploads’ );
[/code]

とか、アップロード先を変更していても、問題なし 🙂

wp-config.php の編集 – WordPress Codex 日本語版(アップロードディレクトリの移動)

少し前進。

あともう一個。
予約投稿 → 公開 とpost_statusが変わる場合、何故か、wp_mailの$attachmentsに設定している画像が添付されないっぽい。。
デバッグってどこでやるんだろ。。そこわかってないのが問題っすね 😛

うむーー。。いろいろ面白いっすな (^0^;)