_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_academic', true ) );
foreach($academictitle as $i) {
echo "\t\t\t\t";
echo '';
echo $i;
echo ' ';
echo "\n";
}
?>
:
:
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 ''.$defaultoptions['src-person_bild_default'].' ';
?>
" />
:
:
:
:
:
:
:
:
:
:
'',
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 = ' ';
$personenbildsmall = ' ';
$personenbildsidebar = ' ';
}
} elseif (isset($person_image)) {
$personenbildfull = ' ';
$personenbildsmall = ' ';
$personenbildsidebar = ' ';
}
$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 .= '';
$kontaktdata .= "\n";
}
if ($format== 'full') {
$out .= $bildfullwidth."\n";
$out .= "\n";
$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 .= ''.__("The feed is either empty or unavailable.",'piratenkleider').'
';
} 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 .= '
';
$out .= '
'.$person_shortdesc."
\n";
$out .= $kontaktdata;
$out .= "
\n";
$out .= "
\n";
} elseif ($format== 'sitebar') {
$out .= '\n";
} elseif ($format== 'table') {
$out .= '';
$out .= "";
$out .= $bildsmallwidth;
$out .= " ";
$out .= "";
$out .= '';
$out .= $kontaktdata;
$out .= ''.$person_shortdesc."
\n";
$out .= " ";
$out .= " ";
} elseif ($format== 'bigtable') {
$out .= '';
$out .= "";
$out .= $bildfullwidth;
$out .= " ";
$out .= "";
$out .= '';
$out .= $kontaktdata;
$out .= ''.$person_shortdesc."
\n";
$out .= $person_text;
$out .= " ";
$out .= " ";
} else {
$out .= '';
$out .= $bildsmallwidth;
$out .= "
\n";
$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' );
?>
ID, 'piratenkleider-personalcard-id', true ) );
$args = array(
'post_type' => 'person',
'order' => 'ASC',
'meta_key' => 'person_last_name',
'orderby' => 'meta_value',
'posts_per_page' => 30,
);
$out = '';
$personlist = new WP_Query( $args );
if( $personlist->have_posts() ) {
if ($personlist->post_count > $defaultoptions['vcard-maxnum-selectlist']) {
$catsortlist = array();
while ($personlist->have_posts() ) {
$thisissel = 0;
$catout = '';
$personlist->the_post();
$listid = $personlist->post->ID;
$person_last_name = get_post_meta( $listid, 'person_last_name', true );
$person_first_name = get_post_meta( $listid, 'person_first_name', true );
$fullname = $person_first_name.' '.$person_last_name;
$firstsel = 0;
$catout .= ''."\n";
$catout2 = ' '.$fullname.' '."\n";
$post_categories = wp_get_object_terms( $listid, 'person_category' );
if (empty($post_categories) ) {
$catsortlist['_default'][] = $catout;
} else {
foreach($post_categories as $key => $val){
$thiscatname = $val->name;
if (($thisissel==1) && ($firstsel==0)) {
$catsortlist["$thiscatname"][] = $catout;
$firstsel =1;
} else {
$catsortlist["$thiscatname"][] = $catout2;
}
}
}
}
foreach($catsortlist as $name => $val){
if ($name == '_default') {
foreach($val as $entry){
$out .= $entry;
}
} else {
$out .= '';
foreach($val as $entry){
$out .= $entry;
}
$out .= ' ';
}
}
} else {
while ($personlist->have_posts() ) {
$personlist->the_post();
$listid = $personlist->post->ID;
$person_last_name = get_post_meta( $listid, 'person_last_name', true );
$person_first_name = get_post_meta( $listid, 'person_first_name', true );
$fullname = $person_first_name.' '.$person_last_name;
$out .= ''."\n";
}
}
} else {
$notice = __('No business cards defined yet.', 'piratenkleider');
}
wp_reset_query();
if (isset($out)) {
echo $out;
}
?>
'.$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 ''.$defaultoptions['src-person_bild_default'].' ';
?>
" />
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;
}