_x( 'Business Card', 'Personal information', 'piratenkleider' ), 'singular_name' => _x( 'Business Card', 'Personal information', 'piratenkleider' ), 'menu_name' => __( 'Business Card', 'piratenkleider' ), ); $args = array( 'label' => __( 'Business Card', 'piratenkleider' ), 'description' => __( 'Manage personal information', 'piratenkleider' ), 'labels' => $labels, 'supports' => array( 'title', 'thumbnail', 'editor'), 'hierarchical' => false, 'public' => true, 'menu_position' => 7, 'menu_icon' => '', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => true, ); register_post_type( 'person', $args ); } // Hook into the 'init' action add_action( 'init', 'piratenkleider_person_post_type', 0 ); function piratenkleider_taxonomies_person() { $labels = array(); $args = array( 'labels' => $labels, 'hierarchical' => true, ); register_taxonomy( 'person_category', 'person', $args ); } add_action( 'init', 'piratenkleider_taxonomies_person', 0 ); /* * Metabox fuer weitere Personeninfo */ function piratenkleider_person_metabox() { add_meta_box( 'piratenkleider_person_metabox', __( 'Personal information', 'piratenkleider' ), 'piratenkleider_person_metabox_content', 'person', 'normal', 'high' ); } function piratenkleider_person_metabox_content( $post ) { global $defaultoptions; global $post; $academictitle = array( __("Prof.", 'piratenkleider'), __("Doc.", 'piratenkleider'), __("PD", 'piratenkleider') ); wp_nonce_field( plugin_basename( __FILE__ ), 'person_metabox_content_nonce' ); ?>






ID, 'person_bildid', true ); $person_bild = get_post_meta( $post->ID, 'person_bild', true ); if (isset($person_bildid) && ($person_bildid>0)) { $image_attributes = wp_get_attachment_image_src( $person_bildid, 'person-thumb' ); if (is_array($image_attributes)) { echo ''; $person_bild = $image_attributes[0]; } } elseif (filter_var($person_bild, FILTER_VALIDATE_URL)) { echo ''; } else { echo ''; } echo '
'; ?> " />











