Gutenberg Linkvorschläge anpassen
-
Hi,
die Linkvorschläge im Gutenberg Editor enthalten mittlerweile meistens vor allem die Tags, Kategorien oder Anhänge und keine direkten Post (siehe Screenshot). Gibt es eine Möglichkeit, dies anzupassen und so einzustellen, dass vor allem die Artikel und Seiten vorgeschlagen werden. Am besten wäre es, wenn ich bestimmte Formate komplett herausnehmen könnte.

-
Hallo @admarkt
ich kenne das Problem und kann daher nachvollziehen, dass das nervt. 😉Ich habe gerade auf Playground das folgende Snippet in die
functions.phpgepackt, das ich hier gefunden habe: https://wordpress.org/support/topic/how-to-limit-internal-link-search-to-posts-in-wordpress-6-7/. Das hat bei mir funktiomiert.Hier das Snippet:
// Restrict searches to posts only function limit_search_posts($query) { if ( ! is_admin() && $query->is_search() ) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts', 'limit_search_posts');Verwende dazu bitte einen geeigneten Programmier-Editor (z. B. Notepad++). Das sollte an sich auch nur gemacht werden, wenn du ein Child Theme verwendest.
Alternativ soll auch das Plugin https://de.wordpress.org/plugins/exclude-link-suggestions/ eine ähnliche Funktionalität bieten. Das hat aber bei mir leider nicht funktioniert.
Viele Grüße
Hans-GerdVielen Dank für die Hinweise,
das Plugin hat leider auch bei mir nicht funktioniert und eher die Linkvorschläge im Gutenberg komplett zerschossen.
Das Snippet hat bei mir vor allem die interne Suche im Frontend umgestellt. Das
! is_admin()scheint mir auch eher die Ausgabe der neuen Suche auf den Frontendbereich zu beschränken (auf Nutzer die nicht als Admin angemeldet sind) und nicht auf die Anzeigen im Adminbereich. Aber auch wenn ich es umstelle auf „is_admin()“ werden die Linkvorschläge im Editor nicht beeinflusst :/
Habe ich da eventuell einen Denkfehler?
Es gibt einige Tickets dazu, vielleicht hilft dir das in irgendeiner Weise weiter:
Vielen Dank, schaue ich mal durch.
Leider scheint es aktuell keine einfache Möglichkeit zu geben, die Linkvorschläge im Gutenberg Editor einfach anzupassen. Die Filtermöglichkeiten scheitern meistens daran, dass nicht genug Links vorgeschlagen werden und grundsätzlich scheint eine Einschränkung auf bestimmte Formate derzeit nicht vorgesehen. Es bleibt also nur die Hoffnung, dass ein einer kommenden Version dies angepasst wird, denn so ist für mich die Linklisten leider kaum nutzbar.
Ich war den ganzen August in Urlaub, daher die späte Antwort. Code, der bei mir funktioniert (in die functions.php meines Child-Themes eingefügt):
// Erlaubte Posttypen hier einmal zentral definieren function my_allowed_link_post_types() { return array( 'post', 'page', 'mein_cpt_slug' ); // Slugs anpassen } add_filter( 'wp_link_query_args', function( $args ) { $args['post_type'] = my_allowed_link_post_types(); $args['post_status'] = array( 'publish' ); // nur veröffentlichte Inhalte return $args; }); // Nach der Abfrage filtern (Sicherheitsnetz) add_filter( 'wp_link_query', function( $results, $query ) { $allowed_post_types = my_allowed_link_post_types(); $filtered = array_filter( $results, function( $item ) use ( $allowed_post_types ) { $post_type = get_post_type( $item['ID'] ); return in_array( $post_type, $allowed_post_types, true ); }); return array_values( $filtered ); // Indizes neu setzen }, 10, 2 );Vielen Dank für den Code. Für mich sieht das ganz sinnvoll aus, aber ich habe ihn jetzt auf 4 Seiten getestet ohne das die Gutenberg Link-Suche verändert wurde. Die Tags und andere Typen sind weiter in der Suche, obwohl sie ja an sich durch die my_allowed_link_post_types ausgeschlossen sein müssten.

