Você pode definir uma imagem como miniatura da postagem quando estiver na sua biblioteca de mídia. Para adicionar uma imagem na sua biblioteca de mídia, você precisa carregá-la no seu servidor. O WordPress já tem uma função para colocar imagens na sua biblioteca de mídia, você só precisa de um script que faça o upload do seu arquivo.
Uso:
Generate_Featured_Image( '../wp-content/my_image.jpg', $post_id );
// $post_id is Numeric ID... You can also get the ID with:
wp_insert_post()
Função:
function Generate_Featured_Image( $image_url, $post_id ){
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = basename($image_url);
if(wp_mkdir_p($upload_dir['path']))
$file = $upload_dir['path'] . '/' . $filename;
else
$file = $upload_dir['basedir'] . '/' . $filename;
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
$res1= wp_update_attachment_metadata( $attach_id, $attach_data );
$res2= set_post_thumbnail( $post_id, $attach_id );
}
http://codex.wordpress.org/Function_Reference/wp_upload_dir
http://codex.wordpress.org/Function_Reference/wp_insert_attachment
EDIT: Criação de caminho adicionada
http://codex.wordpress.org/Function_Reference/wp_mkdir_p
Tente usar
set_post_thumbnail()
.Editar por Otto: Você esclareceu sua pergunta, então esclarecerei a resposta que Chip deu.
Basicamente, você também precisa fazer o 'anexo' da postagem. Quando uma imagem é carregada na biblioteca de mídia do WordPress, é feita uma entrada de postagem especial com um tipo de anexo. Este anexo está vinculado a alguma postagem específica por meio do identificador post_parent.
Portanto, se você souber o ID do anexo, chamar set_post_thumbnail com o objeto de postagem ou o ID e o ID do anexo simplesmente definirá o sinalizador de miniatura da postagem.
Se você ainda não criou o anexo, precisará fazer isso primeiro. A maneira mais fácil de fazer isso é com
wp_insert_attachment()
. Essa função utiliza uma matriz de alguns parâmetros, o nome do arquivo (o arquivo já deve estar no diretório de uploads adequado) e o ID da postagem pai à qual você deseja anexar o anexo.Apenas enviar um arquivo e anexá-lo a uma postagem não faz nada automaticamente. Este é simplesmente um tipo de mecanismo de categorização. O mecanismo da galeria, por exemplo, usa as imagens anexadas de uma postagem para criar a [galeria] para essa postagem. Uma miniatura de uma postagem é apenas uma das imagens anexadas que foi configurada para ser a miniatura.
Mais informações sobre como usar o wp_insert_attachment podem ser encontradas no codex (link acima).
fonte
Eu gostaria de melhorar a resposta de Robs utilizando as principais funções do WP
download_url
emedia_handle_sideload
fonte
set_post_thumbnail()
é a melhor função para esse requisito.Eu acho que você encontra o ID de um anexo via
get_children()
ouget_posts()
. O resultado tem uma matriz e dentro dessa matriz está o ID. O exemplo a seguir para teste; eu espero que dê certo; escreva sem testes, apenas no zero.Para sua exigência, é importante que você mude
get_the_ID()
com a suapost-ID
; retorne o ID do anexo e você poderá usar fothset_post_thumbnail()
.fonte
Acabei de encontrar isso e simplificou muito, funciona, mas não sou um purificador de segurança
simples ou o que? depois de obter os arquivos corretos, o wordpress manipula a mídia e a carrega, e depois a define como miniatura.
fonte