web-dev-qa-db-ja.com

スラッグで添付ファイルを取得

特定のスラッグを指定して、そのアドレスを画像のソースコードでエコーすることによって画像を取得したいと思います。

画像のスラッグは "book-site-header"です。

私はワードプレスコーデックスのget_wp_attachmentとget_wp_attachment_metadataを調べましたが、どちらもスラッグについては言及していません。ナメクジは一意である必要があり、DBに保存されるので、ナメクジに基づいて検索して関連ファイルのURLを取得することが可能でなければなりません。

image of slug area

3
Alexnl

添付ファイルは、post_status = inheritおよびpost_type = attachmentを含む単なる投稿であるため、WP_Queryまたはget_postsを使用して照会できます。

Slug(post_name は投稿タイプごとに一意です

$_header = get_posts('post_type=attachment&name=book-site-header&posts_per_page=1&post_status=inherit');
$header = $_header ? array_pop($_header) : null;  
$header_url = $header ? wp_get_attachment_url($header->ID) : '';

上記のコードを使用して独自のカスタム機能を構築することもできます。

function get_attachment_url_by_slug( $slug ) {
  $args = array(
    'post_type' => 'attachment',
    'name' => sanitize_title($slug),
    'posts_per_page' => 1,
    'post_status' => 'inherit',
  );
  $_header = get_posts( $args );
  $header = $_header ? array_pop($_header) : null;
  return $header ? wp_get_attachment_url($header->ID) : '';
}

その後

$header_url = get_attachment_url_by_slug('book-site-header');
6
gmazzap