升级后问题:数据库中的图像URL,但未显示

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

嘿,我是一个WP noob,但我的任务是从3.2升级WP。x至3.5。x、 现在一些图像没有显示。

下面是负责它的代码块:

$query = "select w1.guid,w2.post_title, w1.ID from wp_posts w1,wp_posts w2 where w2.id=w1.post_parent and w1.post_type=\'attachment\' and w1.post_parent in (".$post_a.") and w2.post_status=\'publish\' ORDER BY w2.post_date DESC ".$lim_." ";

$terms = $wpdb->get_results($query);
print_r($terms); // for debugging
for ($i = 0; $i < sizeof($terms); $i++) {
    $gallery_image_thumb = wp_get_attachment_image_src($terms[$i]->ID, \'thumbnail\');

    if ($size != "") {
        $result_[$i] = \'<img src="\'.$gallery_image_thumb[0].\'" alt="\'.$terms[$i]->post_title.\'" border="3"> \';
    } else {
        $result_[$i] = \'<img src="\'.$gallery_image_thumb[0].\'" alt="\'.$terms[$i]->post_title.\'" border="0">\';
    }
因此,对于一个部分,它正确地显示图像,但对于另一个部分,它生成的图像为空srcs

所以我打印了$terms 搜索结果数组,这是适用于该部分的内容:

Array ( [0] => stdClass Object ( [guid] => http://www.mysite.com/wp-content/uploads/2013/05/jmc-body.jpg [post_title] => jmc-body [ID] => 28358 ) [1] => stdClass Object ( [guid] => http://www.mysite.com/wp-content/uploads/2013/05/jmc-80.jpg [post_title] => jmc-80 [ID] => 28356 )

而这是$terms 无效节的数组:

Array ( [0] => stdClass Object ( [guid] => http://www.mysite.com/images/mysite/gallery_latest_images/ckc721.jpg [post_title] => CKC_704 [ID] => 25367 ) [1] => stdClass Object ( [guid] => http://www.mysite.com/images/mysite/gallery_latest_images/jmc1294toy.jpg [post_title] => JMC_1294 [ID] => 25366 )

所以我猜我需要在这行中添加一个if/else条件:$gallery\\u image\\u thumb=wp\\u get\\u attachment\\u image\\u src($terms[$I]->ID,\'thumbnail\')?我想wp_get_attachment_image_src 仅在上载中查看?有人知道一个干净的方法来解决这个问题吗?我不确定我能做什么样的“如果/否则”陈述。。。除非它是用于匹配guid的正则表达式?

1 个回复
SO网友:s_ha_dum

我没有时间为此生成工作代码。如果有机会,我会编辑答案。

与此同时,you probably want a filter on upload_dir 改变这条路。

您的代码将如下所示:

function alter_upload_wpse_107016($upload) {
  remove_filter(\'upload_dir\',\'alter_upload_wpse_107016\');
  // alter $upload array
  return $upload;
}
if (1 === preg_match(\'|regex-to-check-guid|\',$terms[$i]->guid) {
  add_filter(\'upload_dir\',\'alter_upload_wpse_107016\');
}
$gallery_image_thumb = wp_get_attachment_image_src($terms[$i]->ID, \'thumbnail\');
这完全没有经过测试,完全是从内存中编写的。没有承诺,但也许这会让你开始。

顺便说一下guid is not an URL, 不管它看起来有多像一个,也不应该这样使用(即使它在2.7之前被WordPress这样使用)。

结束

相关推荐

Featured Images not appearing

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