Próbuję pobrać i wstawić obrazy spoza środowiska wordpress do niestandardowego postu za pośrednictwem PHP.
Jak przenieść / załadować ten obraz do formatu WordPress folder roku data folder formatu tak jak Wordpress i ustawić ten obraz na wyróżniony obraz w stosunku do niestandardowego postu?
Również przesłać obraz do niestandardowej galerii postów?
Poniżej znajduje się mój kod
$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 );
Udało mi się przesłać obraz do mojego katalogu przesyłania, ale nie mogę utworzyć folderu z datą i rokiem. czy jest tam jakaś funkcja wp?
post-thumbnails
wp-insert-post
upload-dir
Faisal Shehzad
źródło
źródło
media_sideload_image
celu'id'
i będzie to powrót nowy identyfikator załącznika. Np .:$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); }
Wypróbuj to wyjaśnienie przesyłania przy użyciu ścieżki i identyfikatora posta .
Oto kod (dla starszych wersji):
źródło
Proszę odnieść się do następującego kodu, który programowo ustawia wyróżniony obraz. http://www.pearlbells.co.uk/code-snippets/set-featured-image-wordpress-programmatically/
źródło
Być może jestem nieporozumieniem, ale dlaczego chcesz to zrobić poza środowiskiem WordPress? Replikacja tej funkcjonalności byłaby bardzo pracochłonna! WordPress robi znacznie więcej niż tylko przesyłanie pliku i umieszczanie go w określonym katalogu, na przykład kontrolowanie, którzy użytkownicy mogą przesyłać pliki, dodawanie rekordów bazy danych do przesyłania i konfigurowanie relacji między polecanymi obrazami, wykonywanie akcji i filtrów dla zewnętrznych wtyczek w zależności od przesyłanie plików - wszystko przy jednoczesnym przestrzeganiu ustawień witryny (w odniesieniu do konwencji nazewnictwa, lokalizacji przesyłania mediów itp.).
Jeśli po prostu chcesz przesłać pliki bez zalogowania się do sekcji administratora WordPress, na przykład w celu przesłania plików z zewnętrznej strony, możesz zajrzeć do interfejsu API XML-RPC, a konkretnie do
uploadFile
metody.Inną opcją może być samodzielne napisanie mini API. Zasadniczo chciałbyś to zrobić:
wp_upload_dir()
aby uzyskać ścieżkęsanitize_file_name()
do katalogu przesyłania, aby utworzyć ścieżkę i zapisać plik w wynikowej lokalizacji.wp_insert_attachment()
do przechowywania załącznika w bazie danych (wp_check_filetype()
będzie pomocny przy ustawianiupost_mime_type
). Opcjonalnie ustaw takżepost_parent
i_thumbnail_id
klawisz meta, jeśli chcesz.wp_create_nonce()
iwp_verify_nonce()
aby formularz był nieco bardziej bezpieczny.źródło
wp_insert_attachment()
, ponieważ powinien zrobić tyle, ile potrzebujesz. Odradzam ręczne modyfikowanie bazy danych poza WordPress, jeśli to właśnie robisz. Zamiast tego spójrz na źródło WordPress i spróbuj zidentyfikować części odpowiedzialne za dodawanie danych postów, obsługę przesyłania plików i wstawianie załączników. Innymi słowy, właściwie to, co nakreśliłem w mojej odpowiedzi powyżej.