Agregar un prefijo “noticias” al link de cada artículo en WordPress

Explicación de los pasos:

Agregar nuevas reglas de reescritura:

  • La función add_rewrite_rules agrega nuevas reglas que instruyen a WordPress para que trate las URLs que comienzan con noticias como publicaciones de tipo post.
  • Esta función se engancha a la acción generate_rewrite_rules para que nuestras reglas personalizadas se agreguen al generar las reglas de reescritura.

Modificar los enlaces permanentes de las publicaciones de tipo post:

  • La función change_blog_links modifica los enlaces permanentes de las publicaciones de tipo post para que incluyan el prefijo noticias en la URL.
  • Esta función se engancha al filtro post_link para que se apliquen los cambios cada vez que se genera un enlace permanente para una publicaci
 

Estos cambios aseguran que las URLs de tus publicaciones de tipo post se mostrarán con el prefijo noticias, como dominio.com/noticias/article.

// Función para agregar nuevas reglas de reescritura
function add_rewrite_rules( $wp_rewrite ) {
    // Definimos nuevas reglas de reescritura. La clave es la expresión regular que 
    // captura la URL con el prefijo 'noticias', y el valor es la estructura de 
    // la URL de destino que WordPress usará internamente.
    $new_rules = array(
        'noticias/(.+?)/?$' => 'index.php?post_type=post&name='. $wp_rewrite->preg_index(1),
    );

    // Combinamos las nuevas reglas con las reglas existentes de WordPress.
    // Las nuevas reglas se colocan antes que las reglas existentes.
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
// Enganchamos nuestra función a la acción 'generate_rewrite_rules' para que nuestras
// reglas personalizadas se agreguen cuando WordPress genere sus reglas de reescritura.
add_action('generate_rewrite_rules', 'add_rewrite_rules'); 

// Función para cambiar los enlaces permanentes de las publicaciones de tipo 'post'
function change_blog_links($post_link, $id = 0) {
    // Obtenemos el objeto del post usando el ID.
    $post = get_post($id);

    // Verificamos si el objeto del post es válido y si el tipo de post es 'post'.
    if (is_object($post) && $post->post_type == 'post') {
        // Si es una publicación de tipo 'post', modificamos el enlace permanente
        // para que incluya el prefijo 'noticias' en la URL.
        return home_url('/noticias/' . $post->post_name . '/');
    }

    // Si no es una publicación de tipo 'post', devolvemos el enlace original.
    return $post_link;
}
// Enganchamos nuestra función al filtro 'post_link' para que modifique los enlaces
// permanentes de las publicaciones cuando se generen.
add_filter('post_link', 'change_blog_links', 1, 3);
 

Pasos adicionales:

Actualizar los enlaces permanentes manualmente:

  • Ve a Ajustes > Enlaces permanentes en tu panel de administración de WordPress.
  • Haz clic en “Guardar cambios” para regenerar las reglas de reescritura.

Artículos Recientes