Cara Menambah Imej Pilihan daripada URL dalam WordPress
Kadangkala anda perlu menambahkan imej yang ditampilkan secara dinamik pada siaran atau jenis siaran tersuai daripada pelayan lain daripada yang sedang dijalankan oleh pemasangan WordPress anda. Dan anda menghadapi isu biasa: bagaimana untuk melakukannya?
Sudah tentu dalam kes ini, anda perlu merebut imej yang ditampilkan dari pelayan kedua, memuat turunnya ke pelayan anda sendiri, dalam folder muat naik, dan menetapkannya ke siaran yang betul. Dalam langkah pertama, kami akan membuat siaran baharu secara dinamik, dan kemudian kami akan menangani imej yang ditampilkan.
Langkah 1: Buat Siaran Secara Dinamik
Untuk membuat siaran secara dinamik, anda perlu menggunakan fungsi wp_insert_post(). Anda boleh meletakkan kod di bawah dalam pernyataan "JIKA", jika tidak, setiap kali halaman dimuatkan ia akan membuat siaran baharu. Tidak begitu berguna.
// Register Post Data
$post = array();
$post['post_status'] = 'publish';
$post['post_type'] = 'post'; // can be a CPT too
$post['post_title'] = 'My New Post';
$post['post_content'] = 'My new post content';
$post['post_author'] = 1;
// Create Post
$post_id = wp_insert_post( $post );Menjalankan kod ini hanya akan membuat siaran baharu. Kini tiba masanya untuk menambah imej yang ditampilkan.
Langkah 2: Tambah Imej Yang Ditampilkan
Untuk menambah imej yang ditampilkan daripada URL, kita perlu menggunakan beberapa fungsi WordPress:
- wp_upload_dir() : untuk mendapatkan semula laluan folder pemuat naik
- wp_mkdir_p() : untuk mencipta folder dan menetapkan kebenaran
- wp_check_filetype() : untuk menyemak format lampiran
- sanitize_file_name(): untuk memformat nama fail lampiran
- wp_insert_attachment() : untuk membuat lampiran
- wp_generate_attachment_metadata() : untuk menjana metadata lampiran
- wp_update_attachment_metadata() : untuk mengemas kini metadata lampiran
- set_post_thumbnail() : untuk menetapkan lampiran sebagai imej yang ditampilkan siaran
Dan sekarang inilah kodnya. Saya mengulas setiap tindakan supaya anda dapat melihat dengan tepat apa yang berlaku apabila skrip ini dijalankan.
// Add Featured Image to Post
$image_url = 'http://s.wordpress.org/style/images/wp-header-logo.png'; // Define the image URL here
$image_name = 'wp-header-logo.png';
$upload_dir = wp_upload_dir(); // Set upload folder
$image_data = file_get_contents($image_url); // Get image data
$unique_file_name = wp_unique_filename( $upload_dir['path'], $image_name ); // Generate unique name
$filename = basename( $unique_file_name ); // Create image file name
// Check folder permission and define file location
if( wp_mkdir_p( $upload_dir['path'] ) ) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
// Create the image file on the server
file_put_contents( $file, $image_data );
// Check image file type
$wp_filetype = wp_check_filetype( $filename, null );
// Set attachment data
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
// Create the attachment
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
// Include image.php
require_once(ABSPATH . 'wp-admin/includes/image.php');
// Define attachment metadata
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
// Assign metadata to attachment
wp_update_attachment_metadata( $attach_id, $attach_data );
// And finally assign featured image to post
set_post_thumbnail( $post_id, $attach_id );Apa yang menarik dalam kod ini ialah anda boleh meletakkannya dalam satu gelung. Contohnya untuk mengimport siaran daripada fail CSV, atau fail XML. Ini benar-benar hebat dan sangat berguna, tetapi jangan lupa  satu perkara: jangan sekali-kali menggunakan skrip ini dalam fail functions.php anda tanpa meletakkan teg bersyarat sebelum jika tidak, anda akan mendapat ratusan siaran baharu dibuat dalam masa beberapa minit!
Anda mendapati coretan ini berguna? Sila tinggalkan ulasan dan beritahu kami perkara yang anda buat daripada coretan ini!
