Paano Magdaragdag ng Mga Karagdagang Patlang sa WordPress Media Uploader

Habang nagtatrabaho sa isang proyekto kung saan lumikha kami ng isang napaka-cool na gallery pinalakas ganap sa pamamagitan ng mga attachment ng WordPress at isang pasadyang uri ng post, natagpuan namin ang isang pangangailangan upang magdagdag ng karagdagang mga patlang sa WordPress media uploader. Pinapayagan kami ng mga karagdagang larangan na bigyan ang bawat kredito ng litratista sa pamamagitan ng pagdaragdag ng pangalan ng litratista, at ang kanilang URL sa bawat pahina ng imahe. Ang WordPress ay nag-iimbak ng mga imahe bilang mga post sa uri ng post attachment, kaya ang pagdaragdag ng data ng meta ay katulad lamang ng pagdaragdag ng mga custom na field. Dahil ang mga attachment ng WordPress ay walang pasadyang mga patlang ng UI, kailangan naming magdagdag ng mga pasadyang field sa uploader ng media upang mangolekta ng data ng meta. Sa artikulong ito, ipapakita namin sa iyo kung paano magdagdag ng karagdagang mga patlang sa WordPress Media Uploader.

Gagamitin namin ang mga sumusunod na filter upang gawin ang pagbabago: attachment_fields_to_edit at attachment_fields_to_save

Para sa isang proyekto tulad nito, lubos naming inirerekumenda na lumikha ka ng plugin na tukoy sa site at idagdag ang sumusunod na code. Gayunpaman, maaari mo pa ring idagdag ang mga code sa mga function.php ng ​​iyong tema upang gawin itong gumagana.

/ **
  * Magdagdag ng mga patlang ng Pangalan at URL ng Photographer sa media uploader
  *
  * @param $ form_fields array, mga field na isasama sa form ng attachment
  * @param $ post object, attachment record sa database
  * @return $ form_fields, binago ang mga patlang ng form
  * /
 
 function be_attachment_field_credit ($ form_fields, $ post) {
 $ form_fields ['be-photographer-name'] = array (
 'label' => 'Pangalan ng Photographer',
 'input' => 'text',
 'value' => get_post_meta ($ post-> ID, 'be_photographer_name', totoo),
 'tumutulong' => 'Kung ibinigay, ang credit ng larawan ay ipapakita',
 );

 $ form_fields ['be-photographer-url'] = array (
 'label' => 'URL ng photographer',
 'input' => 'text',
 'value' => get_post_meta ($ post-> ID, 'be_photographer_url', totoo),
 'tumutulong' => 'Magdagdag ng Photographer URL',
 );

 bumalik $ form_fields;
 }

 add_filter ('attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2);

 / **
  * I-save ang mga halaga ng Pangalan ng Photographer at URL sa uploader ng media
  *
  * @param $ post array, ang post data para sa database
  * @param $ attachment array, mga attachment field mula sa $ _POST form
  * @return $ post array, na-modify na data ng post
  * /

 function be_attachment_field_credit_save ($ post, $ attachment) {
 kung (isset ($ attachment ['be-photographer-name']))
 update_post_meta ($ post ['ID'], 'be_photographer_name', $ attachment ['be-photographer-name']);

 kung (isset ($ attachment ['be-photographer-url']))
 update_post_meta ($ post ['ID'], 'be_photographer_url', esc_url ($ attachment ['be-photographer-url']));

 bumalik $ post;
 }

 add_filter ('attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2);
 ?> 

Ang code sa itaas ay magdaragdag ng dalawang mga patlang ng teksto sa Media Uploader na tinatawag na Pangalan ng Photographer at Photographer URL. Makikita mo na sa screenshot sa ibaba:

Mga Karagdagang Patlang sa Uploader ng Media

Paliwanag ng code: Sa unang pag-andar, ginagamit lamang namin ang isang array upang tukuyin ang label ng field, uri ng pag-input, halaga, at teksto ng tulong. Ang ikalawang function ay pagsuri upang makita kung ang isang halaga ay naitakda para sa mga larangan. KUNG ang halaga ay naka-set, pagkatapos ay ang post metadata ay na-update.

Kung nais mong ipakita ang mga patlang sa iyong mga template ng attachment, pagkatapos ay i-paste ang sumusunod na code sa loob ng loop:

echo get_post_meta ($ post-> ID, 'be_photographer_url', totoo); 

Kung nais mong ipakita ang mga patlang para sa iyong itinatampok na larawan sa iyong template ng archive o anumang iba pang template, pagkatapos ay gamitin lamang ang:

echo get_post_meta (get_post_thumbnail_id (), 'be_photographer_url', totoo); 

Umaasa kami na nasiyahan ka sa artikulong ito. Para sa mga hindi alam kung paano lumikha ng isang template ng kalakip, huwag mag-alala. Sa susunod na artikulo, sasaklawin namin kung paano lumikha ng isang template ng attachment sa WordPress.

Hat Tip sa Bill Erickson sa pagpapakita sa amin kung paano gawin ito.