ID, '_bre_meta_description', true ) ?: ''; $source = get_post_meta( $post->ID, '_bre_meta_source', true ) ?: 'none'; $source_labels = array( 'ai' => __( 'KI generiert', 'bavarian-rank-engine' ), 'fallback' => __( 'Fallback (erster Absatz)', 'bavarian-rank-engine' ), 'manual' => __( 'Manuell bearbeitet', 'bavarian-rank-engine' ), 'none' => __( 'Noch nicht generiert', 'bavarian-rank-engine' ), ); $settings = SettingsPage::getSettings(); $api_key = $settings['api_keys'][ $settings['provider'] ] ?? ''; $has_key = ! empty( $api_key ); wp_nonce_field( 'bre_save_meta_' . $post->ID, 'bre_meta_nonce' ); ?>

/ 160

saveMeta( $post_id, sanitize_textarea_field( wp_unslash( $_POST['bre_meta_description'] ) ), 'manual' ); } public function enqueue( string $hook ): void { if ( ! in_array( $hook, array( 'post.php', 'post-new.php' ), true ) ) { return; } wp_enqueue_script( 'bre-editor-meta', BRE_URL . 'assets/editor-meta.js', array( 'jquery' ), BRE_VERSION, true ); } public function ajax_regen(): void { check_ajax_referer( 'bre_admin', 'nonce' ); if ( ! current_user_can( 'edit_posts' ) ) { wp_send_json_error( 'Insufficient permissions' ); return; } $post_id = absint( wp_unslash( $_POST['post_id'] ?? 0 ) ); $post = $post_id ? get_post( $post_id ) : null; if ( ! $post ) { wp_send_json_error( 'Post not found' ); return; } $settings = SettingsPage::getSettings(); $gen = new MetaGenerator(); try { $desc = $gen->generate( $post, $settings ); $gen->saveMeta( $post_id, $desc, 'ai' ); wp_send_json_success( array( 'description' => $desc ) ); } catch ( \Exception $e ) { wp_send_json_error( $e->getMessage() ); } } }