1

我有一个在 wordpress 中创建附件(zip 文件)的功能。

相关代码如下:

我的问题是:有没有办法在创建新附件之前检查相同的附件名称(或 ID 或文件类型)是否已经存在?(意思是在将附件插入数据库之前..)

在我目前的状态下,每次运行此函数时都会创建附件。这意味着它可以每隔一段时间创建一个新附件的数据库记录——即使真正的文件只有一个文件。

$attachment = array(
     'guid' => $wp_upload_dir['baseurl'] . _wp_relative_upload_path( $path  ), 
     'post_mime_type' => $wp_filetype['type'],
     'post_title' => preg_replace('/\.[^.]+$/', '', basename($path )),
     'post_content' => '',
     'post_status' => 'inherit'
  );


$attach_id = wp_insert_attachment( $attachment, $path , $post_id); // perform the magic


  require_once(ABSPATH . 'wp-admin/includes/image.php');


  wp_update_attachment_metadata( $attach_id, $attach_data ); // perform the magic II
4

1 回答 1

2

有关您的代码发生位置的更多上下文会很有用......

尝试这样的事情来检查附件是否存在:

global $wpdb;
$title_exists = $wpdb->get_results( 
    $wpdb->prepare( 
        "SELECT ID FROM $wpdb->posts 
        WHERE post_title = '$post->post_title' 
        AND post_type = 'attachment'"
    ) 
);

更改post_title = '$post->post_title'您需要的任何检查。

参考:WordPress StackExchange - 不允许相同的帖子标题

于 2012-11-20T23:59:30.897 回答