web-dev-qa-db-ja.com

アップロード画像のURLを取得する

私は、ニュースレターを作成するプラグインを開発中です。

画像はメディアライブラリ(uploads/current_year/current_month/)を使用してアップロードされており、画像の名前を使用して画像のURLを取得したいです。

すべての画像を反復せずにこれを行う方法はありますか?

私はプラグインフォルダに画像を保存しようとしましたが、ウェブサイトはhttpsを使用します、そしてこの場所は認証なしではアクセスできない。

画像を保存するための別の場所に関する提案はありますか?

2
thedev

私はあなたがwp_postsテーブルにカスタムのmySQLクエリを実行するべきであると思います。

SELECT ID FROM `wp_posts` where guid like '%filename.jpg';

(もちろんデータベースへの問い合わせには$ wpdbオブジェクトを使用してください)。それからあなたはその添付ファイルのpostidを持つでしょう、そしてあなたはWP AP​​Iから wp_get_attachment_url() を使うことができます。

1
Maor Barazany

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;
}
1
fuxia