Je cherche un moyen d'obtenir l'ID de background_image lorsque j'utilise des en-têtes personnalisés?
Je me suis fatigué en utilisant url_to_postid
comme ceci:
$url = get_header_image()
$postid = url_to_postid( $url );
et $ url = get_theme_mod ('header-image') $ postid = url_to_postid ($ url);
J'ai eu une valeur nulle pour les deux, ce que j'ai compris parce que get_header_image()
et get_theme_mod('header-image')
retournent l'URL sous la forme example.com/wp-content/uploads ... mais url_to_postid
a besoin, c'est example.com/?attachment_id=#.
J'ai aussi pensé à get_theme_mods();
mais cela ne renvoie que l'URL long de l'image d'arrière-plan. Pas l'URL plus courte ou l'ID. Cependant, cela donne l'identifiant pour l'image d'en-tête, grrr.
Qu'est-ce que j'oublie ici?
Pour mémoire, je le fais pour obtenir l'image d'arrière-plan avec wp_get_attachment_image_src()
dans une feuille de style dynamique et utiliser l'argument $ size, avec certaines tailles personnalisées pour renvoyer une taille différente en fonction de la taille de l'écran. De cette façon, je peux créer des arrière-plans en plein écran sans avoir à charger et à réduire une image volumineuse pour un écran de téléphone. Des solutions alternatives à mon problème actuel sont plus que bienvenues.
Requête pour les clés de méta de publication _wp_attachment_is_custom_background
ou _wp_attachment_is_custom_background
:
function t5_bg_img_id()
{
if ( ! $bg_img = get_background_image() )
return FALSE;
$query = array(
'post_type' => 'attachment',
'fields' => 'ids',
'meta_query' => array (
array (
'key' => '_wp_attachment_is_custom_background',
'value' => get_option( 'stylesheet' ),
'compare' => '==',
),
array (
'key' => '_wp_attachment_metadata',
'value' => basename( $bg_img ),
'compare' => 'LIKE',
)
)
);
if ( array () === $bg_post = get_posts( $query ) )
return FALSE;
return $bg_post[0];
}