web-dev-qa-db-fra.com

Existe-t-il une interface utilisateur permettant de modifier le lien permanent d'une pièce jointe?

Si vous utilisez la balise [gallery], vous savez que les liaisons permanentes pour les pièces jointes aux images se terminent comme suit: blog.com/2011/03/18/post-permalink/attachment-permalink.

L’extension d’URL du post permalien semble être basée sur le titre de la pièce jointe lors de la première sauvegarde. À ma connaissance, toutefois, ce lien permanent ne se met pas à jour lorsque le titre de l'image est modifié dans les outils multimédias. En fait, je ne trouve aucun moyen de modifier les liens permanents des pièces jointes.

Existe-t-il une interface utilisateur manquante qui permette aux utilisateurs de modifier le lien permanent d'une pièce jointe?

4
editor

Cela ajoutera un champ slug à la page de modification de la pièce jointe, ce qui vous permettra de le modifier indépendamment quand et comme vous le souhaitez.

Déposez-le dans un plugin ou dans le functions.php de votre thème;

function wpse_12405_edit_attachment_name( $fields, $post ) {
    $fields['post_name'] = array(
        'label' => __( 'Slug' ),
        'value' => $post->post_name,
    );

    return $fields;
}

add_filter( 'attachment_fields_to_edit', 'wpse_12405_edit_attachment_name', 10, 2 );

function wpse_12405_save_attachment_name( $attachment, $POST_data ) {
    if ( ! empty( $POST_data['post_name'] ) )
        $attachment['post_name'] = $POST_data['post_name'];

    return $attachment;
}

add_filter( 'attachment_fields_to_save', 'wpse_12405_save_attachment_name', 10, 2);
12
TheDeadMedic

Il existe un plugin Rename Media qui modifie le nom du fichier lorsque vous modifiez le titre.

3
fuxia

La solution de TheDeadMedic fonctionne bien, mais je recommanderais d’ajouter sanitize_title () en enregistrant le filtre pour s’assurer que la valeur est toujours un slug valide:

function __save_attachment_name( $attachment, $POST_data )
{
    if ( !empty( $POST_data['post_name'] ) )
        $attachment['post_name'] = sanitize_title( $POST_data['post_name'] );
    return $attachment;
}
add_filter( 'attachment_fields_to_save', '__save_attachment_name', 10, 2);
2
Ov3rfly

WordPress stocke le nom de fichier d'origine dans la base de données en tant qu'identificateur unique de la pièce jointe. Malheureusement, autant que je sache, il n'y a aucun moyen de le changer dans l'interface utilisateur. Ce n'est pas très pratique, mais vous devrez probablement télécharger à nouveau le fichier.

1
jhdenham