'', 1 => __('Business card updated.', 'piratenkleider'), 2 => __('Business card updated.', 'piratenkleider'), 3 => __('Business card removed.', 'piratenkleider'), 6 => __('Business card publiced.', 'piratenkleider'), 7 => __('Business card saved.', 'piratenkleider'), ); return $messages; } add_filter( 'post_updated_messages', 'piratenkleider_person_metabox_updated_messages' ); function piratenkleider_display_person ($post_id = 0, $format = 'full', $profillink = 1) { global $options; $person_shortdesc = get_post_meta( $post_id, 'person_shortdesc', true ); $person_text = apply_filters('the_content', get_post_field('post_content', $post_id)); $person_link = get_permalink( $post_id); $person_last_name = get_post_meta( $post_id, 'person_last_name', true ); $person_first_name = get_post_meta( $post_id, 'person_first_name', true ); $person_academic = get_post_meta( $post_id, 'person_academic', true ); $fullname = ''; if (isset($person_academic) && strlen($person_academic)>1) { $fullname = $person_academic.' '; } $fullname .= $person_first_name.' '.$person_last_name; $person_url = get_post_meta( $post_id, 'person_url', true ); $person_email = get_post_meta( $post_id, 'person_email', true ); $person_pgp_fingerprint = get_post_meta( $post_id, 'person_pgp_fingerprint', true ); $person_facebook = get_post_meta( $post_id, 'person_facebook', true ); $person_twitter = get_post_meta( $post_id, 'person_twitter', true ); $person_wiki = get_post_meta( $post_id, 'person_wiki', true ); $person_google = get_post_meta( $post_id, 'person_google', true ); $person_friendica = get_post_meta( $post_id, 'person_friendica', true ); $person_instagram = get_post_meta( $post_id, 'person_instagram', true ); $person_newsfeed = get_post_meta( $post_id, 'person_newsfeed', true ); $person_imgid = get_post_meta( $post_id, 'person_bildid', true ); $person_image = get_post_meta( $post_id, 'person_bild', true ); $bildfullwidth = $bildsmallwidth = $personenbildfull = $personenbildsmall = $personenbildsidebar = ''; if ((isset($person_imgid) && ($person_imgid>0)) || (isset($person_image) && (strlen($person_image)))) { $alttext = $fullname; $coprightcap = ''; if (isset($person_imgid) && ($person_imgid>0)) { $image_attributes = wp_get_attachment_image_src( $person_imgid, 'person-thumb' ); $image_attributessmall = wp_get_attachment_image_src( $person_imgid, 'post-thumbnails' ); $image_attributessidebar = wp_get_attachment_image_src( $person_imgid, $options['sidebar-thumbnail_name'] ); if (isset($image_attributes["credits"]) && (strlen($image_attributes["credits"])>1)) { $alttext .= "\n".' ('.$image_attributes["credits"].')'; $coprightcap .= '('.$image_attributes["credits"].')'; } if (is_array($image_attributes)) { $personenbildfull = ''.$alttext.''; $personenbildsmall = ''.$alttext.''; $personenbildsidebar = ''.$alttext.''; } } elseif (isset($person_image)) { $personenbildfull = ''.$alttext.''; $personenbildsmall = ''.$alttext.''; $personenbildsidebar = ''.$alttext.''; } $bildfullwidth = '
'; $bildfullwidth .= $personenbildfull; $bildfullwidth .= '

'.$fullname; if (isset($coprightcap) && strlen($coprightcap)>1) { $bildfullwidth .= '
('.$coprightcap.')'; } $bildfullwidth .= '

'; $bildsmallwidth = '
'; $bildsmallwidth .= $personenbildsmall; $bildsmallwidth .= '

'.$fullname; if (isset($coprightcap) && strlen($coprightcap)>1) { $bildsmallwidth .= '
('.$coprightcap.')'; } $bildsmallwidth .= '

'; } $out = ''; $kontaktdata = ''; if (isset($person_url) || isset($person_email) || isset($person_facebook) || isset($person_twitter) || isset($person_wiki) || isset($person_google)) { $kontaktdata .= '

'.__('Contact','piratenkleider').'

'; $kontaktdata .= "\n"; } if ($format== 'full') { $out .= $bildfullwidth."\n"; $out .= "
\n"; $out .= '

'.__('About','piratenkleider').' '; if ($profillink==1) $out .= ''; $out .= '' . $fullname . ''; if ($profillink==1) $out .= ''; $out .= '

'; $out .= '

'.$person_shortdesc."

\n"; $out .= $kontaktdata; $out .= $person_text; $out .= "
\n"; if ($options['vcard-showfeed']==1 && isset($person_newsfeed) && strlen($person_newsfeed)>1) { if(function_exists('fetch_feed')) { include_once(ABSPATH.WPINC.'/feed.php'); $feed = fetch_feed($person_newsfeed); $limit = $feed->get_item_quantity($options['vcard-feed-maxnum']); // specify number of items $items = $feed->get_items(0, $limit); // create an array of items } if ($limit == 0) { $out .= ''; } else { $out .= '
'; $out .= "

".__('Last posts', 'piratenkleider')."

\n"; $out .= ""; $out .= "
\n"; } } if ($options['vcard-showlocalentries']==1) { $searchterm = $fullname; $query_args = array( 's' => $searchterm ); $personposts = new WP_Query( $query_args ); if ($personposts->have_posts() ) { $ppout = $ppoutput = ''; while ($personposts->have_posts()) : $personposts->the_post(); $ppout = piratenkleider_post_teaser(1,1,1,200, 1,1,4); if (isset($ppout)) { $ppoutput .= $ppout; } endwhile; } wp_reset_query(); if (isset($ppoutput)) { $out .= '
'; $out .= "

".__('Last entries from this site about', 'piratenkleider')." $fullname

\n"; $out .= $ppoutput; $out .= "
\n"; } } } elseif ($format== 'small') { $out .= '
'; $out .= $bildsmallwidth; $out .= "
\n"; $out .= '

'; if ($profillink==1) $out .= ''; $out .= '

'; $out .= '

'.$person_shortdesc."

\n"; $out .= $kontaktdata; $out .= "
\n"; $out .= "
\n"; } elseif ($format== 'sitebar') { $out .= '
'; if ($profillink==1) $out .= ''; $out .= '
'; $out .= '

'; $out .= $fullname; $out .= '

'; $out .= $kontaktdata; $out .= '

'.$person_shortdesc."

\n"; $out .= "
\n"; $out .= "
\n"; } elseif ($format== 'table') { $out .= ''; $out .= ""; $out .= $bildsmallwidth; $out .= ""; $out .= ""; $out .= '

'; if ($profillink==1) $out .= ''; $out .= '

'; $out .= $kontaktdata; $out .= '

'.$person_shortdesc."

\n"; $out .= ""; $out .= ""; } elseif ($format== 'bigtable') { $out .= ''; $out .= ""; $out .= $bildfullwidth; $out .= ""; $out .= ""; $out .= '

'; if ($profillink==1) $out .= ''; $out .= '

'; $out .= $kontaktdata; $out .= '

'.$person_shortdesc."

\n"; $out .= $person_text; $out .= ""; $out .= ""; } else { $out .= '
'; $out .= $bildsmallwidth; $out .= "
\n"; $out .= '

'; if ($profillink==1) $out .= ''; $out .= '

'; $out .= $person_shortdesc."\n"; $out .= $kontaktdata; $out .= "
\n"; $out .= "
\n"; } return $out; } /* * Shortcode CPT Person */ function piratenkleider_person_shortcode( $atts ) { global $options; extract( shortcode_atts( array( 'cat' => '', 'name' => '', 'num' => 30, 'id' => '', 'format' => 'table', 'order' => 'ASC', 'showautor' => 1, 'listorder' => '', 'offset' => 0, ), $atts ) ); $single = 0; $cat = sanitize_text_field($cat); $listorder= sanitize_text_field($listorder); $name = sanitize_text_field($name); $order = strtolower(sanitize_text_field($order)); $offset = intval($offset); if ($order != 'desc') { $order='ASC'; } else { $order='DESC'; } $format = sanitize_text_field($format); $showautor = sanitize_text_field($showautor); if ((isset($id)) && ( strlen(trim($id))>0)) { $args = array( 'post_type' => 'person', 'p' => $id ); $single = 1; } elseif ((isset($name)) && ( strlen(trim($name))>0)) { $args = array( 'post_type' => 'person', 'meta_query' => array( array( 'key' => 'person_last_name', 'value' => $name, 'compare' => 'LIKE', ) ) ); $single = 1; } elseif ((isset($cat)) && ( strlen(trim($cat))>0)) { $args = array( 'post_type' => 'person', 'tax_query' => array( array( 'taxonomy' => 'person_category', 'field' => 'slug', 'terms' => $cat ) ), 'order' => $order, 'meta_key' => 'person_last_name', 'orderby' => 'meta_value', 'posts_per_page' => $num, 'offset' => $offset ); } elseif ((isset($listorder)) && ( strlen(trim($listorder))>0)) { $post_list = explode(",",$listorder); $list = array(); $i=0; foreach( $post_list as $post_id ) { if (intval(trim($post_id))) { $list[$i] = intval(trim($post_id)); $i= $i +1; } } $args = array( 'post_type' => 'person', 'post__in' => $list, 'order' => $order, 'orderby' => 'post__in', 'posts_per_page' => $i, ); } else { $args = array( 'post_type' => 'person', 'order' => $order, 'meta_key' => 'person_last_name', 'orderby' => 'meta_value', 'posts_per_page' => $num, 'offset' => $offset ); } $out = ''; $person = new WP_Query( $args ); if( $person->have_posts() ) { if ((isset($format) && ($format=='table') && ($single==0)) || (isset($format) && ($format=='bigtable') && ($single==0))) { $out .= ' '; } else { $out .= '
'; } while ($person->have_posts() ) { $person->the_post(); $post_id = $person->post->ID; if (isset($id) && isset($format) &&($format=='short')) { $out .= piratenkleider_display_person($post_id, 'short'); } elseif (isset($format) && ($format=='table') && ($single==0)) { $out .= piratenkleider_display_person($post_id, 'table'); } elseif (isset($format) && ($format=='bigtable') && ($single==0)) { $out .= piratenkleider_display_person($post_id, 'bigtable'); } else { $out .= piratenkleider_display_person($post_id, 'full'); } } if ((isset($format) && ($format=='table') && ($single==0)) || (isset($format) && ($format=='bigtable') && ($single==0))) { $out .= '
'; } else { $out .= ''; } wp_reset_postdata(); } else { $out = '

'; $out .= __('No person found.', 'piratenkleider'); $out .= "

\n"; } wp_reset_query(); return $out; } add_shortcode( 'person', 'piratenkleider_person_shortcode' ); /* Adding Metabox for setting a link from posts to people */ /* Fire our meta box setup function on the post editor screen. */ add_action( 'load-post.php', 'piratenkleider_post_metabox_person_setup' ); add_action( 'load-post-new.php', 'piratenkleider_post_metabox_person_setup' ); /* Meta box setup function. */ function piratenkleider_post_metabox_person_setup() { /* Add meta boxes on the 'add_meta_boxes' hook. */ add_action( 'add_meta_boxes', 'piratenkleider_add_post_metabox_person' ); /* Save post meta on the 'save_post' hook. */ add_action( 'save_post', 'piratenkleider_save_post_class_meta', 10, 2 ); } /* Create one or more meta boxes to be displayed on the post editor screen. */ function piratenkleider_add_post_metabox_person() { add_meta_box( 'piratenkleider-post-class-person', // Unique ID esc_html__( 'Business card', 'piratenkleider' ), // Title 'piratenkleider_post_class_metabox_person', // Callback function 'post', // Admin page (or post type) 'advanced', // Context 'default' // Priority ); } /* Display the post meta box. */ function piratenkleider_post_class_metabox_person( $object, $box ) { global $defaultoptions; wp_nonce_field( basename( __FILE__ ), 'piratenkleider_post_class_nonce' ); ?>


'.$notice."\n"; } ?>


ID, 'piratenkleider-sidebar-text', true ) ); if (empty($textfield)) { $textfield = esc_attr( get_post_meta( $object->ID, 'text', true ) ); } ?>


