-
-
Save art2web/90ce8dc973c8a65c36c8 to your computer and use it in GitHub Desktop.
WordPress - Script para recuperar a url de uma imagem, em um campo personalizado, e transformar em imagem destacada de um post
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// nome do campo personalizado que tem a URL da imagem | |
$nome_do_campo_imagem = ''; | |
// inclue a classe que cuida das imagens no WordPress | |
require_once( ABSPATH . 'wp-admin/includes/image.php' ); | |
// Cria uma instancia de WP_Query que retorna todos os posts do tipo post | |
// Se tiver muitos posts é bom fazer a migração em lotes, para isso utilize o offset | |
// Exemplo: $obj = new WP_Query ( array( 'post_type' => 'post', 'posts_per_page' => '500', 'offset' => '499' ) ); | |
// O exemplo acima vai retornar 500 posts a começar a contar do registro 500 | |
$obj = new WP_Query ( array ( 'post_type' => 'post', 'posts_per_page' => '-1' ) ); | |
// Inicia o loop dos posts retornados na query | |
if ( $obj->have_posts() ) { | |
while ( $obj->have_posts() ) { | |
$obj->the_post(); | |
// Recupera o ID do post | |
$post_id = get_the_ID(); | |
// Recupera a URL da imagem que está no campo personalizado | |
$imagem_url = get_post_meta ( $post_id, $nome_do_campo_imagem, true ); | |
// Converte a URL da imagem em caminho absoluto | |
$caminho_absoluto = get_home_path() . '/' . wp_make_link_relative ( $imagem_url ); | |
// Recupera o tipo e extensão da imagem | |
$file_type = wp_check_filetype( $caminho_absoluto ); | |
// Guarda o tipo da imagem na variável | |
$tipo_imagem = $file_type['type']; | |
// Cria o array com as informações da imagem | |
$attachment = array( | |
'guid' => basename( $caminho_absoluto ), | |
'post_mime_type' => $tipo_imagem, | |
'post_title' => preg_replace('/\.[^.]+$/', $nome_do_campo_imagem, basename( $caminho_absoluto ) ), | |
'post_content' => '', | |
'post_status' => 'publish' | |
); | |
// Inserindo a imagem no post | |
$attach_id = wp_insert_attachment( $attachment, $caminho_absoluto, $post_id ); | |
// Recupera meta dados da imagem | |
$attach_data = wp_generate_attachment_metadata( $attach_id, $caminho_absoluto ); | |
// Atualiza os meta dados da imagem já anexada ao post | |
wp_update_attachment_metadata( $attach_id, $attach_data ); | |
// Seta a imagem como imagem destacada do post | |
set_post_thumbnail( $post_id, $attach_id ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment