É possível definir uma imagem em destaque com URL de imagem externa
19
Eu sei que existem plugins que buscam imagens de URL remota e armazenam localmente. Eu só quero saber se é possível não armazenar imagem na Biblioteca de Mídia e usá-la como Imagem em Destaque ?
Você pode fazer isso com um campo personalizado onde armazena o URL da imagem externa. Pode ser difícil fazê-lo funcionar sempre que the_post_thumnail()estiver presente (ou função semelhante) ou fazê-lo funcionar com diferentes tamanhos de imagem definidos pelo tema ou plugin.
@ Volatil3 Eu não testei, mas lendo a descrição do plugin, eu diria que chama remotamente.
Andy Macaulay-Brook
Respostas:
35
Sim, é possível e muito fácil.
Este é o fluxo de trabalho que sugiro:
Coloque em algum lugar uma interface do usuário para inserir o URL da imagem em destaque. Provavelmente a melhor opção é usar o 'admin_post_thumbnail_html'gancho de filtro
Use o 'save_post'gancho de ação para salvar a URL (após a rotina de segurança e validação) em uma meta personalizada de postagem
Use o 'post_thumbnail_html'gancho de filtro para produzir a <img>marcação adequada , substituindo o padrão, se a postagem para a qual a imagem em destaque é necessária tiver a meta de postagem com a imagem em destaque externa
Além disso, devemos ter certeza de que o '_thumbnail_id'valor meta tem um valor não vazio quando definimos a meta para a URL externa; caso contrário has_post_thumbnail(), retornará falso para postagens que tenham apenas uma imagem em destaque externa.
De fato, é possível que uma postagem tenha uma imagem em destaque local padrão e uma definida por meio de nosso fluxo de trabalho e, nesse caso, a externa seja usada.
Para implementar nosso fluxo de trabalho, precisamos de uma função para validar o URL usado como uma imagem destacada externa, porque precisamos ter certeza de que é um URL de imagem válido.
Existem diferentes maneiras de executar esta tarefa; aqui eu uso uma maneira muito simples que só olha para o URL, sem baixar a imagem. Isso funciona apenas para URLs de imagem estática e não verifica se a imagem realmente existe, mas é rápida. Modifique-o para algo mais avançado, se necessário ( aqui está alguma ajuda).
A função, após algumas verificações de segurança, examina a URL publicada e, se estiver correta, salva na '_thumbnail_ext_url'meta meta. Se o URL estiver vazio e a meta tiver sido salva, ela será excluída, permitindo remover a meta simplesmente esvaziando o campo URL externo.
A última coisa a fazer é gerar a marcação da imagem em destaque quando o URL da imagem externa estiver definido em meta:
Na saída da imagem em destaque, não usei widthnem heightpropriedades, nem classes que o WordPress geralmente adiciona, como 'attachment-$size'. Isso porque detectar o tamanho de uma imagem requer um trabalho extra que diminui o carregamento da página, especialmente se você tiver mais de uma imagem em destaque na página.
Se você precisar desses atributos, poderá usar meu código adicionando um retorno de chamada para wp_get_attachment_image_attributes'filtrar (é um gancho padrão do WordPress ) ou talvez possa alterar meu código para detectar o tamanho da imagem e gerar atributos e classes relacionados.
Gist de plug-ins
Todo o código postado aqui, com a exceção de adicionar uma inicialização de domínio de texto adequada, está disponível como um plug-in de trabalho completo em uma Gist aqui . O código usa um espaço para nome, portanto, requer PHP 5.3 ou superior.
Notas
Obviamente, você deve ter licença e autorização para usar e vincular imagens no seu site a partir de imagens externas.
the_post_thumnail()
estiver presente (ou função semelhante) ou fazê-lo funcionar com diferentes tamanhos de imagem definidos pelo tema ou plugin.Respostas:
Sim, é possível e muito fácil.
Este é o fluxo de trabalho que sugiro:
'admin_post_thumbnail_html'
gancho de filtro'save_post'
gancho de ação para salvar a URL (após a rotina de segurança e validação) em uma meta personalizada de postagem'post_thumbnail_html'
gancho de filtro para produzir a<img>
marcação adequada , substituindo o padrão, se a postagem para a qual a imagem em destaque é necessária tiver a meta de postagem com a imagem em destaque externaPara funcionar, esse fluxo de trabalho precisa que a imagem em destaque seja mostrada no modelo usando as funções
get_the_post_thumnbail()
outhe_post_thumbnail()
.Além disso, devemos ter certeza de que o
'_thumbnail_id'
valor meta tem um valor não vazio quando definimos a meta para a URL externa; caso contráriohas_post_thumbnail()
, retornará falso para postagens que tenham apenas uma imagem em destaque externa.De fato, é possível que uma postagem tenha uma imagem em destaque local padrão e uma definida por meio de nosso fluxo de trabalho e, nesse caso, a externa seja usada.
Para implementar nosso fluxo de trabalho, precisamos de uma função para validar o URL usado como uma imagem destacada externa, porque precisamos ter certeza de que é um URL de imagem válido.
Existem diferentes maneiras de executar esta tarefa; aqui eu uso uma maneira muito simples que só olha para o URL, sem baixar a imagem. Isso funciona apenas para URLs de imagem estática e não verifica se a imagem realmente existe, mas é rápida. Modifique-o para algo mais avançado, se necessário ( aqui está alguma ajuda).
Bem fácil. Agora vamos adicionar os 3 ganchos descritos no fluxo de trabalho acima:
e as funções relacionadas. Primeiro o que gera o campo no admin:
Observe que eu usei
'txtdomain'
como domínio de texto, mas você deve usar um domínio de texto registrado e adequado.É assim que a saída fica quando vazia:
E é assim que parece depois de adicionar um URL de imagem e salvar / atualizar a postagem:
Então, agora que a nossa interface de administração está pronta, vamos escrever a rotina de salvamento:
A função, após algumas verificações de segurança, examina a URL publicada e, se estiver correta, salva na
'_thumbnail_ext_url'
meta meta. Se o URL estiver vazio e a meta tiver sido salva, ela será excluída, permitindo remover a meta simplesmente esvaziando o campo URL externo.A última coisa a fazer é gerar a marcação da imagem em destaque quando o URL da imagem externa estiver definido em meta:
Acabamos.
O que resta fazer
Na saída da imagem em destaque, não usei
width
nemheight
propriedades, nem classes que o WordPress geralmente adiciona, como'attachment-$size'
. Isso porque detectar o tamanho de uma imagem requer um trabalho extra que diminui o carregamento da página, especialmente se você tiver mais de uma imagem em destaque na página.Se você precisar desses atributos, poderá usar meu código adicionando um retorno de chamada para
wp_get_attachment_image_attributes'
filtrar (é um gancho padrão do WordPress ) ou talvez possa alterar meu código para detectar o tamanho da imagem e gerar atributos e classes relacionados.Gist de plug-ins
Todo o código postado aqui, com a exceção de adicionar uma inicialização de domínio de texto adequada, está disponível como um plug-in de trabalho completo em uma Gist aqui . O código usa um espaço para nome, portanto, requer PHP 5.3 ou superior.
Notas
Obviamente, você deve ter licença e autorização para usar e vincular imagens no seu site a partir de imagens externas.
fonte