Estou tentando buscar e inserir imagens fora do ambiente wordpress em uma postagem personalizada via PHP.
Como mover / fazer upload dessa imagem para o formato de pasta de data e ano do diretório de upload do wordpress, assim como o wordpress faz e definir essa imagem para a imagem em destaque na postagem personalizada?
Também enviar imagem para a galeria de postagem personalizada?
Abaixo está o meu código
$filename = $image['name'];
$target_path = "../wp-content/uploads/";
$target_path = $target_path . $filename;
$wp_filetype = wp_check_filetype(basename($filename), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['baseurl'] . '/' . basename( $filename ),
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit',
);
$attach_id = wp_insert_attachment( $attachment, $target_path, $post_id );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $post_id, $attach_id );
Eu consegui carregar a imagem no meu diretório de envios, mas não consigo criar a pasta ano e data. isso existe alguma função wp para isso?
post-thumbnails
wp-insert-post
upload-dir
Faisal Shehzad
fonte
fonte
media_sideload_image
que'id'
e ele vai retornar o novo ID de ligação. Por exemplo:$new_att_id = media_sideload_image($image, $post_id, "image description...", 'id'); if(!is_wp_error($new_att_id)) { set_post_thumbnail($post_id, $new_att_id); }
Tente esta explicação de upload usando um caminho e um ID da postagem .
Aqui está o código (para legado):
fonte
Consulte o código a seguir que define a imagem em destaque programaticamente. http://www.pearlbells.co.uk/code-snippets/set-featured-image-wordpress-programmatically/
fonte
Talvez eu esteja entendendo mal, mas por que você gostaria de fazer isso fora do ambiente do WordPress? Replicar essa funcionalidade seria muito trabalhoso! O WordPress faz muito mais do que simplesmente enviar o arquivo e colocá-lo em um diretório específico, por exemplo, controlar quais usuários têm permissão para fazer upload de arquivos, adicionar registros de banco de dados para uploads e configurar relacionamentos de imagens em destaque, executar ações e filtros para plugins externos dependentes de upload de arquivo - sempre aderindo às configurações do site (em relação às convenções de nomenclatura, local de upload de mídia, etc.).
Se você simplesmente deseja fazer upload de arquivos sem estar conectado à seção de administração do WordPress, por exemplo, para fazer upload de arquivos de um site externo, talvez queira dar uma olhada na API XML-RPC e especificamente no
uploadFile
método.Outra opção poderia ser escrever uma mini API. Basicamente, o que você gostaria de fazer é o seguinte:
wp_upload_dir()
para obter o caminho do diretório de upload esanitize_file_name()
para construir o caminho e gravar o arquivo no local resultante.wp_insert_attachment()
para armazenar o anexo no banco de dados (wp_check_filetype()
será útil para a configuraçãopost_mime_type
). Opcionalmente, também definapost_parent
e a_thumbnail_id
meta-chave, se desejar.wp_create_nonce()
ewp_verify_nonce()
para torná-lo um pouco mais seguro.fonte
wp_insert_attachment()
, deve fazer muito o que você precisa, eu acho. Eu desencorajaria modificar manualmente o banco de dados fora do WordPress, se é isso que você está fazendo. Em vez disso, basta olhar para a fonte do WordPress e tentar identificar as partes responsáveis por adicionar dados de postagem, manipular uploads de arquivos e inserir anexos. Em outras palavras, praticamente o que descrevi na minha resposta acima.