如何获取背景图片的附件ID?

时间:2013-05-03 作者:JPollock

我正在寻找一种在使用自定义标题时获取background\\u图像ID的方法?

我厌倦了使用url_to_postid 像这样:

$url = get_header_image()
$postid = url_to_postid( $url );
$url=get\\u theme\\u mod(\'header-image\')$postid=url\\u to\\u postid($url);

我得到了两者的空值,我意识到这是因为两者get_header_image()get_theme_mod(\'header-image\') 以示例的形式返回url。com/wp内容/上载。。。但是什么url_to_postid 需求就是一个例子。com/?附件\\u id=#。

我还想过get_theme_mods(); 但它只返回背景图像的长url。不是较短的url或ID。它确实为标题图像提供了ID,grrr。

我错过了什么?

作为记录,我这样做是为了能用wp_get_attachment_image_src() 在动态样式表中,并使用$size参数,以及一些自定义大小,以根据屏幕大小返回不同的大小。这样我就可以制作全屏幕背景,而不必为手机屏幕加载和缩小一些大图像。我的实际问题的替代解决方案非常受欢迎。

1 个回复
SO网友:fuxia

查询post元键_wp_attachment_is_custom_background_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];
}

结束

相关推荐

mobile vs responsive sites

美国一家医疗诊所的网络公司告诉我,对他们来说,建立一个常规的WP网站和一个单独的WP移动网站比建立一个单一的WP响应网站更便宜。什么是更好的传统智慧。是否只对那些负担不起常规和移动站点的用户做出响应,或者它处理的设备是否比移动站点多?