/* ========================================= SHORTCODE STARTSEITE ========================================= */ add_shortcode('latest_movies','tmdb_latest_movies_shortcode'); function tmdb_latest_movies_shortcode(){ $movies=get_posts([ 'post_type'=>'movie', 'posts_per_page'=>6, 'orderby'=>'date', 'order'=>'DESC' ]); $movie_count=wp_count_posts('movie')->publish; $actor_count=wp_count_posts('actor')->publish; $out='

In unserer Datenbank befinden sich '.$movie_count.' Filme | '.$actor_count.' Schauspieler/innen

'; foreach($movies as $m){ $poster=get_the_post_thumbnail_url($m->ID,'medium'); $out.='
'.$m->post_title.'
'; } $out.='
'; return $out; } /* ========================================= TRENDING SHORTCODE ========================================= */ if(!function_exists('tmdb_trending_shortcode')){ add_shortcode('tmdb_trending','tmdb_trending_shortcode'); function tmdb_trending_shortcode(){ $data=tmdb_api('trending/movie/week'); if(empty($data['results'])) return ''; $out='

Trending diese Woche

'; return $out; } } /* ========================================= JSON LD + FAQ ========================================= */ add_action('wp_head','tmdb_json_ld'); function tmdb_json_ld(){ if(!is_singular('movie')) return; $post_id=get_the_ID(); $rating=get_post_meta($post_id,'rating',true); $runtime=get_post_meta($post_id,'runtime',true); $release=get_post_meta($post_id,'release_date',true); $country=get_post_meta($post_id,'country',true); $director=get_post_meta($post_id,'director',true); $image=get_the_post_thumbnail_url($post_id,'full'); $genres=wp_get_post_terms($post_id,'genre'); $genre_names=[]; foreach($genres as $g){ $genre_names[]=$g->name; } $cast=get_post_meta($post_id,'cast',true); $actors=[]; if($cast){ foreach(array_slice($cast,0,4) as $actor_id){ if(get_post($actor_id)){ $actors[]=[ '@type'=>'Person', 'name'=>get_the_title($actor_id) ]; } } } $schema=[ '@context'=>'https://schema.org', '@type'=>'Movie', 'name'=>get_the_title(), 'image'=>$image, 'description'=>wp_trim_words(strip_tags(get_the_content()),30), 'dateCreated'=>$release, 'countryOfOrigin'=>$country, 'director'=>[ '@type'=>'Person', 'name'=>$director ], 'genre'=>$genre_names, 'actor'=>$actors, 'aggregateRating'=>[ '@type'=>'AggregateRating', 'ratingValue'=>$rating, 'bestRating'=>'10' ], 'duration'=>'PT'.$runtime.'M' ]; echo ''; $faq=[ '@context'=>'https://schema.org', '@type'=>'FAQPage', 'mainEntity'=>[ [ '@type'=>'Question', 'name'=>'Wie lang ist der Film '.get_the_title().'?', 'acceptedAnswer'=>[ '@type'=>'Answer', 'text'=>$runtime.' Minuten' ] ], [ '@type'=>'Question', 'name'=>'Wie ist die Bewertung von '.get_the_title().'?', 'acceptedAnswer'=>[ '@type'=>'Answer', 'text'=>'Aktuelle Bewertung: '.$rating.' von 10' ] ] ] ]; echo ''; } /* ========================================= CACHE LEEREN ========================================= */ add_action('save_post','tmdb_clear_cache'); function tmdb_clear_cache($post_id){ delete_transient('tmdb_frontend_'.$post_id); } /* ========================================= FEATURED IMAGE AUSBLENDEN ========================================= */ add_filter('post_thumbnail_html','tmdb_hide_featured_images',10,5); function tmdb_hide_featured_images($html,$post_id,$thumb_id,$size,$attr){ $post_type=get_post_type($post_id); if($post_type=='movie' || $post_type=='actor'){ return ''; } return $html; } /* ========================================= NUR FILME + ACTORS SUCHEN ========================================= */ add_action('pre_get_posts','tmdb_search_filter'); function tmdb_search_filter($query){ if(!is_admin() && $query->is_search() && $query->is_main_query()){ $query->set('post_type',['movie','actor']); } } /* ========================================= FILM / ACTOR LAYOUT ========================================= */ add_filter('the_content','tmdb_movie_layout'); function tmdb_movie_layout($content){ $type=get_post_type(); if($type!='movie' && $type!='actor') return $content; $post_id=get_the_ID(); $cache_key='tmdb_frontend_'.$post_id; $data=get_transient($cache_key); if($data===false){ $data=[ 'poster'=>get_the_post_thumbnail_url($post_id,'large'), 'runtime'=>get_post_meta($post_id,'runtime',true), 'rating'=>get_post_meta($post_id,'rating',true), 'cast'=>get_post_meta($post_id,'cast',true), 'trailers'=>get_post_meta($post_id,'trailers',true), 'stream'=>get_post_meta($post_id,'streaming',true), 'genres'=>wp_get_post_terms($post_id,'genre'), 'budget'=>get_post_meta($post_id,'budget',true), 'revenue'=>get_post_meta($post_id,'revenue',true), 'release'=>get_post_meta($post_id,'release_date',true), 'original'=>get_post_meta($post_id,'original_title',true), 'director'=>get_post_meta($post_id,'director',true), 'country'=>get_post_meta($post_id,'country',true) ]; set_transient($cache_key,$data,12*HOUR_IN_SECONDS); } extract($data); $html=' '; if($type=='movie'){ $html.='
'; if($poster){ $html.=''; } $html.='
Genre
'; foreach($genres as $g){ $html.=''.$g->name.' '; } $html.='

Laufzeit
'.$runtime.' Minuten'; $html.='

Bewertung
'.$rating; if($original){ $html.='

Originaltitel
'.$original; } if($release){ $html.='

Erscheinungsjahr
'.date('Y',strtotime($release)); } if($director){ $html.='

Regie
'.$director; } if($country){ $html.='

Produktionsland
'.$country; } if($budget){ $html.='

Budget
'.number_format($budget,0,',','.').' $'; } if($revenue){ $html.='

Einnahmen
'.number_format($revenue,0,',','.').' $'; } if(!empty($cast)){ if(!is_array($cast)){ $cast=maybe_unserialize($cast); } if(is_array($cast)){ $html.='

Besetzung
'; $shown=0; foreach($cast as $actor_id){ $actor_id=intval($actor_id); if($actor_id && get_post($actor_id)){ $html.=''.get_the_title($actor_id).'
'; $shown++; if($shown>=8) break; } } } } if($stream){ $html.='
Gestreamt bei...

'; foreach($stream as $s){ $provider_link=$s['link']; if(!empty($s['logo'])){ $html.=' '.$s['name'].' '; }else{ $html.=''.$s['name'].'
'; } } $html.='
'; } $amazon='https://www.amazon.de/s?k='.urlencode(get_the_title().' dvd').'&tag=filmzeitnet-21'; $html.=''; $html.='
'; $html.='

Handlung

'.$content; if($trailers){ $html.='

Trailer

'; foreach(array_slice($trailers,0,1) as $t){ $html.=''; } $html.='
'; } $related=get_posts([ 'post_type'=>'movie', 'posts_per_page'=>6, 'post__not_in'=>[$post_id], 'orderby'=>'rand' ]); if($related){ $html.='

Ähnliche Filme

'; } $html.='
'; return $html; } if($type=='actor'){ $portrait=get_the_post_thumbnail_url($post_id,'large'); $html.='
'; if($portrait){ $html.='
'; } $html.='
'.$content.'
'; $movies=get_posts([ 'post_type'=>'movie', 'posts_per_page'=>12, 'meta_query'=>[ [ 'key'=>'cast', 'value'=>$post_id, 'compare'=>'LIKE' ] ] ]); if($movies){ $html.='

Filmografie

'; foreach($movies as $m){ $mposter=get_the_post_thumbnail_url($m->ID,'medium'); $html.=''; } $html.='
'; } return $html; } return $content; }