web-dev-qa-db-fra.com

Existe-t-il un moyen simple d'insérer un lien vers une image (sans insérer d'image)?

UPDATE 2018: Le plug-in répertorié ci-dessous ne fonctionne plus avec WP (à partir de la version 4.5, je crois), mais le code répertorié dans la réponse acceptée ne fonctionne toujours pas. au lieu.

MISE À JOUR: je viens de trouver ce plugin qui fait ce que je voulais et plus encore: https://wordpress.org/plugins/b09-link-to-existing-content/faq

Je me tire les cheveux avec ça, cela semble si simple, mais il n'y a pas de moyen facile dans WP (que je puisse trouver), et aucun plugin ne fera les choses suivantes:

Dans un message, je souhaite sélectionner du texte, puis ajouter un lien vers une image existante (taille réelle) de ma médiathèque. Je ne veux pas insérer une image dans mon post.

Le seul moyen que j’ai trouvé pour ce faire est de trouver l’image, de copier le lien du fichier, puis d’insérer/modifier l’URL et de la coller. Il devrait y avoir un moyen de la trouver de la même façon que vous trouvez des pages ou messages à lier dans ce même dialogue. (OU peut-être qu'il y en a un, mais je ne le trouve tout simplement pas car je suis un idiot.)

6
Stephen

J'ai trouvé une solution basée sur le code de cette page: https://core.trac.wordpress.org/ticket/22180

Tous les fichiers en pièce jointe ont le statut de publication "hériter". Donc, vous devez d’abord ajouter "inherit" comme l’un des statuts possibles à rechercher. Vous pouvez utiliser le filtre wp_link_query_args pour le faire.

function my_wp_link_query_args( $query ) {

     if (is_admin()){
          $query['post_status'] = array('publish','inherit');
     }

     return $query;

}

add_filter('wp_link_query_args', 'my_wp_link_query_args'); 

Par défaut, l'URL que vous obtiendrez serait l'URL de la pièce jointe et non l'URL du fichier. Donc, si vous avez besoin de l’URL du fichier, vous pouvez utiliser le filtre wp_link_query pour filtrer les résultats.

function my_modify_link_query_results( $results, $query ) {

  foreach ($results as &$result ) {
    if ('Media' === $result['info']) {
      $result['permalink'] = wp_get_attachment_url($result['ID']);
    }
  }

  return $results;

}

add_filter('wp_link_query', 'my_modify_link_query_results', 10, 2);

Foreach parcourt tous les résultats, recherche ceux qui possèdent un type de média et remplace l'URL de la pièce jointe par l'URL du fichier.

4
gdaniel