Możesz ustawić obraz jako miniaturę postu, gdy jest on w bibliotece multimediów. Aby dodać obraz z biblioteki multimediów, musisz załadować go na swój serwer. WordPress ma już funkcję umieszczania obrazów w bibliotece multimediów, potrzebujesz tylko skryptu, który prześle twój plik.
Stosowanie:
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()
Funkcjonować:
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
EDYCJA: Dodano tworzenie ścieżki
http://codex.wordpress.org/Function_Reference/wp_mkdir_p
Spróbuj użyć
set_post_thumbnail()
.Edytuj przez Otto: Wyjaśniłeś swoje pytanie, więc wyjaśnię odpowiedź, którą Chip udzielił.
Zasadniczo musisz również utworzyć „załącznik” do posta. Kiedy obraz jest przesyłany do biblioteki multimediów WordPress, tworzony jest dla niego specjalny wpis z załącznikiem typu posta. Ten załącznik jest powiązany z określonym postem za pomocą identyfikatora post_parent.
Więc jeśli znasz identyfikator załącznika, to wywołanie set_post_thumbnail za pomocą obiektu post lub identyfikatora i ID załącznika po prostu ustawi flagę miniatury postu.
Jeśli jeszcze nie utworzyłeś załącznika, musisz to zrobić najpierw. Najłatwiej to zrobić za pomocą
wp_insert_attachment()
. Ta funkcja pobiera tablicę kilku parametrów, nazwę pliku (plik musi już znajdować się w odpowiednim katalogu do przesyłania) oraz identyfikator posta postu nadrzędnego, do którego chcesz dołączyć załącznik.Sam plik przesłany i dołączony do postu nie robi nic automatycznie. Jest to po prostu rodzaj mechanizmu kategoryzacji. Na przykład mechanizm galerii wykorzystuje załączone obrazy postu do zbudowania [galerii] dla tego postu. Miniatura posta to tylko jeden z załączonych obrazów, który ma być miniaturą.
Więcej informacji na temat korzystania z wp_insert_attachment można znaleźć w kodeksie (link powyżej).
źródło
Chciałbym poprawić odpowiedź Robsa, wykorzystując podstawowe funkcje WP
download_url
imedia_handle_sideload
źródło
set_post_thumbnail()
jest najlepszą funkcją dla tego wymagania.Myślę, że możesz znaleźć identyfikator załącznika za pomocą
get_children()
lubget_posts()
. Wynik ma tablicę, a wewnątrz tej tablicy znajduje się identyfikator. Poniższy przykład do testowania; mam nadzieję, że to zadziała; pisz bez testów, tylko od zera.Dla twoich wymagań ważne jest, abyś zmienił się
get_the_ID()
wraz ze swoimpost-ID
; zwróć identyfikator załącznika, a będziesz mógł użyć fothset_post_thumbnail()
.źródło
Właśnie to znalazłem i uczyniłem to o wiele prostszym, działa, ale nie jestem płuczką bezpieczeństwa
proste czy co? po uzyskaniu odpowiednich plików wordpress obsłuży media i prześle je, a następnie ustawi jako miniaturę.
źródło