Tải lên hình ảnh trong mã tùy chỉnh wordpress

Tôi cần tải lên hình ảnh biểu trưng và đặt các tùy chọn khác trên trang cài đặt tùy chỉnh. Tôi không thể truy xuất URL và tải hình ảnh tùy chỉnh lên, có vấn đề gì với mã của tôi?



   

Theme Settings Page

'; } function logo_display() { ?> false)); $temp = $urls['url']; return $temp; } return $option; }

Đang xem 1 trả lời (trong tổng số 1)

  • Trình bắt đầu chủ đề umbzwp

    (@umbzwp)

    giải quyết. Tôi đã thêm enctype=”multipart/form-data” vào biểu mẫu và tôi đã sửa đổi hàm handle_logo_upload

    Khi bạn tải tệp lên trang web của mình bằng trình tải lên phương tiện trong khu vực quản trị, WordPress thường xử lý mọi thứ cho bạn. Vì vậy, tất cả các tệp đã tải lên tự động xuất hiện trong thư viện phương tiện WordPress và sau đó có thể dễ dàng quản lý, chèn vào bài đăng, v.v.

    Nhưng khi bạn tạo một số chức năng tùy chỉnh hoặc có thể là các biểu mẫu trên giao diện người dùng trang web của mình, bạn nên tự xử lý nó. Và trong hướng dẫn này, tôi sẽ chỉ cho bạn cách

    Tải lên hình ảnh trong mã tùy chỉnh wordpress
    Việc tổ chức các hình ảnh đã tải lên của bạn bằng Thư viện phương tiện WordPress sẽ dễ dàng hơn. Hình ảnh của tôi

    Trong hướng dẫn này, chúng ta sẽ xem xét hai tình huống

    1. Khi nào (tất nhiên không chỉ là hình ảnh),
    2. Khi nào

    Tải hình ảnh lên từ URL theo chương trình

    Hãy bắt đầu với một hình ảnh ở bất cứ đâu trên internet. Giả sử rằng chúng tôi có URL của nó và bây giờ nó được lưu trữ trong biến $image_url. Làm cách nào để thêm nó vào thư viện phương tiện ngay bây giờ?

    /**
     * Upload image from URL programmatically
     *
     * @author Misha Rudrastyh
     * @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
     */
    function rudr_upload_file_by_url( $image_url ) {
    
    	// it allows us to use download_url() and wp_handle_sideload() functions
    	require_once( ABSPATH . 'wp-admin/includes/file.php' );
    
    	// download to temp dir
    	$temp_file = download_url( $image_url );
    
    	if( is_wp_error( $temp_file ) ) {
    		return false;
    	}
    
    	// move the temp file into the uploads directory
    	$file = array(
    		'name'     => basename( $image_url ),
    		'type'     => mime_content_type( $temp_file ),
    		'tmp_name' => $temp_file,
    		'size'     => filesize( $temp_file ),
    	);
    	$sideload = wp_handle_sideload(
    		$file,
    		array(
    			'test_form'   => false // no needs to check 'action' parameter
    		)
    	);
    
    	if( ! empty( $sideload[ 'error' ] ) ) {
    		// you may return error message if you want
    		return false;
    	}
    
    	// it is time to add our uploaded image into WordPress media library
    	$attachment_id = wp_insert_attachment(
    		array(
    			'guid'           => $sideload[ 'url' ],
    			'post_mime_type' => $sideload[ 'type' ],
    			'post_title'     => basename( $sideload[ 'file' ] ),
    			'post_content'   => '',
    			'post_status'    => 'inherit',
    		),
    		$sideload[ 'file' ]
    	);
    
    	if( is_wp_error( $attachment_id ) || ! $attachment_id ) {
    		return false;
    	}
    
    	// update medatata, regenerate image sizes
    	require_once( ABSPATH . 'wp-admin/includes/image.php' );
    
    	wp_update_attachment_metadata(
    		$attachment_id,
    		wp_generate_attachment_metadata( $attachment_id, $sideload[ 'file' ] )
    	);
    
    	return $attachment_id;
    
    }

    Tải tệp lên bằng PHP bằng biểu mẫu

    Phần này của hướng dẫn cũng tương tự như vậy, điểm khác biệt duy nhất là chúng ta sẽ không lấy tệp từ một URL từ xa mà tự tải tệp lên

    1. biểu mẫu HTML

    Như một ví dụ, chúng tôi có thể tải lên hình ảnh hồ sơ người dùng

    Your Photo:

    Những gì được đề nghị để ghi nhớ ở đây?

    • Tôi đã đặt tệp PHP process_upload.php vào thư mục chủ đề của mình, nếu bạn muốn chuyển nó sang vị trí khác, đừng quên thực hiện các thay đổi trong các mã sau. Nếu bạn quan tâm đến việc tải lên tệp AJAX, vui lòng xem hướng dẫn này
    • Biểu mẫu phải có thuộc tính enctype="multipart/form-data". Nhiều người quên nó

    Bạn cũng có thể tạo mã ngắn cho biểu mẫu này, chỉ cần chèn mã này vào functions.php

    add_shortcode( 'misha_uploader', 'misha_uploader_callback' );
    
    function misha_uploader_callback(){
    	return '
    Your Photo:
    '; }

    Bây giờ bạn chỉ có thể sử dụng [misha_uploader] trong trình chỉnh sửa

    2. Xử lý tệp đã tải lên bằng PHP và thêm nó vào thư viện phương tiện theo chương trình

    Dưới đây là tệp process_upload.php mà tôi đã quyết định tạo trong thư mục chủ đề hiện tại của mình

     false ) 
    );
    
    if( ! empty( $upload[ 'error' ] ) ) {
    	wp_die( $upload[ 'error' ] );
    }
    
    // it is time to add our uploaded image into WordPress media library
    $attachment_id = wp_insert_attachment(
    	array(
    		'guid'           => $upload[ 'url' ],
    		'post_mime_type' => $upload[ 'type' ],
    		'post_title'     => basename( $upload[ 'file' ] ),
    		'post_content'   => '',
    		'post_status'    => 'inherit',
    	),
    	$upload[ 'file' ]
    );
    
    if( is_wp_error( $attachment_id ) || ! $attachment_id ) {
    	wp_die( 'Upload error.' );
    }
    
    // update medatata, regenerate image sizes
    require_once( ABSPATH . 'wp-admin/includes/image.php' );
    
    wp_update_attachment_metadata(
    	$attachment_id,
    	wp_generate_attachment_metadata( $attachment_id, $upload[ 'file' ] )
    );
    
    // just redirect to the uploaded file
    wp_safe_redirect( $upload[ 'url' ] );
    exit;
    
    // or you can use update_user_meta() if you're going ot use it as a profile picture

    Theo tùy chọn, chúng tôi có thể đặt tham số thứ ba của

    Your Photo:
    0 làm ID bài đăng gốc và đặt hình ảnh nổi bật của bài đăng này với
    Your Photo:
    1

    # WordPress, Tệp đính kèm

    Tải lên hình ảnh trong mã tùy chỉnh wordpress

    Misha Rudrastyh

    Chào các bạn và chào mừng đến với trang web của tôi. Trong hơn 10 năm, tôi đã cố gắng hết sức để chia sẻ miễn phí với bạn một số hướng dẫn và mẹo tuyệt vời về WordPress