logo

Changer les lien des images vers « médias » par défaut sur wordpress [functions]

Ce petit bout de code vous permettra de lier par défaut les images ajoutées dans la galerie WordPress au fichier média. Par défaut, le lien se fait sur « Aucun ». 2 Versions du code sont disponibles avec Gutenberg et sans

Le code permet également de changer l’alignement et la taille par défaut.

Dans un premier temps voici le code pour un WordPress sans Gutenberg

Ajoutez dans votre fichier functions.php :

<?php
   add_action( 'admin_head-post.php', '_my_reset_image_insert_settings' );
   add_action( 'admin_head-post-new.php', '_my_reset_image_insert_settings' );
   function _my_reset_image_insert_settings() {
 ?>
   <script>
     if ( typeof setUserSetting !== 'undefined' ) {
       setUserSetting( 'align', 'none' ); // ALIGNEMENT => none || left || center || right
       setUserSetting( 'imgsize', 'medium' ); // TAILLE => thumbnail || medium || large || full
       setUserSetting( 'urlbutton', 'file' ); // LIER À => none || file || post
     }
   </script>
 <?php
}?>

Et une version pour WordPress avec Gutenberg
Ajoutez dans votre fichier functions.php :

add_filter( 'content_save_pre' , 'filter_post_data' , '10', 1 );
function filter_post_data( $content ) {

if(!empty($content)){ // Teste si le contenu du post n'est pas vide (ou première création)

if(strpos($content, '<!-- wp:') !== false){ // Teste si on utilise Gutenberg ou pas 
preg_match_all('/\n?<!-- (wp.*) -->\n?(.*)\n?<!-- (.wp.*) -->\n?/', $content, $matches); //Faire le découpage de contenue avec une expression régulière
if(!empty($matches)){ // Tester si le contenue de découpage n'est pas vide
$debut = $matches[1];
$centre = $matches[2];
$fin = $matches[3];

$images = array(); // Création d'un tableau d'index des images qui ne sont pas liées à médias
foreach($debut as $key => $value){
if(strpos($value, 'wp:image') !== false && strpos($value, 'linkDestination') === false){
$images[] = $key; // remplir le tableau par les index des images qui n'on pas de lien
}
}
if(! empty($images)){ // vérifie que le tableau n'est pas vide
foreach($images as $numImage){
preg_match_all('/"id\\\":(\d+)/', $debut[$numImage], $id); // extraction de l'id de l'image a partir de contenu

$id = $id[1][0];

$image_link = wp_get_attachment_url( $id ); // création du lien vers l'image
$debut[$numImage] = str_replace('}', ',\"linkDestination\":\"media\"}', $debut[$numImage]);

preg_match_all('/src=\\\"(.*)\\\" .*? /', $centre[$numImage], $link); // extraction du lien de l'image

$link = $link[1][0];

$centre[$numImage] = str_replace('<img src=\"'. $link . '\"',
'<a href=\"'.$image_link.'\"><img src=\"'. $link . '\"',
$centre[$numImage]);
$centre[$numImage] = str_replace('</figure>', '</a></figure>', $centre[$numImage]);
}

$content = ''; // vide le contenue
for($i=0; $i<count($debut); $i++){
$block = '<!-- ' . $debut[$i] . '-->'. "\n" . $centre[$i] . "\n" . '<!-- ' . $fin[$i] . '-->'."\n";
$content = $content . $block;
} // reconstruit le contenu du Post 

return $content;

}else{
return $content;
}
}else{
return $content;
}

}else{
return $content;
}
}else{
return $content;
}
}