私は、ニュースレターを作成するプラグインを開発中です。
画像はメディアライブラリ(uploads/current_year/current_month/
)を使用してアップロードされており、画像の名前を使用して画像のURLを取得したいです。
すべての画像を反復せずにこれを行う方法はありますか?
私はプラグインフォルダに画像を保存しようとしましたが、ウェブサイトはhttpsを使用します、そしてこの場所は認証なしではアクセスできない。
画像を保存するための別の場所に関する提案はありますか?
私はあなたがwp_postsテーブルにカスタムのmySQLクエリを実行するべきであると思います。
SELECT ID FROM `wp_posts` where guid like '%filename.jpg';
(もちろんデータベースへの問い合わせには$ wpdbオブジェクトを使用してください)。それからあなたはその添付ファイルのpostidを持つでしょう、そしてあなたはWP APIから wp_get_attachment_url() を使うことができます。
wp_upload_dir()
は完璧です。書き込み権限が期待できるのはここだけです。
パスではなく添付ファイルIDを保管してください。それならあなたは 次のように画像 を手に入れます:
wp_get_attachment_url( $attach_id )
ユーザーがメディアライブラリごとに画像を削除したことがあります。ファイルが見つからないという問題を回避するには、最初にwp_get_attachment_url()
からの戻り値を確認してください。私のプラグインの一つからの抜粋:
/**
* Returns image markup.
* Empty string if there is no image.
*
* @param int $attach_id
* @return string
*/
protected function get_image_tag( $attach_id )
{
$img_url = (string) wp_get_attachment_url( $attach_id );
if ( '' == $img_url )
{
return '';
}
$img = "<img src='$img_url' alt='' width='$this->width' height='$this->height'>";
return $img;
}