WordPress:使用帖子ID和帖子标题作为上传图像的文件名

时间:2018-06-06 13:01:08

标签: php wordpress

我正在尝试将帖子ID和帖子标题添加到我的WordPress帖子中的所有上传图片中。

我已经找到了一个功能,它将我的图像重命名为魅力,但我无法获得帖子ID和帖子标题。我做错了什么?

function new_filename($filename, $filename_raw) {

    global $post;
    $post_id = $post->ID; 
    $post_slug = $post->post_name;

    $info = pathinfo($filename);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $new = $post_id . $post_slug . $ext;

    if( $new != $filename_raw ) {
        $new = sanitize_file_name( $new );
    }

    return $new;

}
add_filter('sanitize_file_name', 'new_filename', 10, 2);

谢谢。

1 个答案:

答案 0 :(得分:0)

您的图片上传到/ wp-admin和管理区域,不幸的是并不总是很容易获得帖子ID和帖子标题。

首先,您必须检查是否有帖子ID和标题。因为如果有人在媒体库本身上传图像,那么简单的 就没有帖子标题或ID

如果有人将图片上传到页面/帖子/自定义帖子类型编辑页面,则应该有帖子ID。

尝试:

 $post_id = $_GET['post'];

一般情况下,我建议采用以下程序:

function new_filename($filename, $filename_raw) {

    $post = admin_find_current_post();

    if($post) {
         // proceed as you have proposed
     } else {
          return $filename;
     }

}
add_filter('sanitize_file_name', 'new_filename', 10, 2);


function admin_find_current_post() {
    if(isset($_GET['post']) && intval($_GET['post']) > 0 ) {
         return get_post($_GET['post']);
    }

    global $post;
    if($post) {
        return $post;
    }

    // and maybe more possibilities?

}

因此,您的其余挑战是完成此功能并检查是否可以进一步改进; - )