ID, 'piratenkleider-sidebar-image_id', true ); $person_bild = get_post_meta( $object->ID, 'piratenkleider-sidebar-image_url', true ); if ((empty($person_bildid)) || (empty($person_bild))) { $person_bildid = get_post_meta( $object->ID, 'image_url', true ); } if (isset($person_bildid) && ($person_bildid>0)) { $image_attributes = wp_get_attachment_image_src( $person_bildid, 'person-thumb' ); if (is_array($image_attributes)) { echo ''; $person_bild = $image_attributes[0]; } } elseif (filter_var($person_bild, FILTER_VALIDATE_URL)) { echo ''; } else { echo ''; } echo '
'; ?> " />  

post_type ); /* Check if the current user has permission to edit the post. */ if ( !current_user_can( $post_type->cap->edit_post, $post_id ) ) return $post_id; $newid = ( isset( $_POST['piratenkleider-personalcard-id'] ) ? sanitize_key( $_POST['piratenkleider-personalcard-id'] ) : '' ); $oldid = get_post_meta( $post_id, 'piratenkleider-personalcard-id', true ); if ( $newid && '' == $oldid ) add_post_meta( $post_id, 'piratenkleider-personalcard-id', $newid, true ); elseif ( $newid && $newid != $oldid ) update_post_meta( $post_id, 'piratenkleider-personalcard-id', $newid ); elseif ( '' == $newid && $oldid ) delete_post_meta( $post_id, 'piratenkleider-personalcard-id', $oldid ); $newid = ( isset( $_POST['person_bildid'] ) ? sanitize_key( $_POST['person_bildid'] ) : '' ); $oldid = get_post_meta( $post_id, 'piratenkleider-sidebar-image_id', true ); if (empty($oldid)) { $oldid =get_post_meta( $post_id, 'image_url', true ); } if ( $newid && '' == $oldid ) add_post_meta( $post_id, 'piratenkleider-sidebar-image_id', $newid, true ); elseif ( $newid && $newid != $oldid ) update_post_meta( $post_id, 'piratenkleider-sidebar-image_id', $newid ); elseif ( '' == $newid && $oldid ) delete_post_meta( $post_id, 'piratenkleider-sidebar-image_id', $oldid ); // Remove old values from version 2 $olderid = get_post_meta( $post_id, 'image_url', true ); if (isset($olderid)) { delete_post_meta( $post_id, 'image_url', $olderid ); } if ((isset( $_POST['person_bild'] ) && (filter_var($_POST['person_bild'], FILTER_VALIDATE_URL)))) { $bildurl = $_POST['person_bild']; } else { $bildurl = ''; } $oldurl = get_post_meta( $post_id, 'piratenkleider-sidebar-image_url', true ); if ( $bildurl && '' == $oldurl ) add_post_meta( $post_id, 'piratenkleider-sidebar-image_url', $bildurl, true ); elseif ( $bildurl && $bildurl != $oldurl ) update_post_meta( $post_id, 'piratenkleider-sidebar-image_url', $bildurl ); elseif ( '' == $bildurl && $oldurl ) delete_post_meta( $post_id, 'piratenkleider-sidebar-image_url', $oldurl ); $new_text = ( isset( $_POST['piratenkleider-sidebar-text'] ) ? sanitize_text_field( $_POST['piratenkleider-sidebar-text'] ) : '' ); $oldtext = get_post_meta( $post_id, 'piratenkleider-sidebar-text', true ); if (empty($oldtext)) { $oldtext = get_post_meta( $post_id, 'text', true ); } if ( $new_text && '' == $oldtext ) add_post_meta( $post_id, 'piratenkleider-sidebar-text', $new_text, true ); elseif ( $new_text && $new_text != $oldtext ) update_post_meta( $post_id, 'piratenkleider-sidebar-text', $new_text ); elseif ( '' == $new_text && $oldtext ) delete_post_meta( $post_id, 'piratenkleider-sidebar-text', $oldtext ); // Remove old values from version 2 $oldertext = get_post_meta( $post_id, 'text', true ); if (isset($oldertext)) { delete_post_meta( $post_id, 'text', $oldertext ); } } if ( ! function_exists( 'get_piratenkleider_steckbrief' ) ) : /* * Anzeige der Steckbrief-Info zu einem Post */ function get_piratenkleider_steckbrief(){ global $post; global $options; $personid = esc_attr( get_post_meta( $post->ID, 'piratenkleider-personalcard-id', true ) ); if ((isset($personid)) && ($personid>0)) { return piratenkleider_display_person($personid,'sitebar'); } $text = esc_attr( get_post_meta( $post->ID, 'piratenkleider-sidebar-text', true ) ); if (empty($text)) { /* Downwards compatibility */ $text = esc_attr( get_post_meta( $post->ID, 'text', true ) ); } $image_url = get_post_meta( $post->ID, 'piratenkleider-sidebar-image_url', true ); $image_id = 0; if (empty($image_url)) { /* Downwards compatibility */ $image_url = get_post_meta( $post->ID, 'image_url', true ); } else { $image_id = get_post_meta( $post->ID, 'piratenkleider-sidebar-image_id', true ); } $out = ''; if ( ( isset($text) && isset($image_url) && (strlen(trim($text))>0)) || ( (isset($text) && (strlen(trim($text))>0)) && (has_post_thumbnail())) ) { $out .= '
'; if (isset($image_url) ) { if ($image_id >0) { $out .= wp_get_attachment_image( $image_id, array($options['sidebar-steckbrief-maxwidth'],$options['sidebar-steckbrief-maxheight']) ); } else { $out .= wp_get_attachment_image( $image_url, array($options['sidebar-steckbrief-maxwidth'],$options['sidebar-steckbrief-maxheight']) ); } } $out .= "\n"; $out .= '
'; $out .= do_shortcode($text); $out .= "
\n"; $out .= "
\n"; } return $out; } endif; function piratenkleider_display_url($url = '') { $outurl = preg_replace('/^(https?:\/\/)/','',$url); return $outurl; }