Die Seiten arbeiten in der Regel mit Generatepress (Cache ist geleert) und haben keine weiteren Plugins, die Editor oder Suche beeinflussen würden. Woran könnte es noch liegen, dass dies bei mir nicht funktioniert?
Ich habe das definitiv nicht, bei mir funktioniert es einwandfrei, in Gutenberg und auch im Classic Editor.
1.) Poste bitte mal den Code, so wie du ihn eingefügt hast.
2.) Den Zustandsbericht einer der vier Websites.Den Code habe ich weitgehend unverändert übernommen:
// Erlaubte Posttypen hier einmal zentral definieren
function my_allowed_link_post_types() {
return array( 'post', 'page' ); // Slugs anpassen
}
add_filter( 'wp_link_query_args', function( $args ) {
$args['post_type'] = my_allowed_link_post_types();
$args['post_status'] = array( 'publish' ); // nur veröffentlichte Inhalte
return $args;
});
// Nach der Abfrage filtern (Sicherheitsnetz)
add_filter( 'wp_link_query', function( $results, $query ) {
$allowed_post_types = my_allowed_link_post_types();
$filtered = array_filter( $results, function( $item ) use ( $allowed_post_types ) {
$post_type = get_post_type( $item['ID'] );
return in_array( $post_type, $allowed_post_types, true );
});
return array_values( $filtered ); // Indizes neu setzen
}, 10, 2 );Der Zustandsbericht sieht wie folgt aus:
wp-core
version: 6.8.2
site_language: de_DE
user_language: de_DE
timezone: Europe/Berlin
permalink: /%postname%/
https_status: true
multisite: false
user_registration: 0
blog_public: 1
default_comment_status: open
environment_type: production
user_count: 1
dotorg_communication: true wp-paths-sizes
advanced-cache.php: true wp-active-theme
name: GeneratePress (generatepress)
version: 3.6.0
author: Tom Usborne
author_website: https://generatepress.com/about
parent_theme: none
theme_features: core-block-patterns, widgets-block-editor, automatic-feed-links, post-thumbnails, post-formats, woocommerce, title-tag, html5, customize-selective-refresh-widgets, align-wide, responsive-embeds, editor-color-palette, custom-logo, menus, editor-styles, editor-style, widgets
theme_path: /var/www/vhosts/digitalweek.de/apn-daten.de/wp-content/themes/generatepress
auto_update: Deaktiviert wp-themes-inactive (4)
generatepress child theme: version: 1.0, author: Bastian Ebert, Automatische Aktualisierungen deaktiviert
Twenty Twenty-Five: version: 1.3, author: Das WordPress-Team, Automatische Aktualisierungen deaktiviert
Twenty Twenty-Four: version: 1.3, author: Das WordPress-Team, Automatische Aktualisierungen deaktiviert
Twenty Twenty-Three: version: 1.6, author: Das WordPress-Team, Automatische Aktualisierungen deaktiviert wp-plugins-active (11)
Advanced Ads: version: 2.0.11, author: Advanced Ads, Automatische Aktualisierungen deaktiviert
Antispam Bee: version: 2.11.8, author: pluginkollektiv, Automatische Aktualisierungen aktiviert
Autoptimize: version: 3.1.13, author: Frank Goossens (futtta), Automatische Aktualisierungen aktiviert
Koko Analytics: version: 2.0.14, author: ibericode, Automatische Aktualisierungen aktiviert
OMGF: version: 6.0.7, author: Daan from Daan.dev, Automatische Aktualisierungen aktiviert
Quick Adsense: version: 2.8.7, author: namithjawahar, Automatische Aktualisierungen aktiviert
Rank Math SEO: version: 1.0.253, author: Rank Math SEO, Automatische Aktualisierungen aktiviert
Statify: version: 1.8.5, author: pluginkollektiv, Automatische Aktualisierungen deaktiviert
TablePress: version: 3.2.1, author: Tobias Bäthge, Automatische Aktualisierungen aktiviert
WP Fastest Cache: version: 1.3.9, author: Emre Vona, Automatische Aktualisierungen aktiviert
WProofreader: version: 2.8.0, author: WebSpellChecker, Automatische Aktualisierungen aktiviert wp-plugins-inactive (1)
Popup Builder Exit Intent: version: 4.2, author: Sygnoos, Automatische Aktualisierungen aktiviert wp-media
image_editor: WP_Image_Editor_GD
imagick_module_version: Nicht verfügbar
imagemagick_version: Nicht verfügbar
imagick_version: Nicht verfügbar
file_uploads: 1
post_max_size: 8M
upload_max_filesize: 8M
max_effective_size: 8 MB
max_file_uploads: 20
gd_version: 2.3.3
gd_formats: GIF, JPEG, PNG, WebP, BMP, XPM
ghostscript_version: not available wp-server
server_architecture: Linux 6.8.0-60-generic x86_64
httpd_software: Apache
php_version: 8.3.6 64bit
php_sapi: fpm-fcgi
max_input_variables: 1000
time_limit: 30
memory_limit: 128M
admin_memory_limit: 256M
max_input_time: 60
upload_max_filesize: 8M
php_post_max_size: 8M
curl_version: 8.5.0 OpenSSL/3.0.13
suhosin: false
imagick_availability: false
pretty_permalinks: true
htaccess_extra_rules: true
static_robotstxt_file: false
current: 2025-09-17T08:20:26+00:00
utc-time: Wednesday, 17-Sep-25 08:20:26 UTC
server-time: 2025-09-17T10:20:25+02:00 wp-database
extension: mysqli
server_version: 10.11.13-MariaDB-0ubuntu0.24.04.1
client_version: mysqlnd 8.3.6
max_allowed_packet: 16777216
max_connections: 151 wp-constants
WP_MEMORY_LIMIT: 40M
WP_MAX_MEMORY_LIMIT: 256M
WP_DEBUG: false
WP_DEBUG_DISPLAY: true
WP_DEBUG_LOG: false
SCRIPT_DEBUG: false
WP_CACHE: false
CONCATENATE_SCRIPTS: undefined
COMPRESS_SCRIPTS: undefined
COMPRESS_CSS: undefined
WP_ENVIRONMENT_TYPE: undefined
WP_DEVELOPMENT_MODE: undefined
DB_CHARSET: utf8mb4
DB_COLLATE: undefined wp-filesystem
wordpress: writable
wp-content: writable
uploads: writable
plugins: writable
themes: writable
fonts: does not existDu hast 2 Cache-Plugins installiert: Autoptimize und WP Fastest Cache. Lösche von beiden ALLE! Caches (auch minimized CSS usw.), deactiviere beide Plugins zum Test und schau anschl. ob die Linkergebnisse nun passen.
Nachtrag:
Und nicht vergessen: Browser-Cache und auch -Cookies löschen.-
Diese Antwort wurde vor 10 Monaten von
La Geek geändert.
Autoptimize bringt ein paar Funktionen mit, die Fastest Cache nicht kann. Daher nutze ich gerne beiden miteinander.
Testweise habe ich alle Plugins deaktiviert und das Theme auf Twenty25 umgestellt (Code in das neue Theme übernommen). Leider hat auch das keine Veränderung gebracht. Ich teste heute Abend nochmal mit einer komplett neue Installation.
Wo/wie hast du den Code eingefügt?
Jeweils in der functions.php des aktiven Themes.

