web-dev-qa-db-ja.com

Wp_get_attachment_urlをループ外に取得する

注目の画像をループの外に出す必要があります。これは、各ページに、フルスクリーンの背景画像を、特色のある画像で設定して、別々に表示できるようにするためです。

いくつかの調査を行った後、投稿IDをループの外に出すことができました。

これは私が持っているものです:

$page_object = get_queried_object();
$page_id     = get_queried_object_id();
$bkgdImg = wp_get_attachment_url( $page_id );
if (!empty($bkgdImg)) {
    $backgroundImg = $bkgdImg;
}
else {
    $defaultbackground = . get_template_directory_uri() . "/images/default-background.jpg";
    $backgroundImg = $defaultBackground;
}

echo $backgroundImg;

ありがとうございます。

1
Alexnl

あなたの例のようにあなたが探している結果がURLのプリントアウトであるならば、これはうまくいくはずです:

$page_id = get_queried_object_id();
if ( has_post_thumbnail( $page_id ) ) :
    $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $page_id ), 'optional-size' );
    $image = $image_array[0];
else :
    $image = get_template_directory_uri() . '/images/default-background.jpg';
endif;
echo $image;
6
windyjonas

あなたはいくつかの構文エラーを持っています、しかしあなたの質問であなたはそれを述べています...

これは、各ページに、フルスクリーンの背景画像を、特色のある画像で設定して、別々に表示できるようにするためです。

wp_get_attachment_url は、注目の画像が添付されているページIDではなく、実際の添付IDを取得します。そのため、質問は「予想される画像のURLが取得できないのはなぜですか」と想定します。

必要なのはget_post_thumbnail_idを使用してそれをwp_get_attacment_url..に渡すことです。

$bkgdImg = wp_get_attachment_url(get_post_thumbnail_id( $page_id ));

...サイズを指定するための 秒引数を付けて -

私は正しく推測したと思います:)

1
s_ha_dum

これでうまくいき、画像のURLを取得できました。

$page_id = get_queried_object_id();
$post_thumbnail_id = get_post_thumbnail_id( $page_id );
$bkgdImg = wp_get_attachment_url( $post_thumbnail_id );
echo $bkgdImg;

あなたのすべての助けをありがとう、それは正しい方向に私を置きました。

1
Alexnl

サムネイルのテーマサポートを追加add_theme_support('post-thumbnails');

それからあなたのアーカイブページに以下のコードを書いてください。それはあなたのWordPressループの前に動作します

$thumb_id = get_post_thumbnail_id();
$thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);
$thumb_url = $thumb_url_array[0];
echo $thumb_url;
1
Nurealam Sabbir