Estou criando um site de beisebol com vários autores. Por experiência anterior, não importa o quão bem você conheça alguém pessoalmente, isso não significa que eles sigam ou mesmo leiam suas instruções.
Dito isto, eu gostaria de exigir que qualquer imagem que um autor decida "Usar como imagem em destaque" tenha no mínimo 640px de largura e um mínimo de 360px de altura.
Eu exigi que cada postagem tivesse uma Imagem em destaque usando o plugin WyPiekacz ; a postagem não será publicada sem uma imagem em destaque. Eu bloqueei a capacidade de um Autor fazer o hotlink para outro site removendo a guia "Do URL" em Adicionar mídia usando o código da Bainternet.
Agora, preciso exigir que qualquer imagem usada como imagem em destaque tenha pelo menos 640 px por 360px. Não sou um programador, mas tenho andado brincando e tentando usar o código de Maor Barazany como ponto de partida, mas sem sucesso. Seu código força as dimensões mínimas para qualquer imagem carregada .
fonte
Respostas:
bem, se você estiver usando o plugin WyPiekacz; como você disse para verificar se a imagem em destaque foi carregada, você pode ajustá-la um pouco para verificar se a imagem em destaque possui dimensões mínimas, conforme necessário.
Você pode alterar o código acima em wypiekacz.php para,
bem, eu não entendo o que você quer dizer com "guia Biblioteca de mídia".
fonte
list($url, $width, $height) = wp_get_attachment_image_src($post_id, 'full');
alterado paralist($url, $width, $height) = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full"); echo $imgsrc[0];
para verificar as dimensões apenas da imagem em destaque e nem todas as imagens anexadas.Eu verifiquei o núcleo e, aparentemente, há pouco espaço para manobras.
/wp-admin/includes/media.php é onde as guias Adicionar Mídia são geradas
A função get_media_item na linha 1034 é a que renderiza a tabela de anexos / mídia. Não vejo nenhum filtro disponível nele ou as funções anteriores que chamam este.
Algumas referências e exemplos de código em torno do problema.
Acho que uma solução alternativa seria alterar o título das imagens enviadas e anexar suas dimensões. Não tenho certeza sobre como alterar o título post de um arquivo enviado, mas renomear o arquivo em si pode ser obtido com esses dois filtros: sanitize_file_name e wp_handle_upload_prefilter
fonte
Não é uma resposta completa e não é uma recompensa, apenas uma prova de que o conceito básico funciona:
Apenas um 60segsSnippet e tem um grande problema: Isso será acionado para cada upload, e não apenas se alguém quiser adicionar uma imagem em destaque, porque não temos como entender o contexto do upload de imagens. Existem algumas maneiras de contornar isso, basicamente com alguma manipulação de js.
Eu deveria estar trabalhando agora e não tenho tempo para experimentar. Mas eu queria ajudar o máximo que pude, e talvez este seja um ponto de partida para os outros.
Felicidades
fonte
Esta não é a resposta mais elegante ... mas funciona! O plugin 'WyPiekacz', apesar de legal, não foi atualizado em três anos.
A solução mais elegante com a melhor experiência do usuário usaria JavaScript para lidar com isso na Edição rápida e na página de pós-edição. Então, para dar sorte, eu adicionaria algo ao
update_post_metadata
filtro (que funciona totalmente para impedir a imagem em destaque, mas não emitirá um aviso, pois é executado com o AJAX).Os avisos do administrador não aparecerão porque o WordPress redireciona e, mesmo assim, não apareceriam em uma Edição Rápida (meu método mostra um aviso na Edição Rápida, embora não tenha estilo).
fonte
Aqui está uma maneira de garantir que haja uma miniatura de tamanho adequado antes de exibi-la.
Primeiro, crie esta função auxiliar:
Agora você pode verificar antes de exibir a miniatura da postagem:
fonte
Isso fará o que você precisa :)
Ele está usando get_the_post_thumbnail, que também pode ajudá-lo, para que você não precise criar um monte de código fn que o WordPress já pode manipular para você, apenas um pensamento.
Isso usa
$thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));
para pegar um aleatório, se não houver um presente, isso pode ajudá-lo a seguir em frente.Este pequeno
echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
aviso'small-thumb'
mostra que ele corresponde àqueles add_image_size fn's que reunimos algumas linhas. Então, se você tivesse,add_image_size( 'small-square', 100, 100, true );
poderia ligar'small-square'
alternativamente.Felicidades
fonte