Cómo excluir y añadir tipos de contenido en el buscador interno de enlaces de WordPress

Casi no sabía cómo explicar de lo que va este artículo, así que empezamos por el principio…

El sistema de enlazado interno del editor de WordPress

Por si no lo sabes, en el editor de WordPress, en el icono de insertar enlace a un texto que tengas seleccionado, o sin texto, te sale una cajita en la que puedes pegar un enlace, pero esa cajita también sirve de buscador ¿me sigues?

Mira, te lo explico en un vídeo cortito:

El problema con el enlazado interno del editor

Pues bien, resulta que ese buscador de enlazado interno del editor de WordPress, busca en todos los tipos de contenido que estén registrados en tu sitio.

Así, si en tu web tienes entradas, páginas, foros, productos, el sistema buscará en todos esos tipos de contenido y te mostrará resultados en todos ellos en los que aparezca tu palabra clave, como en la siguiente captura, en la que puedes ver que aparecen entradas, pero también debates y respuestas de foros bbPress.

Pues bien, este comportamiento por defecto en ocasiones es un engorro, sobre todo si tienes claro que solo quieres enlazar, por ejemplo, a entradas y páginas.

La solución

Así que si queremos que solo salgan ciertos tipos de contenido algo tendremos que hacer ¿no?

Pues la solución pasa por crear una

query

que cambie el comportamiento por defecto del buscador integrado en el sistema de enlaces del editor, para que solo busque en los tipos de contenido que nosotros queramos.

Para ello tienes que crear una función como la siguiente:

//Definir en qué CPTs buscará el enlazador interno del editor de WP
function buscador_interno_enlaces_personalizado( $query ){
    // cambia los tipos de contenido poniendo el slug correspondiente:
    $query['post_type'] = array( 'post', 'page','product' );  // Edita esto a lo que necesites
    return $query; 
}
add_filter( 'wp_link_query_args', 'buscador_interno_enlaces_personalizado' );

Aunque es bastante auto explicativo, en el código anterior creamos una función que añade un filtro a wp_link_query_args para que solo haga la consulta en los tipos de contenido (

$query['post_type']

) que le indiquemos en el

array

, que en el ejemplo son

post

  (entradas),

page

  (páginas) y

product

  (productos de WooCommerce).

El código anterior puedes añadirlo al archivo functions.php del tema activo o a tu plugin de personalizaciones varias.

El resultado es que ya no se mostrarán en el buscador de enlazado interno otros tipos de contenido…

¿No se puede hacer al revés, quitando tipos de contenido?

Pues sí, el código cambiaría a algo así:

//Quitar CPT del enlazado interno del editor de WP
function buscador_interno_enlaces_personalizado( $query ){
    // tipo de contenido a quitar
    $cpt_to_remove = 'product';      // Edita esto a lo que necesites
    $key = array_search( $cpt_to_remove, $query['post_type'] ); 
    if( $key )
        unset( $query['post_type'][$key] );
    return $query; 
}
add_filter( 'wp_link_query_args', 'buscador_interno_enlaces_personalizado' );

En este ejemplo simplemente quito del buscador el tipo de contenido

product

  de WooCommerce. Todos los demás se mostrarán como resultados, si es que hay.

¿Es bueno hacer esta personalización en el buscador del enlazado interno del editor?

Sin ningún tipo de duda.

No solo vas a encontrar antes contenido propio al que enlazar, quitando de enmedio tipos de contenido que no quieres enlazar, también la experiencia será más fluida, porque el buscador cargará más rápido, al tener que hacer la consulta en menos tipos de contenido.

La entrada Cómo excluir y añadir tipos de contenido en el buscador interno de enlaces de WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Laura D´Cuero

Copywriter, Redactora de Content SEO.
Laura D´Cuero
0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *