Quien trabaja a diario con WordPress suele asumir que el enlazado interno es una tarea rápida: seleccionar un texto, pulsar “insertar enlace” y empezar a escribir para que el editor sugiera entradas y páginas relevantes. Sin embargo, en el editor de bloques (Gutenberg) hay un detalle que en muchos sitios se convierte en un estorbo: el buscador de enlaces también incluye adjuntos (attachments), es decir, elementos de la biblioteca multimedia y sus páginas de adjunto.
El resultado es una lista de sugerencias más ruidosa, con resultados que rara vez son útiles para enlazar dentro de un artículo. En webs con mucho contenido y miles de imágenes, PDFs o recursos, el problema se agrava: el editor tarda más en mostrar lo que se busca y el usuario pierde tiempo filtrando mentalmente resultados que no aportan nada al enlazado editorial.
En WordPress, los adjuntos son un tipo de contenido particular. No son “solo archivos”; en muchos casos también generan una URL propia (la clásica “página de adjunto”), y por eso pueden colarse en sistemas de búsqueda y sugerencias.
En el editor clásico, este comportamiento suele ser menos visible. En el editor de bloques, en cambio, el insertador de enlaces incorpora un sistema de sugerencias que mezcla distintos tipos de resultados. Para el usuario final, el efecto es simple: al escribir “cocina”, además de artículos y páginas, aparecen archivos y adjuntos que comparten ese término en el título o metadatos.
Cuando el objetivo es enlazar contenidos editoriales (posts, páginas o CPTs concretos), ver adjuntos en medio puede ser contraproducente. No porque los adjuntos sean “inútiles” en sentido estricto —un PDF puede ser perfectamente enlazable—, sino porque el flujo de trabajo del enlazado interno suele priorizar contenido publicable y navegable, no recursos sueltos de la biblioteca.
Desde hace años, WordPress permite alterar los argumentos de búsqueda del insertador de enlaces mediante el filtro wp_link_query_args, que ajusta el comportamiento de wp_link_query. En muchos sitios, esto se usa para incluir o excluir tipos de contenido concretos y acelerar el enlazado interno. El problema es que, en Gutenberg, esa personalización no siempre cubre los casos en los que el editor incorpora sugerencias adicionales, y hay reportes y discusiones en torno a diferencias de comportamiento con el editor de bloques.
En resumen: para filtrar por tipos de contenido, wp_link_query_args sigue siendo una pieza importante; para eliminar adjuntos específicamente en el editor de bloques, hay escenarios en los que se necesita un enfoque distinto.
En la práctica, hay dos enfoques que se repiten:
Existe un plugin en el repositorio oficial de WordPress que elimina las sugerencias de adjuntos en el insertador de enlaces de Gutenberg. Su ventaja es evidente: instalación rápida y sin tocar código. Su inconveniente también es habitual en instalaciones muy cuidadas: añadir un plugin más para una función muy concreta, cuando quizá se prefiere mantener la web con menos dependencias.
Este enfoque tiene sentido en entornos donde el cliente final gestiona el sitio y se quiere una solución fácil de activar y mantener.
La alternativa más “quirúrgica” pasa por inyectar un pequeño script en el editor para filtrar resultados y descartar los elementos cuyo type sea attachment. El método más difundido consiste en engancharse a enqueue_block_editor_assets y añadir JavaScript inline sobre el manejador wp-core-data, sobrescribiendo __experimentalFetchLinkSuggestions para filtrar resultados.
A continuación se muestra un ejemplo de implementación conocida en la comunidad (con atribución al autor que la popularizó). La lógica es clara: se guarda el fetch original, se llama, y después se filtra el array de resultados para excluir adjuntos.
/**
* Excluir attachments del buscador de enlaces del editor (Gutenberg)
* Autor: Fernando Tellado (AyudaWP)
*/
add_action( 'enqueue_block_editor_assets', 'ayudawp_excluir_attachments_link_suggestions' );
function ayudawp_excluir_attachments_link_suggestions() {
wp_add_inline_script(
'wp-core-data',
'(function() {
function initLinkFilter() {
const settings = wp.data.select("core/block-editor").getSettings();
const originalFetch = settings.__experimentalFetchLinkSuggestions;
if (originalFetch) {
wp.data.dispatch("core/block-editor").updateSettings({
__experimentalFetchLinkSuggestions: async (search, config) => {
const results = await originalFetch(search, config);
return results.filter(item => item.type !== "attachment");
}
});
}
}
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === "childList" && mutation.addedNodes.length > 0) {
initLinkFilter();
}
});
});
window.addEventListener("load", () => {
const root = document.querySelector(".editor-visual-editor");
if (root) {
observer.observe(root, {
childList: true,
subtree: true,
attributes: false,
characterData: false
});
}
initLinkFilter();
});
})();'
);
}
Lenguaje del código: PHP (php)
Aunque el snippet es corto y suele funcionar “a la primera”, hay matices importantes que conviene explicar en lenguaje llano:
__experimentalFetchLinkSuggestions ya sugiere que WordPress podría cambiarlo o modificar su comportamiento en versiones futuras. Si el sitio se actualiza con frecuencia, es buena idea validar tras cada actualización importante del core.functions.php, pero en entornos profesionales suele ser más robusto integrarlo en un pequeño “mu-plugin” (plugin obligatorio) o un plugin de personalizaciones. Así se evita que un cambio de tema lo borre.attachment en las sugerencias del insertador. Si el equipo editorial sí necesita enlazar adjuntos de forma habitual (por ejemplo, documentos descargables), quizá convenga mantenerlos o buscar un enfoque más fino (como priorizar posts/páginas, no eliminarlos por completo).Una comprobación práctica, sin herramientas avanzadas:
Si el listado sigue mostrando adjuntos, suele deberse a alguno de estos motivos: el script no se está encolando (por tema/caché), el handle wp-core-data no coincide en esa instalación, o WordPress ha cambiado internamente la forma de obtener sugerencias.
¿Por qué Gutenberg muestra adjuntos en las sugerencias al insertar enlaces internos en WordPress?
Porque los adjuntos son un tipo de contenido y pueden tener su propia URL (página de adjunto). El editor de bloques mezcla resultados en sus sugerencias, y eso incluye attachment en muchos casos.
¿Se puede excluir “attachment” del insertador de enlaces sin instalar plugins?
Sí. Se puede inyectar un script en el editor (vía enqueue_block_editor_assets) para filtrar resultados y descartar los ítems cuyo tipo sea attachment.
¿El filtro wp_link_query_args sirve para quitar adjuntos del enlazado interno en Gutenberg?wp_link_query_args es útil para ajustar tipos de contenido en la búsqueda de enlaces, pero en el editor de bloques puede no cubrir el comportamiento completo de las sugerencias; por eso existen soluciones específicas para filtrar adjuntos en Gutenberg.
¿Qué pasa si WordPress cambia la función __experimentalFetchLinkSuggestions?
Al ser una interfaz experimental, podría cambiar. En ese caso, el snippet dejaría de surtir efecto y habría que adaptarlo (o recurrir a un plugin que se mantenga actualizado).
Fuente: ayudaWP y X (Twitter)
