WordPress自动文件名转换器

时间:2013-02-26 作者:Satan

所以我使用了这个函数,它允许我在上传时更改目录中的文本文件名。但是,它实际上不会更改文件名,因此在附加到帖子时会将slug更改为ID。

例如,我上传了一个文件名为“Grumpy Cat Ate Nemo”的文件,由于该函数,它将更改为ID“89”。但它实际上并没有改变WordPress数据库中的文件名,所以即使文件重命名为ID,它在WordPress上仍然是“Grumpy Cat Ate Nemo.png”。

我希望帖子的附件url为http://example.com/grumpy-cat/89, 不http://example.com/grumpy-cat/Grumpy-Cat-Ate-Nemo

add_action(\'add_attachment\', \'rename_attacment\');
function rename_attacment($post_ID){
    $post = get_post($post_ID);
    $file = get_attached_file($post_ID);
    $path = pathinfo($file);
        //dirname   = File Path
        //basename  = Filename.Extension
        //extension = Extension
        //filename  = Filename

    $newfilename = $post_ID;
    $newfile = $path[\'dirname\']."/".$newfilename.".".$path[\'extension\'];

    rename($file, $newfile);    
    update_attached_file( $post_ID, $newfile );
}

1 个回复
SO网友:pLiKT

这个add_attachment 命名附件后调用操作。如果只想更改附件(和slug)的名称,则无需更改文件名,只需替换其中的代码即可rename_attachment 打电话给wp_update_post.

add_action(\'add_attachment\', \'rename_attacment\');
function rename_attacment($post_ID){
  $new_attachment_name = array(
    \'ID\' => $post_ID, 
    \'post_title\' => $post_ID, // changes what you see 
    \'post_name\' => $post_ID // changes the slug to 89
  );

  wp_update_post($new_attachment_name);
}

结束

相关推荐

将WordPress附件导入wp-Content/Uploads/中的自定义目录

我希望有人能阐明我试图解决的这个问题,即使只是简单地改变我的思维过程,告诉我如何解决这个问题。我正在将一个基于CakePHP的定制CMS web应用程序导入WordPress,方法是遍历数据库,进行大量SQL查询,构建数组,最后输出必要的XML文件,以便使用WordPress导入工具导入。目前我已经很好地导入了类别、标签和帖子/页面,没有问题,但问题似乎出在图像上。基于CakePHP的CMS中当前的图像格式是images/year/month/day/post_id/image_name.ext据我所知,