我知道这项任务已经有了一些可用的功能,但它们似乎都没有按需要工作。
在我看来,最好的方法是在wp_handle_upload_prefilter 喜欢kaiser 他在吗this example. 不幸的是,只有当帖子已经保存到数据库中时,文件才能获取父帖子标题。
另一种方法是在add_attachment 喜欢Ijaas 做here. 然后该文件获取父帖子标题作为名称,但不会创建缩略图。以及我尝试使用wp_generate_attachment_metadata(); 创建丢失的图像大小,以无休止的循环结束(可能是因为我使用它的方式不对,但现在我有点害怕这个函数)。
如果有办法把头衔传给wp_handle_upload_prefilter 即使帖子还没有保存。
哦,顺便说一下,这是我的无穷函数,也许有人能告诉我它有什么问题。DON\'T USE THIS FUNCTION !!!
add_action(\'add_attachment\', \'fkp_rename_attacment\');
function fkp_rename_attacment($post_ID){
$post = get_post($post_ID);
$file = get_attached_file($post_ID);
$path = pathinfo($file);
$parent = get_post($post->post_parent);
$p_author = get_the_author_meta( \'display_name\', $parent->post_author );
$p_author_san = sanitize_title($p_author);
$newfilename = $parent->post_name . \'-\' . $p_author_san . \'-\' . $post_ID;
$newfile = $path[\'dirname\']."/".$newfilename.".".$path[\'extension\'];
rename($file, $newfile);
$wp_filetype = wp_check_filetype(basename($newfile), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
\'guid\' => $wp_upload_dir[\'url\'] . \'/\' . basename( $newfile ),
\'post_mime_type\' => $wp_filetype[\'type\'],
\'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', basename($newfile)),
\'post_content\' => \'\',
\'post_status\' => \'inherit\'
);
$attach_id = wp_insert_attachment( $attachment, $newfile, $parent->ID );
require_once(ABSPATH . \'wp-admin/includes/image.php\');
$attach_data = wp_generate_attachment_metadata( $attach_id, $newfile );
wp_update_attachment_metadata( $attach_id, $attach_data );
}
DON\'T USE THIS FUNCTION !!!