не могу прикрепить изображение к сообщению в WordPress - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь загрузить изображение base64. но изображение не прикрепляется к сообщению. Хотя он дает attachid и post id

я попробовал wp_handle_sideupload ()

  $data = $_POST['base_img'];

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
//$data1 = base64_decode($data);

$img             = str_replace( 'data:image/png;base64,', '', $data );
$img             = str_replace( ' ', '+', $img );
$data1         = base64_decode( $img );


  $upload_dir = wp_upload_dir();

// @new
$upload_path = str_replace( '/', DIRECTORY_SEPARATOR, $upload_dir['path'] ) . DIRECTORY_SEPARATOR;

$decoded = $data1;
$filename = 'my-base64-image.png';

$hashed_filename = md5( $filename . microtime() ) . '_' . $filename;

// @new
$image_upload = file_put_contents( $upload_path . $hashed_filename, $decoded );

//HANDLE UPLOADED FILE
if( !function_exists( 'wp_handle_sideload' ) ) {
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
}

// Without that I'm getting a debug error!?
if( !function_exists( 'wp_get_current_user' ) ) {
  require_once( ABSPATH . 'wp-includes/pluggable.php' );
}

// @new
$file             = array();
$file['error']    = '';
$file['tmp_name'] = $upload_path . $hashed_filename;
$file['name']     = $hashed_filename;
$file['type']     = 'image/png';
$file['size']     = filesize( $upload_path . $hashed_filename );

// upload file to server
// @new use $file instead of $image_upload
$file_return = wp_handle_sideload( $file, array( 'test_form' => false ) );


//var_dump($file_return); exit;
$filename = $file_return['file'];
$attachment = array(
 'post_mime_type' => $file_return['type'],
 'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
 'post_content' => '',
 'post_status' => 'inherit',
 'guid' => $wp_upload_dir['url'] . '/' . basename($filename)
 );
 $post_id = wp_insert_post($attachment);
$attach_id = wp_insert_attachment( $attachment, $filename );

update_post_meta($post_id,'_thumbnail_id',$attach_id);
set_post_thumbnail( $post_id, $attach_id );

enter image description here

Галерея мультимедиа выглядит испорченной, а изображение с изображением не вставлено. Почему я не могу прикрепить изображение к сообщению, хотя правильный идентификатор прикрепления отправляет идентификатор dpost

...