有没有比这个更好的抓取缩略图的方法?

时间:2013-07-03 作者:bigpotato

我目前正在将我的WP升级到3.2.1到3.5.2,我的帖子中有一部分的特色图片似乎已经消失了。然而,我只是通过phpmyadmin检查了数据库中的wp\\u posts表,并查找了我的一篇有此问题的帖子。我的img 标签是动态生成的,但问题是src 为空。以下是其中一个帖子的示例:

鉴于我的wp\\U posts表中的此记录:

    ID     post_author  post_date   post_date_gmt   post_content    post_title  post_excerpt    post_status     comment_status  ping_status     post_password   post_name   to_ping     pinged  post_modified   post_modified_gmt   post_content_filtered   post_parent     guid                                                 menu_order     post_type   post_mime_type  comment_count   cod_current_ahrf 
    16169  1            2011-06-17  2011-06-17                      Nick-Arias                  inherit         close           close                           Nick-Arias.jpg          0000-00-00 00:00:00     0000-00-00 00:00:00                         3728            /images/ahrf/pioneers/legends_face/Nick-Arias.jpg    0              attachment  image/jpeg      0   
类别图例。php:

if(file_exists($_SERVER{\'DOCUMENT_ROOT\'}.substr($fivesdraft->guid_legend,20)))
    {
    echo $fivesdraft->ID; // returns 3728
    $featured = gangmei_get_the_post_thumbnail_url( $fivesdraft->ID );          
    echo \'<li class="legends-thumb"><div class="img-wrapper"><a href="/?legends=\'.$fivesdraft->post_name.\'"><img src="\'.$featured.\'" alt="\'.$fivesdraft->name.\'" /></div><p><a href="/?legends=\'.$fivesdraft->post_name.\'">\'.$fivesdraft->name.\'</a></p></li>\';
    } 
功能。php:

    function gangmei_get_the_post_thumbnail_url($post_id = NULL) {
        global $id;
        $post_id = (NULL === $post_id) ? $id : $post_id;
        $edmund = get_post_thumbnail_id($post_id);
        echo "post_id = $post_id"; // returns 3728
        echo "edmund = $edmund"; // returns 16169
        $src = wp_get_attachment_image_src(get_post_thumbnail_id($post_id), \'full\'); //the issue arises here. this returns nothing.
        $src = $src[0];
        return $src;

    }
这就是所产生的:<img src="" alt="Nick Arias">. 应该生产的是:<img alt="Nick Arias" src="/images/ahrf/pioneers/legends_face/Nick-Arias.jpg">

问题是guid 列,您可以看到该记录的该列的值为/images/ahrf/pioneers/legends_face/Nick-Arias.jpg. 是否可以抓住guid 而不是完成所有这些功能?像这样:

$featured = $fivesdraft->guid;?

3 个回复
最合适的回答,由SO网友:bigpotato 整理而成

所以我想出来了。我所做的是简化整个过程:

if(file_exists($_SERVER{\'DOCUMENT_ROOT\'}.substr($fivesdraft->guid_legend,20))
    {
    $thumbnail_id = get_post_thumbnail_id($fivesdraft->ID);
    $featured = wp_get_attachment_url( $thumbnail_id );

    //$featured = gangmei_get_the_post_thumbnail_url( $fivesdraft->ID );

    echo \'<li class="legends-thumb"><div class="img-wrapper"><a href="/?legends=\'.$fivesdraft->post_name.\'"><img src="\'.$featured.\'" alt="\'.$fivesdraft->name.\'" /></div><p><a href="/?legends=\'.$fivesdraft->post_name.\'">\'.$fivesdraft->name.\'</a></p></li>\';
    } 
但不知道为什么旧版本适用于3.2.1而不是3.5.2。

SO网友:Daniel Boccato

你需要回应它。

示例:

<?php $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'full\');?>
<img src="<?php echo $src[0] ?>" />

SO网友:s_ha_dum

当我使用已知具有“特色”图像的帖子ID进行尝试时,您的代码可以正常工作。您可能有数据库问题,但您可能找不到该表。查看$wpdb->postmeta 对于名为_thumbnail_id 和apost_id 匹配你认为应该有缩略图的帖子。如果没有,你的帖子不知何故失去了“特色”图片,你需要修复它。我猜你的问题就在这里。

跳转自3.2.13.5.2 是一个巨大的跳跃。发生了很多变化。如果您有数据库的备份,我建议重置为3.2.1 并在每个版本中进行增量更新,直到获得最新版本。如果这是不可能的,您可能不得不调试和修复问题的问题。

还有几件事:

是否可以只获取guid而不执行所有这些函数?

The guid is not an URL. 不要让它看起来像一个让你困惑的事实。

有没有其他方法可以抓取缩略图?

当然,还有其他的方法,这取决于你想要什么。您可以直接使用get_the_post_thumbnail, 例如

结束

相关推荐

Featured Images not appearing

我帮助一位朋友写WordPress博客,因为我是一个“电脑爱好者”,虽然我没有WordPress的具体经验,多年来也没有使用过PHP。所以,我真的很感激任何人都能对这个问题有所启发。该博客的主要目的是对项目进行分类,大约有8000篇帖子,每篇都包含一张照片。这个博客开始于另一个平台,几年前被迁移到WordPress,所以后端的事情相当混乱。数千条帖子从其他平台迁移,然后又有数千条帖子从WP CMS发布。他们最近升级到了WordPress的最新版本(还有一个新主题Themolio),现在有两个主要问题(第一