web-dev-qa-db-fra.com

Récupérer un lien personnalisé sur une pièce jointe

Je voulais lier des images d'une galerie à une URL personnalisée.

Je sais que je pourrais ajouter un champ supplémentaire et le faire de cette façon

J'ai trouvé ce ticket sur Trac, cependant, cela modifie le champ "URL du lien" pour accepter les liens personnalisés. J'aime la façon dont cela fonctionne et j'aimerais que cela fonctionne.

Le problème, c'est que je n'arrive pas à comprendre comment accéder aux données. J'utilise get_children pour créer un tableau à parcourir en boucle. L'URL du lien n'est pas incluse dans les résultats.

J'ai essayé de get_attachment_link - le problème est que cela ne tire pas simplement cela du champ, la fonction génère le lien lui-même.

Des idées? Merci!

3
Jonathan Wold

Sur le billet Trac que vous avez lié en bas, il y a une solution pour le faire fonctionner

function _save_attachment_url($post, $attachment) {
    if ( isset($attachment['url']) ) 
        update_post_meta( $post['ID'], '_wp_attachment_url', esc_url_raw($attachment['url']) ); 
    return $post;
}
add_filter('attachment_fields_to_save', '_save_attachment_url', 10, 2);

function _replace_attachment_url($form_fields, $post) {
    if ( isset($form_fields['url']['html']) ) {
        $url = get_post_meta( $post->ID, '_wp_attachment_url', true );
        if ( ! empty($url) )
            $form_fields['url']['html'] = preg_replace( "/value='.*?'/", "value='$url'", $form_fields['url']['html'] );
    }
    return $form_fields;
}
add_filter('attachment_fields_to_edit', '_replace_attachment_url', 10, 2);

Ainsi, après ce code, vous pourrez ajouter vos liens personnalisés dans le champ "URL du lien".

Et pour l'obtenir, vous avez simplement besoin de l'ID de pièce jointe et vous pouvez l'obtenir avec:

get_post_meta( $post->ID, '_wp_attachment_url', true );
4
Bainternet