Skip to content

Instantly share code, notes, and snippets.

@art2web
Forked from leobaiano/cria_imagem_destacada.php
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save art2web/90ce8dc973c8a65c36c8 to your computer and use it in GitHub Desktop.
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
<?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