fbpx

Bem vindo ao
Blog da FULL.

Aprenda, crie e cresça seu negócio na internet.

Encontre conteúdos, dicas, tutoriais e novidades sobre as principais ferramentas Wordpress

Como adicionar uma imagem em destaque de um URL no WordPress

Você está em:

Como adicionar uma imagem em destaque de um URL no WordPress

Às vezes, você precisa adicionar dinamicamente uma imagem em destaque a uma postagem ou um tipo de postagem personalizada de outro servidor que não o que a instalação do WordPress está executando. E você está enfrentando um problema comum: como fazer isso?

Claro, neste caso, você precisa pegar a imagem em destaque do segundo servidor, baixá-la para o seu próprio servidor, na pasta de upload, e atribuí-la à postagem correta. No primeiro passo vamos criar um novo post dinamicamente, e então vamos lidar com a imagem em destaque.

Etapa 1: criar uma postagem dinamicamente

Para criar um post dinamicamente, você precisa usar a  função wp_insert_post() . Você pode colocar o código abaixo em uma declaração “IF”, caso contrário, cada vez que uma página for carregada, ela criará um novo post. Não tão útil.

// Register Post Data

$post = array();

$post[‘post_status’]   = ‘publish’;

$post[‘post_type’]     = ‘post’; // can be a CPT too

$post[‘post_title’]    = ‘My New Post’;

$post[‘post_content’]  = ‘My new post content’;

$post[‘post_author’]   = 1;

// Create Post

$post_id = wp_insert_post( $post );

A execução deste código simplesmente criará uma nova postagem. Agora é hora de adicionar a imagem em destaque.

Etapa 2: adicione a imagem em destaque

Para adicionar a imagem em destaque de um URL, temos que usar algumas funções do WordPress:

E agora aqui está o código. Comentei cada ação para que você possa ver exatamente o que está acontecendo quando esse script está sendo executado.

// Add Featured Image to Post

$image_url        = ‘http://s.wordpress.org/style/images/wp-header-logo.png’; // Define the image URL here

$image_name       = ‘wp-header-logo.png’;

$upload_dir       = wp_upload_dir(); // Set upload folder

$image_data       = file_get_contents($image_url); // Get image data

$unique_file_name = wp_unique_filename( $upload_dir[‘path’], $image_name ); // Generate unique name

$filename         = basename( $unique_file_name ); // Create image file name

// Check folder permission and define file location

if( wp_mkdir_p( $upload_dir[‘path’] ) ) {

    $file = $upload_dir[‘path’] . ‘/’ . $filename;

} else {

    $file = $upload_dir[‘basedir’] . ‘/’ . $filename;

}

// Create the image  file on the server

file_put_contents( $file, $image_data );

// Check image file type

$wp_filetype = wp_check_filetype( $filename, null );

// Set attachment data

$attachment = array(

    ‘post_mime_type’ => $wp_filetype[‘type’],

    ‘post_title’     => sanitize_file_name( $filename ),

    ‘post_content’   => ”,

    ‘post_status’    => ‘inherit’

);

// Create the attachment

$attach_id = wp_insert_attachment( $attachment, $file, $post_id );

// Include image.php

require_once(ABSPATH . ‘wp-admin/includes/image.php’);

// Define attachment metadata

$attach_data = wp_generate_attachment_metadata( $attach_id, $file );

// Assign metadata to attachment

wp_update_attachment_metadata( $attach_id, $attach_data );

// And finally assign featured image to post

set_post_thumbnail( $post_id, $attach_id );

O que é interessante neste código é que você pode colocá-lo em um loop. Por exemplo, para importar postagens de um arquivo CSV ou de um arquivo XML. Isso é realmente poderoso e muito útil, mas não se esqueça de uma coisa: nunca use este script em seu arquivo functions.php sem colocar uma tag condicional antes, caso contrário você terá centenas de novos posts criados em questão de minutos!

Você achou este snippet útil? Por favor, deixe um comentário e conte-nos o que você criou a partir deste trech

Aprenda com a FULL.

Junte-se a mais de 50 mil pessoas que recebem em primeira mão as principais ferramentas e tecnologia para desenvolvimento web

Meu carrinho
🎁 Faltam R$300,00 para liberar o Cupom Secreto
Seu carrinho está vazio.

Parece que você não adicionou nada ao seu carrinho =(