Das Deaktivieren von Cache-Plugins bringt manchmal nichts, da die Cache-Verzeichnisse noch vorhanden sind und evtl. durch .htaccess-Einträge getriggert werden.
Schau mal per FTP nach in /wp-content und auch in /wp-content/uploads sowie in den Plugin-Ordnern ob dort Verzeichnisse „Cache“ vorhanden sind, diese einmal leeren, NACHDEM du die beiden Plugins deaktiviert hast. Und immer Browser-Cache leeren, ebenso mal in einem anderen Browser testen.
Ferner: .htaccess-Datein umbenennen, dann Permalinks neu speichern (Backend, linke Seitenleiste -> Einstellungen).
Nachtrag:
Also, jetzt habe ich es auf einer anderen „reinen“ Installation getestet, dort funktioniert es nicht mehr richtig, zumindest in Gutenberg. Die Neuinstallation kannst du dir sparen.Dieser Code scheint jetzt tatsächlich in Gutenberg zu funktionieren. Aber Achtung! Es ist Vibe Code, heißt, mithilfe von KI verfeinert. Es ist zwar ein abgehärteter Code, trotzdem: Verwendung auf eigene Gefahr – also wie eigentlich immer, wenn man Code-Snippets aus dem Internet übernimmt.
/** * Restrict Gutenberg/Classic Editor link suggestions * to posts, pages and selected CPTs. * Safe version with sanitization and capability checks. */ // 🔧 Erlaubte Posttypen hier definieren function my_allowed_link_post_types() { return array( 'post', 'page', 'mein_cpt_slug' ); // Slugs anpassen } /** * 1) Classic Editor: Vorschläge filtern */ add_filter( 'wp_link_query_args', function( $args ) { if ( ! current_user_can( 'edit_posts' ) ) { return $args; } $args['post_type'] = my_allowed_link_post_types(); $args['post_status'] = array( 'publish' ); return $args; }); add_filter( 'wp_link_query', function( $results ) { if ( ! current_user_can( 'edit_posts' ) ) { return $results; } $allowed = my_allowed_link_post_types(); $filtered = array_filter( $results, function( $item ) use ( $allowed ) { $pt = get_post_type( $item['ID'] ); return in_array( $pt, $allowed, true ); }); return array_values( $filtered ); }, 10, 2 ); /** * 2) Gutenberg / Block Editor: REST-API Antworten filtern */ add_filter( 'rest_request_after_callbacks', function( $response, $handler, $request ) { if ( ! current_user_can( 'edit_posts' ) ) { return $response; } $route = $request->get_route(); // Taxonomie-Suche raus if ( strpos( $route, '/wp/v2/search' ) !== false && $request['type'] === 'term' ) { return new WP_REST_Response( array(), 200 ); } // Media-Suche raus if ( strpos( $route, '/wp/v2/media' ) !== false && ! empty( $request['search'] ) ) { return new WP_REST_Response( array(), 200 ); } // Posts-Suche überschreiben if ( strpos( $route, '/wp/v2/search' ) !== false && $request['type'] === 'post' ) { $allowed = my_allowed_link_post_types(); $search = sanitize_text_field( $request['search'] ?? '' ); $per_page = min( intval( $request['per_page'] ?? 20 ), 50 ); $query = new WP_Query( array( 's' => $search, 'post_type' => $allowed, 'post_status' => 'publish', 'posts_per_page' => $per_page, ) ); $results = array(); foreach ( $query->posts as $post ) { $results[] = array( 'id' => $post->ID, 'title' => wp_strip_all_tags( get_the_title( $post ) ), 'url' => esc_url( get_permalink( $post ) ), 'type' => 'post', 'subtype' => get_post_type( $post ), ); } return new WP_REST_Response( $results, 200 ); } return $response; }, 10, 3 ); -
Diese Antwort wurde vor 10 Monaten von
Das Thema „Gutenberg Linkvorschläge anpassen“ ist für neue Antworten geschlossen.