Escala de imagem usando get_the_post_thumbnail em WordPress

URL do problema – http://www.creativescripters.com/clients/testwp/uncategorized/image-resized/

Estou usando a versão mais recente do wordpress (auto-hospedado), o problema é que eu estou procurando obter uma miniatura da imagem redimensionada / dimensionada, e quando eu fizer essa wordpress retorna o teste-150×150.jpg, ou seja, Miniatura da imagem original e não a redimensionou a imagem que deveria ter sido test-e1513229707262-150×150.jpg

Passo para reproduzir o problema

  1. Carregue uma imagem, Escale-a (clique em Editar na imagem carregada e altere a largura e clique na escala). O WordPress renomeará a imagem e adicionará um Suffix Id ao nome para que você possa confirmar que a imagem foi dimensionada. Por exemplo, se você carregou test.jpg após o nome da imagem de escala, ele se tornará test-randomstring.jpg

insira a descrição da imagem aqui

  1. Quando eu chamo get_the_post_thumbnail ($ post, ‘full’) eu recebo a imagem correta O redimensionado ie test-randomstring.jpg insira a descrição da imagem aqui

  2. Quando eu tento obter um tamanho diferente da imagem em escala, por exemplo, eu preciso da miniatura gerada a partir do tamanho da imagem e eu chamo a function get_the_post_thumbnail ($ post, ‘thumbnail’) wordpress retorna o THUMBNAIL da imagem real (o que eu carreguei inicialmente teste. jpg e não o teste redimensionado-randomstring.jpg)

Screenshot – https://i.imgur.com/sQKoZcF.png

Solutions Collecting From Web of "Escala de imagem usando get_the_post_thumbnail em WordPress"

REGENER SEMPRE A FONTE DE CONFIGURAÇÃO NA IMAGEM EDITAR

(Novo material, especialmente a function personalizada, segue a conversa no tópico de comentários).

A seguinte function regenera automaticamente um conjunto de fonts completas após uma ação de edição de imagem.

 /** * ALWAYS REGENERATE FULL SOURCE SET AFTER EDITING IMAGE * answering StackExchange WordPress Development Question * see: https://wordpress.stackexchange.com/questions/288581/image-scaling-using-get-the-post-thumbnail-issue-in-wordpress/ * exploits code already worked out in Regenerate Thumbnails Plugin */ add_action( 'edit_attachment', 'wpse_always_regenerate', 99); function wpse_always_regenerate( $postID ) { $new_url = get_attached_file( $postID ); $metadata = wp_generate_attachment_metadata( $postID, $new_url ); wp_update_attachment_metadata( $postID, $metadata ); } 

Você adicionaria isso ao seu arquivo de temas functions.php se for o que você queria que ocorresse – se você estivesse feliz com o número de índice gerado e adicionado à imagem original, e estava feliz com o conjunto de fonts completo sendo regido pelo editado (re- dimensionada). Acontece deixar o carregamento original e seu conjunto na pasta. (Adicionar uma operação de “limpeza” opcionais é algo em que não entrei, mas existem plugins que irão limpar as imagens não juntas / não utilizadas de uma pasta já – uma poderia ser aplicada de forma semi-regular).

Não o testei para possíveis interações adicionais indesejadas. Na maioria das instalações, isso não daria mal, poderia até ajudar, embora eu possa imaginar algumas circunstâncias em que você NÃO pode querer todas as ações de edição de imagem para “regenerar miniaturas” (o que provavelmente deve ser chamado de “conjunto de origem regenerado”). Para essas instalações, você obviamente quer algo mais refinado.


DISCUSSÃO COMPLETA

Embora um pouco mais de clareza sobre a questão inicial e como exatamente reproduzi-la seria útil, acredito que a resposta é algo nesse sentido:

Quando você carrega uma imagem, o WordPress irá carregar a versão completa da imagem, juntamente com o conjunto normal de miniaturas. Se você dimensionar a imagem, também criará uma variação específica, com a adição do número random. Então, em uma instalação, quando eu carrego uma imagem como imagem destacada da publicação e procede à nova escala, eu recebo o seguinte na minha pasta de carregamentos:

! [insira a descrição da imagem aqui

Se eu pedir get_the_post_thumbnail( $postID, $type ) , eu recebo:

cheio :

  

pós-miniatura :

  

miniatura :

  

Então, ao escalar a imagem no upload, eu criei uma nova versão “completa” da imagem – com o código “random” adicionado ao nome do arquivo original e, como eu estava fazendo o upload como uma Imagem em Destaque, agora também é ranhurada como a imagem “pós-miniatura”.

Isso também pode ser verificado usando wp_get_attachment_image_src (), que, para “cheio” no acima, retorna:

 ( [0] => http://ckmswp.com/wp-content/uploads/2017/12/pingdom_topline_before-e1514050718361.jpg [1] => 500 [2] => 651 [3] => ) 

Então, em suma, se você ligar para uma das imagens nomeadas no conjunto de imagens usual, você criará as criadas antes de dimensionar a imagem. Se – assumindo que você dimensionou a imagem ao levá-la como uma imagem em destaque – você pede a imagem completa ou a imagem post-thumbnail (nesta instalação), você também obterá a nova imagem em escala.

Para obter a imagem completa original, acho que você pode ter que acessar o object anexo, que se parece com isto:

 [64755] => WP_Post Object ( [ID] => 64755 [post_author] => 1 [post_date] => 2017-12-23 17:38:24 [post_date_gmt] => 2017-12-23 17:38:24 [post_content] => [post_title] => pingdom_topline_before [post_excerpt] => [post_status] => inherit [comment_status] => open [ping_status] => closed [post_password] => [post_name] => pingdom_topline_before [to_ping] => [pinged] => [post_modified] => 2017-12-23 17:38:24 [post_modified_gmt] => 2017-12-23 17:38:24 [post_content_filtered] => [post_parent] => 64752 [guid] => **http://ckmswp.com/wp-content/uploads/2017/12/pingdom_topline_before.jpg** [menu_order] => 0 [post_type] => attachment [post_mime_type] => image/jpeg [comment_count] => 0 [filter] => raw ) ) 

Se você quisesse obter uma versão de 150×150 (ou seja o que for definido para sua instalação para miniatura) da imagem em escala, você precisaria:

1) carregue a imagem escalada separadamente e deixe WordPress gerar o teste-imagem-aleatória-150×150.jpg para você. ou

2) Alcance um efeito semelhante ao “regenerar miniaturas”.

Após essa ação de regeneração, minha pasta de carregamentos mostra o seguinte:

insira a descrição da imagem aqui

Observe que o conjunto de imagens originais permanece inalterado na pasta.

A criação de um conjunto de imagens re-gerado seria o método preferido, especialmente se você pretende usar a imagem em escala para outros fins, uma vez que o recarregá-lo e permitir que ele gere o conjunto completo de imagens apropriadas para sua instalação ajudará com a capacidade de resposta e consistência.

Para atingir esses objectives, você precisará de uma function personalizada (como a fornecida no início desta resposta), e uma implementação mais complexa e opcionalizada pode valer a pena considerar, mesmo que não esteja convencido de que seria usado muito frequentemente. (Quando eu quero escalar uma imagem em determinadas dimensões, quase sempre faço isso separadamente da WP, e dê-lhe um nome que faz sentido para mim, mas não posso falar pelos outros.)

Se você deseja obter um conjunto de imagens de origem completo (relativo à nova imagem em escala) e não deseja voltar a carregar a nova imagem em escala, ou confiar na function para fazê-lo sempre que você editar uma imagem em na Biblioteca, você pode usar Miniaturas Regeneradas ou plugins similares. Finalmente, você também pode colher (ou falsear) a imagem para produzir o conjunto de miniaturas.

Este último é fácil de executar: além de resize a imagem, em “editar imagem” você pode usar a ferramenta de corte para produzir uma cópia virtual próxima do original – e o WordPress produzirá o conjunto de fonts completo quando você salvar a imagem. Eu digo perto da cópia, porque em testes o editor não permitirá que você salve completamente uma “cópia” na verdade idêntica ao original, mas neste momento não tenho escolha senão examinar o código em detalhes, se eu quiser entender, e isso é algo Eu vou para outro dia e talvez escreva em outro lugar – a menos que alguém venha junto com o briefing completo primeiro.

Então, em suma,

1. Quando você primeiro carrega uma imagem, o WordPress cria um conjunto de miniaturas com base no arquivo carregado.

2. Se você simplesmente resize a imagem, ela produzirá uma única imagem dimensionada única, com um nome de arquivo gerado com base no nome original, com a adição de um elemento “random” (na verdade, um número de índice heterogêneo)

3. Se você voltar a carregar a nova imagem em escala ou se você regenerar as miniaturas – usando uma function personalizada, um plugin ou um truque de edição – você pode produzir um novo conjunto de imagens com base na imagem em escala, usando o nome do arquivo gerado.

Usou img tag e exibir imagem

 image 

Use a post-thumbnail vez da thumbnail . Seu código final será get_the_post_thumbnail($post, 'post-thumbnail'); . Consulte este link

Você pode tentar adicionar IMAGE_EDIT_OVERWRITE constante no seu arquivo wp-config para forçar o WP a purgar imagens antigas e usar novas.

A function wp_save_image() é o que processa a imagem e é chamado por wp_ajax_image_editor() que é o manipulador AJAX para os pontos de extremidade do AJAX do editor de imagens.

Você pode ler mais sobre como funciona no arquivo /wp-includes/image-edit.php ou navegar no seu código fonte on-line @ https://developer.wordpress.org/reference/functions/wp_save_image/

No entanto, ainda não tenho certeza se isso é realmente um problema,

  1. A imagem original é dizer 1024×707
  2. WP converte-o em tamanho de miniatura, juntamente com outros tamanhos.
  3. Você obtém uma miniatura dessa imagem que é 150×150.
  4. Você redimensioná-lo para dizer 400×276.
  5. Agora, a miniatura dessa imagem seria realmente idêntica ao polegar da primeira imagem.

Então o resultado é praticamente o mesmo de qualquer maneira 🙂

Você deve adicionar o tamanho de imagem apropriado no arquivo functions.php do seu tema.

add_image_size('my_post_thumbnial', 400, 99999, false);

400 é largura, 99999 é altura, falso é não cortar. Isso deve ser “após” add_theme_support (post-thumbnails); então descubra isso e coloque o código acima depois.

Você não precisa regenerar todas as suas imagens … basta fazer o novo upload das que você precisa. Opcionalmente, o plugin Regenerate Thumbnails ( https://wordpress.org/plugins/regenerate-thumbnails/ ) adiciona um link para cada imagem em sua biblioteca de mídia para regenerar essa imagem específica.

Em seguida, chame sua miniatura com the_post_thumbnail('my_post_thumbnial');