Las páginas adjuntas requieren una URL base

2

Si subo una imagen con el nombre de archivo 8.jpg , el enlace permanente se convierte en http://www.example.com/8 , lo que realmente no quiero. ¿Cómo puedo hacer que los adjuntos utilicen su tipo mime como base para la url? http://example.com/image/8 ?

add_action('init', function(){
    add_rewrite_endpoint( 'media', EP_PERMALINK | EP_ATTACHMENT| EP_PAGES  );
    flush_rewrite_rules(true);
} );

No estoy realmente seguro de cómo funcionan los puntos finales, pero puedo convertir /media/8 en una publicación ...

    
pregunta jgraup 19.12.2015 - 03:59

1 respuesta

4

Los puntos finales son para agregar vars de consulta adicionales a las rutas existentes, creo que solo quieres una regla de reescritura de vainilla aquí:

function wpd_media_image_rewrite_rule() {
    add_rewrite_rule(
        '^image/([^/]*)/?',
        'index.php?post_type=attachment&name=$matches[1]',
        'top'
    );
}
add_action( 'init', 'wpd_media_image_rewrite_rule' );

Es posible que desee recorrer los tipos mime válidos allí y agregar una regla para cada uno. También debe vaciar las reescrituras para que esto comience a funcionar, pero no use flush_rewrite_rules en init como en el ejemplo anterior. Las reglas solo se deben borrar cuando cambian. Una forma rápida de eliminarlos es simplemente visitar la página de configuración de enlaces permanentes.

También necesitarás filtrar al menos attachment_link para generar la URL correcta para los medios sin conexión, como:

function wpd_media_image_att_link( $link, $post_id ){
    $post = get_post( $post_id );
    if( 0 == $post->post_parent ){
        $link = home_url( user_trailingslashit( 'image/' . $post->post_name ) );
    }
    return $link;
}
add_filter( 'attachment_link', 'wpd_media_image_att_link', 10, 2 );

Aquí verificamos si el archivo adjunto no tiene un padre, porque si está adjunto a una publicación, sería un hijo de la publicación principal. También puede marcar el tipo mime aquí y hacer que la parte image/ sea dinámica según el tipo.

También está la función wp_get_attachment_link que puede necesitar un filtro, si se usa en la plantilla en algún lugar. No creo que el administrador central use esa función en cualquier lugar, pero puedo estar equivocado.

    
respondido por el Milo 19.12.2015 - 09:20

Lea otras preguntas en las etiquetas