我正在尝试将帖子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);
谢谢。
答案 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?
}
因此,您的其余挑战是完成此功能并检查是否可以进一步改进; - )