0, // ID des Adventurebooks (CPT adventurebook) ], $atts, 'adventurebook_summary' ); $book_id = intval( $atts['id'] ); if ( ! $book_id ) { return '
' . esc_html__( 'No Adventurebook specified.', 'adventurebook' ) . '
'; } // Cache-Key $cache_key = 'adventurebook_summary_' . $book_id; $cached = get_transient( $cache_key ); if ( $cached !== false ) { return $cached; } global $wpdb; // --- Neuester Gegner --- $latest_enemy_id = $wpdb->get_var( " SELECT id FROM {$wpdb->prefix}adventurebook_enemy_definitions ORDER BY id DESC LIMIT 1 " ); $enemy = $latest_enemy_id ? Enemy_Definition::get_enemy_definition_by_id( $latest_enemy_id ) : null; // --- Neuestes Item --- $latest_item_id = $wpdb->get_var( " SELECT id FROM {$wpdb->prefix}adventurebook_item_definitions ORDER BY id DESC LIMIT 1 " ); $item = $latest_item_id ? Item_Definition::get_item_definition_by_id( $latest_item_id ) : null; // --- Neueste Zone (CPT adventurebook_page mit post_parent = Adventurebook-ID) --- $latest_zone = get_posts( [ 'post_type' => 'adventurebook_page', 'post_parent' => $book_id, 'post_status' => 'publish', 'posts_per_page' => 1, 'orderby' => 'ID', 'order' => 'DESC', ] ); $zone = ! empty( $latest_zone ) ? $latest_zone[0] : null; // Character with the highest level (table adventurebook_characters) (stat "Level") $characters = Character::get_characters_by_adventurebook_id( $book_id ); // sort by stat "Level" descending usort( $characters, function ( $a, $b ) { return $b->get_stat( 'Level' ) <=> $a->get_stat( 'Level' ); } ); $top_character = ! empty( $characters ) ? $characters[0] : null; // --- HTML-Ausgabe --- ob_start(); ?>