이미지를 일괄 업로드하고 각 이미지에 대한 게시물을 자동으로 만들려면 어떻게해야합니까?


10

기존 게시물에 여러 이미지를 업로드하는 방법을 알고 있지만 이는 다른 시나리오입니다. 이미지 자산을 나타내는 각 사용자 정의 게시물 유형 게시물이있는 대규모 자산 카탈로그 용입니다 (따라서 단일 이미지는 각 게시물의 "추천 이미지"로 지정됨).

전체 시스템은 한 번에 한 번의 자산 생성에는 훌륭하지만 시간이 너무 많이 걸립니다. 한 번에 여러 이미지를 "일괄 처리"하여 업로드 한 다음 각 이미지에 대해 새 게시물을 만든 다음 이미지를 "추천 된 이미지"로 새 게시물에 첨부해야합니다.

각 게시물에 대해 텍스트 내용이 입력되지 않습니다. 일부 메타 데이터 및 사용자 지정 분류 체계 만 할당되므로이 배치 작성 프로세스 중에 메타 데이터 및 분류 체계를 배치로 지정할 수 있습니다.

XML-RPC 포스트 생성 (일반적으로 이미지 업로드 / 할당을 처리하지는 않음)에서 서버 디렉토리에서 미디어 라이브러리 (포스트 생성을 다루지 않는)로 파일을 가져 오는 플러그인 및 jquery 여러 파일에 대한 솔루션을 연구했습니다. 업 로더 (기본적으로 디렉토리의 파일 만 덤프).

나는 플러그인과 테마를 구축 한 PHP에 상대적으로 정통하지만,이 프로세스를 처리하는 방법에 익숙하지 않습니다. 일시적인 용량으로 파일을 서버에 가져 와서 파일을 기반으로 게시물을 생성하는 첫 번째 단계가 필요하기 때문에 전체 배치에 식별 메타 데이터를 할당합니다.

나는 이것이 커스텀 관리자 패널에서 할 수 있기를 바라고 있지만 wp-admin 외부 에서이 작업을 수행해야한다면 괜찮습니다 ...

아이디어?


이것에 대한 답을 찾은 적이 있습니까? 이것은 나에게 완벽 할 것입니다 ...

나는 ...하지만 시나리오는 프로젝트의 전체 프레임 워크 플러그인으로 발전했습니다. 특별히 짧은 대답은 아닙니다. 모두 함께 달성하는 여러 기능과 후크의 흐름을 문서화해야합니다.
somatic

1
요약하자면, 편집상의 이유로 사용자가 업로드 한 모든 내용에 대해 실제로 게시물을 생성하는 것이 타당하지 않기 때문에 실제로 2 단계 프로세스를 수행했습니다. 대신 사용자는 모든 이미지를 단일 "일괄 처리"게시물 에 단일 게시물에 대한 첨부 파일 로 업로드합니다 . 그런 다음 일괄 처리를 검토하고 각 첨부 파일을 수락 / 거부합니다. "일괄 처리"게시물이 실제로 게시되면 사용자 지정 저장 루틴에서 허용 된 각 첨부 파일을 가져 와서 wp_insert_post ()를 사용하여 해당 단일 첨부 파일 만 기능으로 게시합니다. 영상.
somatic


메타 데이터는 어떻게 추가하고 이미지는 데이터와 어떻게 관련되어 있습니까?
Wyck

답변:


5

이 플러그인이 있습니다 : 자동 추천 이미지 게시물 플러그인

플러그인 페이지에서 :

자동 추천 이미지 게시물은 이미지가 업로드 될 때마다 추천 이미지가 포함 된 새 게시물을 만듭니다. 플러그인 설정 페이지를 통해 이미지를 게시하고 다른 기존 사용자 정의 게시물 유형 및 / 또는 게시물 형식 중 하나에 할당하도록 설정할 수 있습니다.

기본적으로 업로드 된 모든 이미지는 선택한 게시물 유형의 게시물을 생성하며 해당 게시물의 추천 이미지로 설정됩니다.

로컬 컴퓨터에 이것을 설치했습니다. 설정 페이지는 다음과 같이 표시되며 사용자 정의 게시물 유형, 사진 업로드를 할당하려는 게시 유형 및 원하는 게시 상태를 선택할 수 있습니다.

플러그인 스크린 샷

플러그인을 실습하려면 선택한 게시물 유형으로 이동하여 새 게시물을 열고 미디어를 업로드하십시오.

사진을 일괄 업로드하려면 "업로드"대화 상자에서 여러 사진을 강조 표시하면됩니다. 여기에 8 장의 사진을 강조 표시하고 있지만 워드 프레스 이미지 업 로더에서 알지 못하는 한계가 없다면 80 또는 800이 될 수없는 이유가 없습니다.

