【问题标题】:Set an already uploaded image as featured image of a post in WordPress将已上传的图片设置为 WordPress 中帖子的特色图片
【发布时间】:2019-11-30 09:49:09
【问题描述】:

如果图片已经上传到服务器,我想为 WordPress 网站上的不同帖子设置特色图片。

我打算使用以下代码来做到这一点:

// File has already been uploaded
$image_url = 'path/of/image';
if(file_exists($image_url)) {
    set_post_thumbnail($post_id, $image_id);
}

问题是我无法弄清楚如何仅从图像 URL 中获取 $image_id,而没有别的。在 WordPress 中可以吗?

我想再次澄清一下,图片已经在媒体库中。

我已经阅读了这个问题:https://wordpress.stackexchange.com/questions/40301/how-do-i-set-a-featured-image-thumbnail-by-image-url-when-using-wp-insert-post,但它没有告诉我如何获取媒体库中已经存在的图像的id

我需要与wp_get_attachment_url($id) 相反的东西。该函数根据id返回图片路径。

我想根据路径或 URL 获取图像 id。

谢谢。

【问题讨论】:

  • 我知道您上传了一张图片并且您知道路径,现在您想创建该图片的缩略图?
  • @HenryStack,第 :)。我想将该图像设置为 WordPress 帖子的特色图像。

标签: wordpress


【解决方案1】:

请使用以下代码:

$image_url = 'path/of/image';
if(file_exists($image_url)) {

    global $wpdb;
    $table_name = $wpdb->prefix . "posts";
    $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $table_name WHERE guid='%s';", $image_url ));
    $image_id = $attachment[0]; 
    set_post_thumbnail($post_id, $image_id);

}

希望对你有所帮助。

【讨论】:

  • 谢谢 dinseshkashera :) 你能否解释一下它是如何工作的,以便我将来可以自己做这样的事情? guid 是什么?以下是对类似问题的回答的评论:不幸的是,您不能保证 guid 始终与图像 URL 相同。 guid 是不变的,并在创建时设置;如果图像位置发生变化,那么这个 cade 将不再起作用。 stackoverflow.com/questions/25671108/…
  • guid 将始终与在帖子表中可用的相同。在其中 WP 存储图像链接。如果您的图像将保存在其他位置,那么您需要根据它们进行查询。但在 Wordpress 中我建议回答。
  • 谢谢 dinsesh :)。那么,这意味着只要我的图片上传到默认的 WordPress 文件夹中,我就不用担心了?
  • @RealNoob 是的,如果您使用 wordpress 的默认方法存储附件,则无需担心。请做向上箭头,这样它也可以帮助其他开发人员。 :)
【解决方案2】:

试试下面的。

  • 转到管理仪表板中的媒体菜单,然后单击子菜单
  • 点击上传的图片,可以最大化查看图片
  • 在网址中可以看到post.php?post=1234&action=edit

查看url中post=1234part的值,1234是图片id。请尝试一下,让我知道它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多