Created
August 8, 2012 16:45
Allow selection of a post type on media attachments in WordPress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Add Photographer selection to media upload | |
* | |
* @param $form_fields array, fields to include in attachment form | |
* @param $post object, attachment record in database | |
* @return $form_fields, modified form fields | |
*/ | |
function bsj_attachment_field_credit( $form_fields, $post ) { | |
//do_dump($post); | |
$form_fields['jdp_photographer'] = array( | |
'label' => 'Contributor:', | |
'input' => 'html', | |
'helps' => 'Choose the photographer/artist for this image', | |
); | |
//GET THE CURRENT PHOTOGRAPHER | |
$current_photog = get_post_meta($post->ID, 'jdp_photographer', true); | |
//do_dump($current_photog); | |
if ( !isset($current_photog) ) { | |
$current_photog = 0; | |
} | |
//SETUP THE FORM FIELD | |
$form_fields['jdp_photographer']['html'] = '<select name="attachments['.$post->ID.'][jdp_photographer]" id="attachments['.$post->ID.'][jdp_photographer]">'; | |
//OUTPUT NULL FIELD | |
$form_fields['jdp_photographer']['html'] .= '<option value="0" '.selected(0, $current_photog, false).'>Choose one...</option>'; | |
//GET THE TERMS IN THE 'jdp_contributor_types' taxonomy, excluding authors | |
$terms = get_terms( 'jdp_contributor_types', array('fields' => 'ids', 'hide_empty' => false, 'exclude' => '32') ); | |
//GET THE PHOTOGRAPHERS | |
$args = array( | |
'post_type' => 'jdp_contributors', | |
'nopaging' => true, | |
'posts_per_page' => -1, | |
'tax_query' => array( | |
array( | |
'taxonomy' => 'jdp_contributor_types', | |
'field' => 'id', | |
'terms' => $terms | |
), | |
), | |
'orderby' => 'name', | |
'order' => 'ASC', | |
); | |
$photographers = new WP_QUERY($args); | |
do_dump($photographers); | |
//LOOP THRU THE PHOTOGRAPHERS | |
foreach( $photographers as $postdata ) { | |
setup_postdata($postdata); | |
$form_fields['jdp_photographer']['html'] .= '<option value="'.$postdata->ID.'" '.selected($postdata->ID, $current_photog, false).'>'.$postdata->post_title.'</option>'; | |
} | |
wp_reset_query(); | |
$form_fields['jdp_photographer']['html'] .= '</select>'; | |
return $form_fields; | |
} | |
add_filter( 'attachment_fields_to_edit', 'bsj_attachment_field_credit', 10, 2 ); | |
/** | |
* Save values of Photographer Name and URL in media uploader | |
* | |
* @param $post array, the post data for database | |
* @param $attachment array, attachment fields from $_POST form | |
* @return $post array, modified post data | |
*/ | |
function jdp_attachment_field_credit_save( $post, $attachment ) { | |
if (isset( $attachment['jdp_photographer'] ) ) | |
update_post_meta( $post['ID'], 'jdp_photographer', $attachment['jdp_photographer'] ); | |
return $post; | |
} | |
add_filter( 'attachment_fields_to_save', 'jdp_attachment_field_credit_save', 10, 2 ); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment