PHP - Wordpress 无法从 URL 获取图像,其中 URL 没有扩展名
PHP - Wordpress Cannot Get Images From URL where URL Does'nt have extension
您好,我在使用 wordpress 获取图片时遇到了问题,通常我使用此功能来设置图片 wordpress。
function generate_featured_images($post_id, $image, $title){
// only need these if performing outside of admin environment
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
// magic sideload image returns an HTML image, not an ID
$media = media_sideload_image($image, $post_id);
//$filename = basename($image);
$info = pathinfo($image);
$filename = sanitize_title($title).'.'.$info['extension'];
// therefore we must find it so we can set it as featured ID
if(!empty($media) && !is_wp_error($media)){
$args = array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'any',
'post_parent' => $post_id
);
// reference new image to set as featured
$attachments = get_posts($args);
if(isset($attachments) && is_array($attachments)){
foreach($attachments as $attachment){
// grab source of full size images (so no 300x150 nonsense in path)
$image = wp_get_attachment_image_src($attachment->ID, 'full');
// determine if in the $media image we created, the string of the URL exists
if(strpos($media, $image[0]) !== false){
// if so, we found our image. set it as thumbnail
set_post_thumbnail($post_id, $attachment->ID);
//resize_image_high($post_id);
// only want one image
break;
}
}
}
}
return '';
}
我使用以下函数调用此函数:
generate_featured_images( 123, "http://website.com/img/img1.jpg", "img name");
使用此功能效果很好。
但是,问题来自图像 url 没有显示扩展名,例如“https://cf.shopee.co.id/file/09a73246d7fe87eb490e9c8f99b876e1”
我试了没用,真的我试了几天都没有找到解决办法,请帮助我。
同样的问题,但我认为它适用于您的代码:
或者你可以为 url 添加一个额外的检查,这里是我的代码,我已经在我的插件上测试过它:
$info = pathinfo($image);
$filename = sanitize_title($title).'.'.$info['extension'];
$image_url = $image;
if ( strpos( $image_url, 'shopee' ) !== false ) {
$wp_filetype = wp_check_filetype( $filename, null );
if ( !$wp_filetype['ext'] ) {
$finfo = new finfo( FILEINFO_MIME_TYPE );
$ext = $finfo->buffer($image_data);
if ( $ext === 'image/jpeg' ) {
$filename = $filename . '.jpg';
}
}
}
您好,我在使用 wordpress 获取图片时遇到了问题,通常我使用此功能来设置图片 wordpress。
function generate_featured_images($post_id, $image, $title){
// only need these if performing outside of admin environment
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
// magic sideload image returns an HTML image, not an ID
$media = media_sideload_image($image, $post_id);
//$filename = basename($image);
$info = pathinfo($image);
$filename = sanitize_title($title).'.'.$info['extension'];
// therefore we must find it so we can set it as featured ID
if(!empty($media) && !is_wp_error($media)){
$args = array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'any',
'post_parent' => $post_id
);
// reference new image to set as featured
$attachments = get_posts($args);
if(isset($attachments) && is_array($attachments)){
foreach($attachments as $attachment){
// grab source of full size images (so no 300x150 nonsense in path)
$image = wp_get_attachment_image_src($attachment->ID, 'full');
// determine if in the $media image we created, the string of the URL exists
if(strpos($media, $image[0]) !== false){
// if so, we found our image. set it as thumbnail
set_post_thumbnail($post_id, $attachment->ID);
//resize_image_high($post_id);
// only want one image
break;
}
}
}
}
return '';
}
我使用以下函数调用此函数:
generate_featured_images( 123, "http://website.com/img/img1.jpg", "img name");
使用此功能效果很好。
但是,问题来自图像 url 没有显示扩展名,例如“https://cf.shopee.co.id/file/09a73246d7fe87eb490e9c8f99b876e1” 我试了没用,真的我试了几天都没有找到解决办法,请帮助我。
同样的问题,但我认为它适用于您的代码:
或者你可以为 url 添加一个额外的检查,这里是我的代码,我已经在我的插件上测试过它:
$info = pathinfo($image);
$filename = sanitize_title($title).'.'.$info['extension'];
$image_url = $image;
if ( strpos( $image_url, 'shopee' ) !== false ) {
$wp_filetype = wp_check_filetype( $filename, null );
if ( !$wp_filetype['ext'] ) {
$finfo = new finfo( FILEINFO_MIME_TYPE );
$ext = $finfo->buffer($image_data);
if ( $ext === 'image/jpeg' ) {
$filename = $filename . '.jpg';
}
}
}