여기에 이미지 설명을 입력하십시오

게시물의 제목은 이미지 파일 이름으로 설정됩니다. 당신은 그것으로 작업하고 테마로 그들을 호출 할 수 있어야합니다the_title()

로컬에서 테스트했으며 Wordpress 3.6에서 작동합니다.

이 작업을 수행하는 데 더 강력하고 유연한 방법이 있다고 확신하지만이 경우 플러그인은 메타 데이터를 할당하는 것을 제외하고는 요청한 내용을 정확하게 수행하는 것 같습니다. 다른 사람이 그 부분을 조금씩 살살 살릴 수도 있습니다.

동적으로 생성 된 게시물 컨텐츠가 필요한 경우 최소한 플러그인으로 시작하여 거기서부터 반복 할 수 있습니다. 게시물 형식 또는 페이지 템플릿을 사용하여 게시물이 표시되는 방식을 결정해야한다고 생각했습니다.

참고 : 모든 image_size기능이 functions.php에 설정되어 있는지 확인하십시오 . 이미지 크기를 잊어 버렸거나 변경했기 때문에 10,000 장의 사진을 실행 취소 / 삭제하거나 매우 긴 "축소판 재생"을 실행하는 것이 싫습니다!


당신은 downvote 때 의견을해야합니다-그것은 사이트의 품질을 개선하는 데 훨씬 도움이 될 것입니다.
timshutes

5

이 스크립트는 개념 증명 (테스트 및 작동)이며 플러그인이 아니며 해킹 당해야하며 몇 가지 사항을 가정합니다.

  1. 사용 wp_insert_post하므로 관리자 후크에 연결하지 않는 것이 좋습니다. 한 번만 실행하십시오!
  2. 이미지는 wp-content\uploads폴더에 있어야하며 이를 변경하려면 더 많은 후프가 필요합니다. 이 예에서는 \images업로드 폴더에 있는 사용자 정의 폴더를 사용 하므로이 부분을 변경할 수 있습니다.
  3. 오류 검사를 수행하지 않고 20 개의 이미지가있는 폴더에서만 테스트 했으므로 결과가 다를 수 있습니다.)

아래 코드는 wp-content\uploads\images폴더 를 반복 하고 첨부 된 이미지의 이름을 기반으로 게시물 제목을 만듭니다. 당신은 아마 당신이 가지고있는 다른 데이터를 사용하여 메타 데이터를 입력하거나 더 나은 것으로 변경하고 싶을 것입니다 (Exif)

function WPSE_1595_image_post() {

    // We need to use the default uploads dir
    $wp_upload_dir =  wp_upload_dir();
    // The actual folder
    $wp_upload_images = $wp_upload_dir['basedir'] . '/images';

    require_once(ABSPATH . 'wp-admin/includes/image.php');

    foreach (new DirectoryIterator($wp_upload_images) as $fileInfo) {

        if($fileInfo->isDot()) continue;

        $image_base = $fileInfo->getFilename();
        $image_name = pathinfo($fileInfo, PATHINFO_FILENAME);

        //Customize this post data as you wish
        $my_post_data = array(
            'post_title' => $image_name,
            'post_type' => 'post',
            'post_category' => array('1'),
            'post_author'   => 1,
            'post_status' => 'publish'
        );

        // We need the ID for the attachment
        $post_id = wp_insert_post($my_post_data);

        $wp_filetype = wp_check_filetype($image_base, null );

         //Customize this attachment data as you wish
        $attachment = array(
             'guid' => $wp_upload_dir['url'] . '/' . $image_name, 
             'post_mime_type' => $wp_filetype['type'],
             'post_title' => 'child-' . $image_name,
             'post_content' => '',
             'post_status' => 'inherit'
        );

        $imagefile = $wp_upload_images . '/' . $image_base;
        $attach_id = wp_insert_attachment( $attachment, $imagefile, $post_id );
        $attach_data = wp_generate_attachment_metadata( $attach_id, $imagefile );

        wp_update_attachment_metadata( $attach_id, $attach_data );
    }   
}

수천 개가 넘는 이미지의 경우 다음을 사용하는 것이 더 쉬울 것입니다.


크기가 조정 된 이미지를 업로드 / 이미지 폴더에 계속 추가하고 새 게시물을 생성합니다. 프로세스가 재귀되었으므로 함수를 제거하기 전에 거의 800 개의 게시물이 작성되었습니다. 생성 된 새로운 크기는 정기적 인 wp 미디어 위치에서 수행해야합니다.
Heena Shah

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.