Podczas pracy nad projektem, w którym stworzyliśmy bardzo fajną galerię zasilaną całkowicie przez załączniki WordPress i niestandardowy typ postu, stwierdziliśmy potrzebę dodania dodatkowych pól do WordPress media uploader. Te dodatkowe pola pozwoliły nam przyznać każdemu fotografowi kredyt, dodając nazwę fotografa i jego adres URL na każdej stronie obrazu. WordPress przechowuje obrazy jako posty w typie postu załącznika, więc dodawanie metadanych jest jak dodawanie niestandardowych pól. Ponieważ załączniki WordPress nie mają interfejsu pól niestandardowych, musimy dodać pola niestandardowe do programu do przesyłania multimediów w celu zebrania metadanych. W tym artykule pokażemy, jak dodać dodatkowe pola do WordPress Media Uploader.
Będziemy używać następujących filtrów, aby dokonać zmiany: attachment_fields_to_edit oraz attachment_fields_to_save
W przypadku takiego projektu zalecamy utworzenie wtyczki specyficznej dla witryny i dodanie następującego kodu. Możesz jednak nadal dodawać kody w funkcjach szablonu.plik php, aby to działało.
/** * Dodaj nazwę fotografa i pola URL do Media uploader * * @ param $form_fields array, pola do załączenia w formularzu załączników * @ param $post obiekt, załącznik rekord w bazie danych * @ return $form_fields, zmodyfikowane pola formularza */ function be_attachment_field_credit ($form_fields, $post) { $form_fields ['be-photographer-name'] = array( 'label' = > 'Nazwa fotografa', 'input' = > 'text', 'value' = > get_post_meta ($post->ID, 'be_photographer_name', true ), 'helps' = > 'jeśli zostanie podany, zdjęcie zostanie wyświetlone', ); $form_fields ['be-photographer-url'] = array( 'label' = > 'adres URL fotografa', 'input' = > 'text', 'value' = > get_post_meta ($post->ID, 'be_photographer_url', true ), 'helps' = > 'Dodaj adres URL fotografa', ); return $form_fields; } add_filter ('attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 ); /** * Zapisz wartości nazwy fotografa i adresu URL w programie Media uploader * * @ param $Post array, dane post dla bazy danych * @ param $tablica załączników, pola załączników z formularza $_POST * @ return $ Post array, modified post data */ function be_attachment_field_credit_save ($post, $attachment ) { if (isset ($attachment['be-photographer-name'] ) ) update_post_meta ($post ['ID'],' be_photographer_name', $attachment ['be-photographer-name']); if (isset ($attachment['be-photographer-url'] ) ) update_post_meta( $post['ID'], 'be_photographer_url', esc_url( $attachment['be-photographer-url'] ) ); return $post; } add_filter ('attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 ); ?>
Powyższy kod doda dwa pola tekstowe do programu do przesyłania multimediów o nazwie Nazwa fotografa i adres URL fotografa. Widać to na poniższym zrzucie ekranu:
Wyjaśnienie kodu: W pierwszej funkcji po prostu używamy tablicy, aby określić Etykietę pola, Typ wejścia, wartość i tekst pomocy. Druga funkcja sprawdza, czy dla tych pól ustawiono wartość. Jeśli wartość jest ustawiona, metadane post są aktualizowane.
Jeśli chcesz wyświetlić pola w szablonie załączników, po prostu wklej następujące kody w pętli:
echo get_post_meta ($post->ID, 'be_photographer_url', true);
Jeśli chcesz wyświetlić pola wyróżnionego obrazu w szablonie archiwum lub innym szablonie, po prostu użyj:
echo get_post_meta (get_post_thumbnail_id (), 'be_photographer_url', true) ;
Mamy nadzieję, że podobał Ci się ten artykuł. Dla tych, którzy nie wiedzą, jak utworzyć szablon załącznika, nie martw się. W następnym artykule omówimy jak stworzyć szablon załącznika w WordPress.
Wskazówka dla Billa Ericksona za pokazanie nam, jak to zrobić.