1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
<?php /** * Helper to upload files via the REST API. * * @package WooCommerce\Utilities */
namespace Automattic\WooCommerce\RestApi\Utilities;
/** * ImageAttachment class. */ class ImageAttachment {
/** * Attachment ID. * * @var integer */ public $id = 0;
/** * Object attached to. * * @var integer */ public $object_id = 0;
/** * Constructor. * * @param integer $id Attachment ID. * @param integer $object_id Object ID. */ public function __construct( $id = 0, $object_id = 0 ) { $this->id = (int) $id; $this->object_id = (int) $object_id; }
/** * Upload an attachment file. * * @throws \WC_REST_Exception REST API exceptions. * @param string $src URL to file. */ public function upload_image_from_src( $src ) { $upload = wc_rest_upload_image_from_url( esc_url_raw( $src ) );
if ( is_wp_error( $upload ) ) { if ( ! apply_filters( 'woocommerce_rest_suppress_image_upload_error', false, $upload, $this->object_id, $images ) ) { throw new \WC_REST_Exception( 'woocommerce_product_image_upload_error', $upload->get_error_message(), 400 ); } else { return; } }
$this->id = wc_rest_set_uploaded_image_as_attachment( $upload, $this->object_id );
if ( ! wp_attachment_is_image( $this->id ) ) { /* translators: %s: image ID */ throw new \WC_REST_Exception( 'woocommerce_product_invalid_image_id', sprintf( __( '#%s is an invalid image ID.', 'woocommerce' ), $this->id ), 400 ); } }
/** * Update attachment alt text. * * @param string $text Text to set. */ public function update_alt_text( $text ) { if ( ! $this->id ) { return; } update_post_meta( $this->id, '_wp_attachment_image_alt', wc_clean( $text ) ); }
/** * Update attachment name. * * @param string $text Text to set. */ public function update_name( $text ) { if ( ! $this->id ) { return; } wp_update_post( array( 'ID' => $this->id, 'post_title' => $text, ) ); } }
|