Cómo excluir los adjuntos del buscador interno del insertador de enlaces editor de WordPress

No se si te acordarás, pero ya publiqué unos trucos para añadir o excluir tipos de contenido del buscador interno del insertador de enlaces editor de WordPress, y ya que estamos, también otro artículo sobre cómo añadir taxonomías como etiquetas o categorías a ese mismo buscador del editor, pero se me pasó algo, y por un motivo, me explico…

Por si no lo sabías, los adjuntos, los attachments de WordPress son raritos, se escapan a las consultas habituales de tipos de contenido, así que para excluirlos del buscador interno del insertador de enlaces del editor de WordPress hay que abordarlo a la brava.

El problema con los attachments en el buscador del insertador de enlaces del editor de WordPress

Este título tan largo tiene una explicación muy sencilla, que vas a ver muy claro en una simple captura:

adjuntos attachments en buscador interno insertador enlaces wordpress

La explicación es clara, te la resumo:

  1. Los attachments NO SIRVEN DE NADA en WordPress, y mucho menos cuando quieres añadir un enlace a un texto en el editor.
  2. En el buscador del insertador de enlaces del editor de WordPress lo único que hacen es molestar, provocando que tardes más en encontrar un contenido interno al que enlazar.

¡Ah!, y por si no te habías dado cuenta esta mierda (que no tiene otro nombre) solo pasa en el editor de bloques, en el editor clásico – por lo que sea – no pasa.

¿Hay arreglo para esta cosa?

Pues sí, y no uno, sino dos

  1. Si eres de plugins, tienes este llamado Exclude Attachment Link Suggestions. Funcionar funciona, pero sinceramente no te lo recomiendo por 2 motivos:
    • Tiene un montón de código, más de 20 archivos de código, para la utilidad tan simple que supone, y más cuando ni siquiera necesita ajustes, es activar y ya.
    • No tiene ajustes pero nada más activarlo te mete publicidad y te anima a comprar productos, usando uno de los sistemas más intrusivos que hay para plugins.
  2. Esta sencilla función, con solo unas pocas líneas de código, que puedes añadir fácilmente a tu functions.phpplugin de personalizaciones o como suelas añadir códigos a tu web:
/**
* Excluir attachments del buscador de enlaces del editor
* @Author: Fernando Tellado - AyudaWP.com
*/
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();
});
})();' );
}

Funciona perfecto, a la primera, sin mantenimiento ni nada que le sobre, y el resultado es la mar de satisfactorio, como puedes ver:

sin adjuntos attachments en buscador interno insertador enlaces editor wordpress

Pues eso, que de nada

Fernando Tellado