워드 프레스 미디어 라이브러리의 실제 구성 (실제 미디어 라이브러리 플러그인)


22

Real Media Library 폴더 구조

소개.

위의 스크린 샷에서 프리미엄 플러그인 Real Media Library로 빌드 된 폴더 구조를 볼 수 있습니다 . 이제 폴더 구조를 실제 폴더 구조 로 구성 할 수있는 확장 플러그인을 만들고 싶습니다 . RML은 시각적 구조 일뿐입니다.

업데이트 # 2 (2017-01-27) : 답을 확인하십시오!

무료 확장 플러그인을 만든 워드 프레스 미디어 라이브러리 (실제 미디어 라이브러리 플러그인)의 물리적 구성을 살펴보십시오 .

업데이트 # 1 (2016-12-14) : 첫 번째 성공 : 맞춤 미리보기 이미지 업로드 폴더

이제 다른 플러그인 Real Thumbnail Generator 를 만들었는데,이를 통해 커스텀 썸네일 업로드 폴더를 만들 수 있습니다. 이 스크린 샷을 살펴보십시오.

실제 썸네일 생성기 업로드 폴더

맞춤 미리보기 이미지 폴더가 필요한 이유 여기서는 축소판이 여전히 동일한 위치에 있기 때문에 데이터베이스 업데이트 URL을 유지 관리 할 필요가 없기 때문에 사용자 지정 축소판 폴더를 유지 관리하기가 더 쉽습니다 (여전히 RML 확장명으로 변경되지 않음).

커스텀 썸네일 생성기에 대해 더 자세히 알고 싶다면이 스레드를 살펴볼 수 있습니다. 여기에서 기술적 인 접근 방식을 설명 했습니다. 커스텀 업로드 디렉토리의 각 커스텀 이미지 크기는? .

2017 년 초부터 RML과 서버 업로드 폴더 간의 동기화를 허용하는 RML 확장 개발을 계속할 것이기 때문에이 스레드를 유지하십시오. 이 확장은 Real Thumbnail Generator 플러그인과도 호환되므로 데이터베이스 업데이트가 있어야합니다.

원본 게시물

내 확장 목표.

현재 "/ Unorganized"폴더에 있습니다. 이는 / wp-content / uploads / 폴더입니다. 스크린 샷에서 볼 수 있듯이 파일을 PDFs / SubDir 폴더로 이동하면 파일이 시각적 폴더에 있습니다. 이제 내 확장 프로그램은 실제 폴더와 다른 폴더를 감지하고 사용자가 실제로 폴더를 이동할 수있는 작은 "버튼"을 표시합니다.

physix 버튼

사용자는 "Physix it!"버튼을 클릭합니다. 파일은 /wp-content/uploads/pdfs/subdir/Another-Doc.pdf 로 이동해야합니다 . 이동 프로세스를 이미 만들었습니다.이 첨부 파일의 모든 미디어 파일 (이미지의 축소판 그림 포함)을 읽고 WP 함수 wp_mkdir_p () 와 함께 php 함수 rename ($ old_file, $ new_file) 을 사용하십시오 . 의 GUID wp_posts의 테이블의 메타 데이터 wp_postmeta은 역시 변경된다. 모든 파일이 이동되면 작업을 호출합니다.

<?php
do_action('RML/Physix/Moved', $meta, $id);
// $meta = Infos about the move process, see above screenshot
// $id = The attachment ID
?>

$ meta는 배열입니다 :

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

"이름 바꾸기"키에는 모든 이름 바꾸기 프로세스가 포함되어 있습니다 (예 : 이미지의 축소판 파일이 여기에있을 수 있음).

문제 : 플러그인 호환성 보장.

WordPress 미디어 라이브러리의 주요 문제는 (있는 경우) 많은 플러그인이 첨부 파일 ID 대신 전체 URL로 이미지에 대한 참조를 저장한다는 것입니다. 즉, 주어진 파일에 대한 URL을 포함하는 열이있는 MySQL 테이블이 있습니다. 실제 폴더에 대한 모든 참조가 최신 상태 임을 어떻게 보장 합니까? 불가능하다고 생각합니다.

하나의 가능한 접근법.

작업에 연결하고 wp_post-> post_content ...와 같은 표준 테이블 을 SQL의 재귀 REPLACE 문으로 업데이트합니다 .

<?php    
/**
 * When a attachment is moved.
 * 
 * @hooked RML/Physix/Moved
 */
function physix_moved($meta, $id) {
    $rename = $meta["rename"];

    // Prepare array for recursive REPLACE
    $arr = array();
    foreach ($rename as $value) {
        $arr[] = array($value["old_url"], $value["new_url"]);
    }
    $rec = $this->recReplace($arr, "post_content"); // function is already finished
}
?>

$ rec 변수는 이제 REPLACE-Statement입니다.

