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ć.