Organização física da biblioteca de mídia wordpress (Real Media Library plugin)

Estrutura da pasta da Real Media Library

Introdução.

Na captura de canvas acima, você pode ver uma estrutura de pastas construída com o plugin premium Real Media Library . Agora eu quero criar um plugin de extensão que pode organizar a estrutura da pasta na estrutura da pasta física – o RML é apenas uma estrutura visual.

Atualização # 2 (2017-01-27): Confira a resposta!

Dê uma olhada na organização física da biblioteca de mídia wordpress (Real Media Library plugin) onde eu criei um plugin de extensão gratuita.

Atualização # 1 (2016-12-14): o primeiro sucesso: pasta de upload de miniatura personalizada

Agora, criei outro gerador de miniaturas real do plugin, o que permite que você crie uma pasta de upload de miniatura personalizada. Basta dar uma olhada nesta captura de canvas:

Pasta de upload do gerador de miniaturas real

Por que pastas de miniaturas personalizadas? As pastas de miniaturas personalizadas são mais fáceis de manter, porque aqui, não precisamos manter os URLs de atualização do database porque as miniaturas ainda estão no mesmo local (o que ainda não foi alterado pela extensão RML).

Se você quiser saber mais sobre o gerador de miniaturas personalizado, você pode dar uma olhada neste tópico, onde eu expliquei uma abordagem técnica. Cada tamanho de imagem personalizado no diretório de upload personalizado? .

Mantenha este tópico, porque no início de 2017 continuarei o desenvolvimento da extensão RML, que permite a synchronization entre o RML ea pasta do uploads do servidor. A extensão também é compatível com o plugin Real Miniature Generator, portanto, deve haver a atualização do database.

Postagem original

Meu objective de extensão.

No momento eu estou na pasta “/ Não organizada”, isso significa que é a pasta / wp-content / uploads /. Quando eu mudo o arquivo (como você pode ver na captura de canvas) na pasta PDFs / SubDir, o arquivo está na pasta visual. Agora, minha extensão detecta a pasta diferente para o físico e mostra um pequeno “botão” que permite ao usuário também movê-lo fisicamente:

Botão para fisicamente

O usuário agora clica no botão “Physix it!” e o arquivo deve ser movido para /wp-content/uploads/pdfs/subdir/Another-Doc.pdf . Já criei o processo de movimentação: leio todos os arquivos de mídia para este anexo (miniaturas inclusivas para imagens) e use a renomeação da function php ($ old_file, $ new_file) juntamente com a function WP wp_mkdir_p () . O GUID na tabela wp_posts e os metadados no wp_postmeta também são alterados. Quando todos os arquivos são movidos, eu chamo a ação:

 

$ meta é uma matriz:

insira a descrição da imagem aqui

A chave “renomear” contém todos os processos de renomeação (por exemplo, aqui pode ser o arquivo de miniaturas para imagens).

O problema: Garantir a compatibilidade do plugin.

O principal problema (se é) da biblioteca de mídia do WordPress é que muitos complementos salvam as referências a imagens com URLs completas em vez da ID do anexo. Isso significa que existem tabelas MySQL com colunas que contém uma URL para o arquivo fornecido. Como posso garantir que TODAS as referências estejam atualizadas com as pastas físicas? Eu acho que é impossível.

Uma possível abordagem.

Acerto na ação e atualize as tabelas padrão como wp_post-> post_content , … com uma instrução recapitultiva REPLACE-em SQL.

 recReplace($arr, "post_content"); // function is already finished } ?> 

A variável $ rec é agora uma 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') 

By the way: Para uma imagem (testimage.jpg) com todos os arquivos de miniaturas, pode parecer assim:

 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') 

Mas o que acontece, se é uma string serializada (JSON) na tabela do database? Então, parece { "image": "http:\/\/example.io\/wp-content\/uploads\/Another-Doc.pdf" } . O que devo adicionar à REPLACE-Statement?

A REPLACE-Statement agora pode ser usada em todas as tabelas MySQL que contém URLs de imagem. Eu pensei em criar uma matriz de filtros onde os plugins podem adicionar suas tabelas e minha extensão faz o resto:

 prefix "wp_posts" => array("post_excerpt", "post_content"), "wp_postmeta" => array("meta_value") //... )); ?> 

O log “mover”

Eu quero criar um “log” onde os usuários podem desfazer os movimentos. Se um usuário ver, uma imagem está quebrada (por exemplo, no plugin do Slider Revolution), ele pode desfazer o movimento para a pasta original.

O que você acha dessa idéia? Existe uma solução melhor? Espero ter explicado tudo de uma forma legal!

Solutions Collecting From Web of "Organização física da biblioteca de mídia wordpress (Real Media Library plugin)"

Extensão de solução gratuita “Pasta de carregamento personalizado físico”

Há muito tempo eu comecei a abrir esse tópico e agora existe um plugin de extensão útil para o Real Media Library, que permite gerenciar fisicamente sua pasta de carregamentos .

insira a descrição da imagem aqui

Confira este plugin: https://wordpress.org/plugins/physical-custom-upload-folder/

Você conhece a pasta wp-content / uploads? Lá, os arquivos são armazenados em pastas baseadas em ano / mês. Isso pode ser um processo muito complicado e em massa, especialmente quando você está trabalhando com um cliente FTP como o FileZilla.

Movendo arquivos já carregados: este plugin não permite mover os arquivos fisicamente quando você move um arquivo na Real Media Library porque o WordPress usa os URL em diferentes lugares. É muito difícil manter esse processo. Então, isso só funciona para novos uploads.