WordPress 4.7で、Imagicが利用できるサーバーだと、PDFのスクリーンショットを自動的に作成する機能が追加されます。
通常は、PDFファイルの添付画面で表示したり、メディア一覧で使用されます。
メディアの挿入からは、リンクが挿入されるのですが、スクリーンショットを使ったリンクを使いたいといった事も出てくるのではないかと思います。
投稿IDを指定して、その投稿に添付された(投稿のメディアを追加でアップロードした)PDFのスクリーンショットのリンクを書き出す関数を作成してみました。
function prefix_get_attached_all_pdf_screenshots( $post_id= 0 ) {
global $post;
if ( isset( $post ) && !empty( $post ) && empty( $post_id ) ) {
$post_id= $post->ID;
}
$query_pdf_args= array(
'post_type' => 'attachment',
'post_mime_type'=> 'application/pdf',
'post_status' => 'inherit',
'numberposts' => 1,
'posts_per_page'=> -1,
'post_parent' => $post_id,
);
$pdf_ids = array_keys( get_children( $query_pdf_args ) );
$upload_dir = wp_upload_dir();
$pdf_screenshots= '';
foreach ( $pdf_ids as $pdf ) {
$meta_datas_pdf= wp_get_attachment_metadata( $pdf );
if ( isset( $meta_datas_pdf[ 'sizes' ] ) ) {
foreach ( $meta_datas_pdf[ 'sizes' ] as $key=> $pdf_screenshot ) {
if ( file_exists( $upload_dir[ 'path' ] . '/' . $pdf_screenshot[ 'file' ] ) ) {
$pdf_screenshots .= '<li><a href="' . esc_url( $upload_dir[ 'url' ] . '/' . $pdf_screenshot[ 'file' ] ) . '">
<span class="image-size">' . esc_html( $key ) . '</span>
<span class="image-width">' . absint( $pdf_screenshot[ 'width' ] ) . '</span>
<span class="image-height">' . absint( $pdf_screenshot[ 'height' ] ) . '</span></a></li>';
}
}
}
}
echo $pdf_screenshots;
}
prefix_get_attached_all_pdf_screenshots( 投稿ID );
で、投稿に添付された、すべてのPDFの スクリーンショットのサイズと画像へのリンクを書き出します。