WordPress 프로그래밍 방식으로 파일 업로드: 3가지 실용적인 방법

게시 됨: 2022-10-20

기본적으로 WordPress는 미디어 라이브러리 또는 편집 후 화면을 통한 파일 업로드를 지원합니다. 이러한 내장 기능을 사용하여 웹사이트에 파일을 업로드하면 WordPress가 모든 것을 처리합니다. 업로드된 모든 파일을 보고 게시물이나 페이지에 삽입할 수 있습니다.

그러나 프런트엔드 파일 업로드와 같은 사용자 지정 기능의 경우 그 이상이 필요합니다. 코드를 조정하지 않고 파일을 추가, 수정 및 관리하는 데 도움이 되는 플러그인이 많이 있습니다. 물론 대부분 유료입니다.

플러그인 비용을 지불하고 싶지 않다면 WordPress 사이트에 프로그래밍 방식으로 파일을 업로드하는 것이 해결책이 될 수 있습니다. 이 기사에서는 이를 달성하는 방법에 대해 자세히 안내합니다.

시작하자!

  • 약간의 통지
  • #1 URL에서 프로그래밍 방식으로 미디어 라이브러리에 파일 업로드
  • #2 HTML 양식을 통해 파일 추가
  • #3 프로그래밍 방식으로 사용자 지정 갤러리에 파일 삽입
  • 보너스 팁: 파일 업로드 보호

약간의 통지

이 방법은 주로 코드를 방해합니다. 따라서 코딩 지식이 있는 경우에만 이 기술을 선택하십시오. 그렇지 않으면 한 번의 작은 부적절한 변경으로 전체 사이트가 무너질 수 있습니다.

WordPress를 막 시작한 경우 프런트엔드 파일 업로드를 허용하는 Gravity Forms 플러그인을 적극 권장합니다. 또는 WordPress 프론트엔드 파일 업로드를 위한 상위 5개 플러그인을 확인하세요. FTP 클라이언트를 사용하여 백엔드에서 파일을 업로드할 수도 있습니다.

그래도 WordPress에서 프로그래밍 방식으로 파일을 업로드하는 방법을 배우고 싶으십니까? 계속 읽으세요!

#1 URL에서 프로그래밍 방식으로 미디어 라이브러리에 파일 업로드

인터넷을 검색하고 WordPress 미디어 라이브러리에 업로드하려는 멋진 이미지를 찾습니다. 방법은 다음과 같습니다.

  1. 이미지의 URL을 복사합니다.
  2. 아래 코드를 사이트에 삽입하고 복사한 URL을 삽입하세요.
 /**
* 프로그래밍 방식으로 URL에서 이미지 업로드
*
* @저자 미샤 루드라스티
* @링크 https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
*/
기능 rudr_upload_file_by_url( $image_url ) {

// download_url() 및 wp_handle_sideload() 함수를 사용할 수 있습니다.
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// 임시 디렉토리에 다운로드

$temp_file = 다운로드 url( $image_url );

if( is_wp_error( $temp_file ) ) {
거짓을 반환합니다.
}

// 임시 파일을 업로드 디렉토리로 이동
$파일 = 배열(
'이름' => 기본 이름( $image_url ),
'유형' => mime_content_type( $temp_file ),
'tmp_name' => $temp_file,
'크기' => 파일 크기( $temp_file ),
);
$sideload = wp_handle_sideload(
$ 파일,
정렬(
'test_form' => false // 'action' 매개변수를 확인할 필요가 없습니다.
)
);

if( ! 빈( $sideload[ '오류' ] ) ) {
// 원하는 경우 오류 메시지를 반환할 수 있습니다.
거짓을 반환합니다.
}

// 업로드한 이미지를 WordPress 미디어 라이브러리에 추가할 시간입니다.
$attachment_id = wp_insert_attachment(
정렬(
'guid' => $sideload[ 'url' ],
'post_mime_type' => $sideload[ '유형' ],
'post_title' => 기본 이름( $sideload[ '파일' ] ),
'post_content' => '',
'post_status' => '상속',
),
$sideload[ '파일' ]
);

if( is_wp_error( $attachment_id ) || ! $attachment_id ) {
거짓을 반환합니다.
}

// 메타데이터 업데이트, 이미지 크기 재생성
require_once( ABSPATH . 'wp-admin/includes/image.php' );

wp_update_attachment_metadata(
$attachment_id,
wp_generate_attachment_metadata( $attachment_id, $sideload[ '파일' ] )
);

반환 $attachment_id;
}

그게 다야!

#2 HTML 양식을 통해 파일 추가

두 번째 방법은 파일 입력과 제출 버튼으로 간단한 HTML 양식을 만드는 것입니다. 이 양식을 모든 페이지나 게시물에 배치하여 사용자가 사이트에 파일을 업로드할 수 있도록 합니다. HTML 양식을 통해 WordPress에서 프로그래밍 방식으로 파일을 업로드하려면 다음 단계를 따르세요.

  1. 다음 코드를 포함하여 간단한 HTML 양식을 작성하십시오.
 1 <h2>파일 업로드</h2>
2 <form method="post" enctype="multipart/form-data">
3 <입력 유형="파일" 이름="파일" 필수 />
4 <입력 유형="제출" 이름="업로드_파일" 값="업로드" />
5 </form>

