将附件文件重命名为将其添加到Wordpress中的帖子标题

时间:2017-10-03 18:33:58

标签: php wordpress

就像标题所说,我正在尝试将媒体库上传重命名为文件添加到的初始帖子的标题。

我找到了以下功能并修改了它以将文件名更改为文件的作者slug

/attachments

然而,这对客户来说还不够好。我还没有在网上找到任何解决方案。任何帮助将不胜感激!

编辑 - 只想添加我也在使用高级自定义字段。以下是此过程的其余代码,它将特定的自定义字段图像定向到某个目录 -

// file renamer (used for EDL images)
function file_renamer( $filename ) {
  $info = pathinfo( $filename );
  $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
  $name = basename( $filename, $ext );
  global $current_user;
  get_currentuserinfo();

  return   $current_user->user_login . $ext;
}

1 个答案:

答案 0 :(得分:0)

我想您可以查看$_POST["post_ID"],使用WP的get_post(),然后如果找到了帖子,请为文件名调用get $post->post_title

或者ACF是否通过Ajax异步上传?在任何情况下,邮件ID都应该在上传时传输,我相信,但您可能需要查看浏览器的开发人员工具以找出字段名称。

以下在我的安装中有效。请注意,这将适用于所有文件上传,因此您可能需要添加一些预防措施。

function file_renamer( $filename ) {
    $info = pathinfo( $filename );
    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    $name = basename( $filename, $ext );
    if( $post_id = array_key_exists("post_id", $_POST) ? $_POST["post_id"] : null) {
        if($post = get_post($post_id)) {
            return $post->post_title . $ext;
        }
    }
    get_currentuserinfo();

    return   $current_user->user_login . $ext;
  }
add_filter( 'sanitize_file_name', 'file_renamer', 10, 1 );