问题描述

我在插件中创建自定义文件,并使用 WordPress Codex 中为 wp_insert_attachment 提供的代码将其添加到媒体库。但是,我的插件偶尔会覆盖这些文件。我需要确保这些文件不再添加到媒体库。这是当前的代码:

$wp_filetype = wp_check_filetype(basename($filename), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
   'guid' => $wp_upload_dir['baseurl'] . '/' . _wp_relative_upload_path( $filename ),
   'post_mime_type' => $wp_filetype['type'],
   'post_title' => preg_replace('/.[^.]+$/', '', basename($filename)),
   'post_content' => '',
   'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename);
// you must first include the image.php file
// for the function wp_generate_attachment_metadata() to work
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );

我只需要检查该文件是否已经是媒体库的一部分,如果它是更新。我没有一个 post_id 可以使用,只是永久链接和 guid 。

谢谢你的帮助。

最佳解决方案

global $wpdb;
$image_src = $wp_upload_dir['baseurl'] . '/' . _wp_relative_upload_path( $filename );
$query = "SELECT COUNT(*) FROM {$wpdb->posts} WHERE guid='$image_src'";
$count = $wpdb->get_var($query);

您可以在代码的顶部使用它。然后检查 $count 的值。如果为 0,则可以继续添加附件

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。