wp_upload_bits() 함수를 사용하여 WordPress는 업로드된 파일을 업로드 디렉토리에 자동으로 저장합니다. 현재 연도-월 폴더에서 파일을 찾을 수 있습니다(예: wp-content/uploads/2020->03->your_file ).

2. 다음 코드를 functions.php 파일에 삽입하십시오.

 1 <?php
2 함수 fn_upload_file() {
3 if ( isset($_POST['upload_file']) ) {
4 $업로드 = wp_upload_bits($_FILES['파일']['이름'], null, $_FILES['파일']['tmp_name']);
5 // 데이터베이스에 저장 $upload['url]
6 }
7 }
8 add_action('초기화', 'fn_upload_file');

$upload 변수를 인쇄하면 디렉토리와 업로드된 파일의 URL이 포함된 배열을 얻을 수 있습니다. 사용자는 $upload['url] 을 사용하여 데이터베이스에서 이러한 URL을 찾고 저장할 수 있습니다.

위에서 언급했듯이 wp_upload_bits() 메서드를 사용하면 파일이 기본 WordPress 폴더 계층 구조에 저장됩니다. 그러나 자신의 디렉토리에 파일을 저장하려면 어떻게 해야 할까요?

이 경우 업로드 디렉터리에 사용자 지정 폴더를 만들고 이 폴더로 파일을 이동해야 합니다. uploads/product-images 디렉토리에 파일을 저장하고 싶다고 가정해 보겠습니다. 아래 코드를 사용하여 product-images 폴더를 생성하고 그 안에 파일을 저장할 수 있습니다.

functions.php 파일에 코드를 작성하십시오:

 1 함수 fn_upload_file() {
2 if ( isset($_POST['upload_file']) ) {
3 $upload_dir = wp_upload_dir();
4
5 if ( ! empty( $upload_dir['basedir'] ) ) {
6 $user_dirname = $upload_dir['basedir'].'/제품 이미지';
7 if ( ! file_exists( $user_dirname ) ) {
8 wp_mkdir_p( $user_dirname );
9 }
10
11 $filename = wp_unique_filename( $user_dirname, $_FILES['파일']['이름'] );
12 move_uploaded_file($_FILES['파일']['tmp_name'], $user_dirname .'/'. $filename);
13 // 데이터베이스에 저장 $upload_dir['baseurl'].'/product-images/'.$filename;
14 }
15 }
16 }
17 add_action('초기화', 'fn_upload_file');

여기에서는 wp_unique_filename() 기술을 적용하여 주어진 디렉토리에 고유한 파일 이름을 부여합니다.

#3 프로그래밍 방식으로 사용자 지정 갤러리에 파일 삽입

갤러리가 "갤러리"라는 사용자 정의 메타 필드로 추가되었다고 가정해 보겠습니다. media_sideload_image() 를 통해 많은 이미지를 업로드합니다. 그런 다음 ID를 직렬화하고 update_post_meta( $post_id , 'gallery', $serialized) 를 통해 갤러리에 삽입합니다.

따라서 백엔드 게시물 편집 페이지에서 게시물을 볼 때 업로드된 모든 사진을 볼 수 있습니다. 그러나 이러한 사진은 백엔드에서 업데이트 를 누를 때까지 프론트엔드의 슬라이드쇼에 표시되지 않습니다.

그렇다면 갤러리를 만든 후 프로그래밍 방식으로 업데이트 버튼을 클릭하려면 어떻게 해야 할까요? 아래 가이드를 따르세요.

  1. 게시물 갤러리를 업데이트하면 다음 코드를 추가하여 프로그래밍 방식으로 업데이트 버튼을 선택합니다.
 wp_update_post(['ID'=>$post_id]);

2. 검색 및 필터 기능을 사용하도록 캐시를 업데이트합니다.

 do_action('검색_필터_업데이트_포스트_캐시', $post_id);

보너스 팁: 파일 업로드 보호

업로드한 파일에 대한 무단 액세스를 방지할 수 있는 방법이 있습니까? 대답은 예입니다. 자세한 내용은 WordPress 파일을 보호하기 위한 21가지 유용한 .htaccess 트릭에 대한 자세한 가이드를 참조하세요. .htaccess는 사이트를 원활하게 실행하는 데 중요한 파일이므로 변경할 때 주의하십시오.

반면에 코딩 기술에 자신이 없다면 PDA Gold 플러그인을 설치하십시오. .htaccess 파일에 영향을 주는 것에 대해 걱정하지 않고 번거로움을 처리하는 데 도움이 됩니다.

고려해야 할 또 다른 방법은 WordPress 파일을 암호로 보호하는 것입니다. 자세한 내용은 기사를 확인하세요.

전문가처럼 WordPress에서 프로그래밍 방식으로 파일 업로드!

WordPress에서 프로그래밍 방식으로 파일을 업로드하는 3가지 방법을 보여 주었습니다. 이제 미디어 라이브러리나 HTML 프론트엔드 파일 업로드 양식을 통해 손쉽게 파일을 업로드할 수 있습니다. 사용자 정의 갤러리에 파일을 추가하는 것도 가능합니다. 그리고 가장 중요한 것은 코드를 사용하거나 플러그인을 설치하여 WordPress 파일을 보호하는 것을 잊지 마십시오.

WordPress에서 프로그래밍 방식으로 파일을 업로드하는 방법에 대한 모든 것입니다. 다른 방법을 알고 있습니까? 아래 의견 섹션에서 우리와 공유하십시오.