plugins — Bagaimana cara menyimpan mediaupload beberapa URL sebagai meta array?

Saya ingin menambahkan banyak gambar ke meta. Saya berhasil menyimpan satu url. Saya tidak yakin bagaimana cara menambahkan banyak URL ke meta.

Mediaupload gambar tunggal berfungsi dengan baik. di bawah ini adalah kode untuk itu. Beberapa unggahan media berfungsi dengan baik di editor backend. Saya tidak tahu cara menyimpan dan mengambil (dalam php) beberapa jalur gambar di meta. Adakah yang bisa membantu atau membimbing saya ke arah yang benar?

atribut yang menyimpan nilai meta untuk satu gambar.

p_mediaURL: {
        type: "string",
        default: "",
        meta: "_duib_p_mediaURL",
        source: "meta",
    },
    p_mediaID: {
        type: "integer",
        default: null,
        meta: "_duib_p_mediaID",
        source: "meta",
        default: "",
    },

Dalam fungsi edit:

    const onSelectImage = (media) => {
        setAttributes({
            p_mediaURL: media.url,
            p_mediaID: media.id,
            mediaAlt: media.alt,
        });
    };

komponen unggahan media

<MediaUpload
    onSelect={onSelectImage}
    allowedTypes="image"
    value={p_mediaID}
    render={({ open }) => (
    <Button className="is-primary mt-3" onClick={open}>
    Open Media Library
    </Button>
    )}
/>

Komponen unggahan media untuk banyak gambar yang berfungsi di editor.

<MediaUpload
    onSelect={(gallery) => {
    props.setAttributes({ gallery});
    }}
    type="image"
    multiple
    value={props.attributes.gallery}
    render={({ open }) => (
    <Button className="button button-large" onClick={open}>
        Select Images
    </Button>
    )}
/>

Fungsi register_meta adalah

function _duib_p_addimages_register_post_meta() {
register_meta(
    'post',
    '_duib_p_addimages',
    [
        'auth_callback' => '__return_true',
        'default'       => __( '', '_duib_p_addimages' ),
        'show_in_rest' => array(
        'schema' => array( 
            'type'  => 'array', 
            'items' => array( 
                'type' => 'integer' 
            )
        )
            ),
        'single'        => true,
        'type'          => 'string',
        'object_subtype' => 'properties',
    ]
);
}
add_action( 'init', '_duib_p_addimages_register_post_meta' );

Contoh keluaran json adalah

"meta": {
 
  "_duib_p_mediaURL": "http://localhost/property/wp-content/uploads/2022/12/hele_03.jpg",
  "_duib_p_description": "",
  "_duib_p_addimages": [
    
  ]
},

Leave a Reply

Your email address will not be published. Required fields are marked *