REPLACE(post_content, 'https://example.io/wp-content/uploads/Another-Doc.pdf', 'https://example.io/wp-content/uploads/pdfs/subdir/Another-Doc.pdf')

그건 그렇고 : 모든 축소판 파일이있는 이미지 (testimage.jpg)의 경우 다음과 같이 보일 수 있습니다.

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(post_content, 'https://example.io/wp-content/uploads/testimage-750x350.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-750x350.jpg'), 'https://example.io/wp-content/uploads/testimage-1170x855.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1170x855.jpg'), 'https://example.io/wp-content/uploads/testimage-256x187.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-256x187.jpg'), 'https://example.io/wp-content/uploads/testimage-1024x748.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1024x748.jpg'), 'https://example.io/wp-content/uploads/testimage-300x219.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-300x219.jpg'), 'https://example.io/wp-content/uploads/testimage-150x150.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-150x150.jpg'), 'https://example.io/wp-content/uploads/testimage.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage.jpg')

그러나 데이터베이스 테이블의 직렬화 된 문자열 (JSON) 인 경우 어떻게됩니까? 그래서처럼 보입니다 { "image": "http:\/\/example.io\/wp-content\/uploads\/Another-Doc.pdf" }. REPLACE-Statement에 무엇을 추가해야합니까?

이미지 URL이 포함 된 모든 MySQL 테이블에서 REPLACE-Statement를 사용할 수 있습니다. 플러그인이 테이블을 추가하고 내 확장이 나머지를 수행 할 수있는 필터 배열을 만들려고 생각했습니다.

<?php
$tables = apply_filters("RML/Physix/Moved/Tables", array( // TODO: use $wpdb->prefix
    "wp_posts" => array("post_excerpt", "post_content"),
    "wp_postmeta" => array("meta_value")
    //...
));
?>

"이동"로그

사용자가 이동을 취소 할 수있는 "로그"를 만들고 싶습니다. 사용자가 이미지를 볼 경우 (예 : 슬라이더 회전 플러그인에서) 원래 폴더로 이동을 취소 할 수 있습니다.

그 아이디어에 대해 어떻게 생각하십니까? 더 나은 해결책이 있습니까? 나는 좋은 방법으로 모두 설명했으면 좋겠다!


9
첨부 파일의 기본 폴더 구조를 보려는 것이 아닙니다. 많은 경우에는 파일이 없습니다 (아마도 파일이 서버에 있지 않습니까? S3 AWS CDN 등), WordPress는 첨부 파일이 아닌 첨부 파일을 처리합니다. 서버에서 그것들을 옮기는 것은 비생산적입니다.
Tomon Now

5
이것은 명확성 / 품질 (노력에 +1) 측면에서 훌륭한 질문이지만 궁극적으로 우리는 외부 플러그인으로 간주되는 타사 플러그인을 다루고 있습니다. "신속하게"RML에 진지하게 투자하지 않고도 도움을줍니다.
TheDeadMedic

@TheDeadMedic 그렇습니다. 그러나 나는 RML의 작업과 어떻게 작동하는지 알기 위해 질문을했습니다. 이 질문은 RML에만 국한된 것이 아니라 데이터베이스에 따라 다릅니다. URL 교체 관련 문제를 해결하는 방법.
Matthias Günter

2
그리고 노력을위한 또 다른 +1 – 우리가 초기에했던 것처럼 더 많은 질문을하기를 바랍니다. 어쨌든 주요 문제는 위에서 간략히 설명되어 있습니다. 요점 을 밝히기 위해 : 편집을 제출하고 시도하고 있는 이유 를 설명해 주 시겠습니까? 지금까지 이러한 파일 시스템 작업을 수행하는 것은 의미가 없습니다.
kaiser

이 @ MatthiasGünter를 어떻게 사용 했습니까? 해결책을 찾았습니까?
Tim Malone

답변:


1

무료 솔루션 확장 "실제 사용자 정의 업로드 폴더"

오래 전에이 스레드를 열기 시작했으며 이제는 실제 업로드 라이브러리를 관리 할 수있는 Real Media Library 용 확장 플러그인이 있습니다 .

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

이 플러그인을 확인하십시오 : https://wordpress.org/plugins/physical-custom-upload-folder/

wp-content / uploads 폴더를 알고 있습니까? 여기에서 파일은 연도 / 월 기반 폴더에 저장됩니다. 특히 FileZilla와 같은 FTP 클라이언트로 작업하는 경우 매우 복잡하고 대량 프로세스가 될 수 있습니다.

이미 업로드 된 파일 이동 : 이 플러그인은 WordPress에서 URL을 다른 위치에서 사용하기 때문에 Real Media Library에서 파일을 이동할 때 파일을 실제로 이동할 수 없습니다. 그러한 프로세스를 유지하는 것은 매우 어렵습니다. 따라서 이것은 새로운 업로드에만 작동합니다.

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