web-dev-qa-db-fra.com

Changer le lien permanent pour l'attachement wordpress

Mes pièces jointes sont actuellement réécrites à partir de
http://localhost/?attachment_id=3 à
http://localhost/images/image-title en utilisant la réponse de @ Bainternet ici .

 $new_rules['images/(\d*)$'] = 'index.php?attachment_id=$matches[1]';  

Cependant, wordpress fait toujours référence au lien comme étant le http://localhost/?attachment_id=3 par défaut. Les fonctions Wordpress telles que the_permalink, get_attachment_url, get_attachment_image_src, etc. utilisent toutes le format par défaut de http://localhost/?attachment_id=3.

Je peux accéder à l'image comme prévu si je saisis manuellement le format récrit http://localhost/images/image-title.

Comment faire en sorte que Wordpress utilise ma réécriture personnalisée pour le permalien, en particulier sur la page d'administration?

EDIT: question reformulée pour spécificité et correction:
Comment remplacer the_permalink pour utiliser le format /images/image-title au lieu de /?attachment_id=ID?
Je peux obtenir le titre de l'image en utilisant $post->post_title.

EDIT # 2:
Pour tous ceux qui liraient cette question à l’avenir, j’ai trouvé préférable d’utiliser $post->post_name pour le lien afin d’assurer l’unicité.
/images/post_title

2
csi

Votre règle fonctionne avec l'ID de pièce jointe. Je ne sais donc pas comment vous utilisez le titre, mais la réponse est presque identique dans les deux cas. Le filtre que vous souhaitez utiliser est attachment_link:

function wpd_attachment_link( $link, $post_id ){
    $post = get_post( $post_id );
    return home_url( '/images/' . $post->post_title );
}
add_filter( 'attachment_link', 'wpd_attachment_link', 20, 2 );

Remplacez $post->post_title par $post->ID pour que l'ID soit placé dans l'URL au lieu du titre.

6
Milo