ID, '_guest_author', true); wp_nonce_field('wp_multi_guest_author_nonce', 'wp_multi_guest_author_nonce_field'); ?> ID, '_guest_author', true); if (!empty($guest_author)) { $author_name = $guest_author; } } } return $author_name; } add_filter('the_author', 'wp_multi_display_guest_author'); // Anzeige des Gast-Autors in der Beitragsübersicht (Backend) function wp_multi_add_guest_author_column($columns) { if (isset($columns['author'])) { $columns['guest_author'] = __('Gast-Autor', 'wp-multi'); } return $columns; } add_filter('manage_posts_columns', 'wp_multi_add_guest_author_column'); function wp_multi_display_guest_author_column($column_name, $post_id) { if ($column_name == 'guest_author') { $guest_author = get_post_meta($post_id, '_guest_author', true); echo !empty($guest_author) ? esc_html($guest_author) : __('Kein Gast-Autor', 'wp-multi'); } } add_action('manage_posts_custom_column', 'wp_multi_display_guest_author_column', 10, 2); // Der Gast-Autoren-Menüpunkt wird zentral in wp_multi_register_admin_menus() registriert. // Callback-Funktion für die Gast-Autor-Übersicht function wp_multi_guest_author_overview_page() { // Sortierparameter aus URL lesen $orderby = isset($_GET['orderby']) ? sanitize_key($_GET['orderby']) : 'guest_author'; $order = isset($_GET['order']) && in_array(strtoupper($_GET['order']), ['ASC', 'DESC']) ? strtoupper($_GET['order']) : 'ASC'; // Gültige Sortierfelder $valid_orderby = ['guest_author' => 'pm.meta_value', 'posts' => 'post_count']; $sql_orderby = isset($valid_orderby[$orderby]) ? $valid_orderby[$orderby] : 'pm.meta_value'; $sql_order = $order; // Basis-URL für Sortier-Links $base_url = add_query_arg(['page' => 'guest_author_overview'], admin_url('admin.php')); global $wpdb; $query = " SELECT pm.meta_value AS guest_author, COUNT(*) AS post_count FROM {$wpdb->posts} p INNER JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id WHERE pm.meta_key = '_guest_author' AND pm.meta_value != '' AND p.post_status = 'publish' GROUP BY pm.meta_value ORDER BY {$sql_orderby} {$sql_order} "; $guest_authors = $wpdb->get_results($query); wpmt_admin_page_open( __('Gast-Autoren', 'wp-multi'), __('Alle Gast-Autoren mit Anzahl ihrer veröffentlichten Beiträge', 'wp-multi') ); wpmt_admin_card_open(); ?>
$page_title, 'post_name' => $page_slug, 'post_content' => '[guest_author_posts]', 'post_status' => 'publish', 'post_type' => 'page', )); if ($page_id && !is_wp_error($page_id)) { update_option('wp_multi_guest_author_page_id', $page_id); } } else { update_option('wp_multi_guest_author_page_id', $page->ID); } } add_action('init', 'wp_multi_create_guest_author_page'); // Shortcode für Gastautoren-Liste function wp_multi_guest_author_shortcode() { ob_start(); global $wpdb; // Alle Gastautoren mit Beitragsanzahl abrufen $query = " SELECT pm.meta_value AS guest_author, COUNT(*) AS post_count FROM {$wpdb->posts} p INNER JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id WHERE pm.meta_key = '_guest_author' AND pm.meta_value != '' AND p.post_status = 'publish' GROUP BY pm.meta_value ORDER BY pm.meta_value ASC "; $guest_authors = $wpdb->get_results($query); // URL der Gastautoren-Beitragsseite $guest_author_page_id = get_option('wp_multi_guest_author_page_id'); $guest_author_page_url = $guest_author_page_id ? get_permalink($guest_author_page_id) : '#'; ?>