web-dev-qa-db-ja.com

ワードプレスでメディアにimagickリソースをアップロードする方法

    $filePath = wp_get_attachment_url( $id );
$tempfilename = explode("/", $filePath);
$temppdffile = end($tempfilename);
$cuurentPath = plugin_dir_path( __FILE__ ).$temppdffile;
$im = new Imagick();
$im->setResolution(300, 300);
$im->readImage( $cuurentPath.'[0]'); 
$im->setImageFormat('jpg');

私は上記のコードを持っています..成功した画像を生成しました。任意のアイデア..すべてのことを試してみました

1
Int-khab

私はImagickにあまり馴染みがありませんが、それを使って作成した画像のURLを取得できれば、残りはWordPressのmedia_sideload_image()関数を使ってかなり簡単になります。これは(設定ページのような)wp-admin領域から機能する基本的な例です。それはあなたが私の$idの代わりにあなたの$post_id変数を使っているように見えることに注意してください:

// load image from URL into media library, set a post as its parent, and return new attachment's id
$attachment_id = media_sideload_image( $image_url, $post_id, $img_title, 'id'); 
if( !is_wp_error( $attachment_id ) ) { // if no error returned...
    // ...Set above loaded image as the featured image of the current post
    set_post_thumbnail($post_id, $attachment_id);
}

コーデックスがmedia_sideload_imageの3番目のパラメータに画像の説明を設定すると言っているが、それは画像のタイトルを設定することに注意してください。また、4.8で添付ファイルIDを返すための4番目のパラメータを追加したところです。

もっと詳しく

フロントエンドでこれを実装している場合は、media_sideload_imageがアップロードを処理できるように、次の3つのファイルをスクリプトに含める必要があります。

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
2
Ben HartLenn