Mon site a des pages de pièces jointes désactivées via Yoast SEO, mais certains de nos éditeurs de contenu insèrent fréquemment des images avec l'option Lien vers: page de pièce jointe.
Si je leur parle individuellement, je leur demande d'insérer une image et de choisir spécifiquement Lien vers: Aucun, puis leur valeur par défaut est Lien vers aucun, comme vous le souhaitez. Cela signifie que chaque fois qu'ils insèrent une image, il ne s'agit que d'une image.
Clairement, WP stocke ce défaut par défaut quelque part, mais je n'ai pas été en mesure de le trouver.
J'ai utilisé /wp-admin/options.php pour remplacer image_default_link_type
par aucun, mais cela n'a pas changé pour les utilisateurs qui utilisaient par défaut la page de pièce jointe. Ils le font toujours, sauf si je sélectionne manuellement Aucun et insère une image à l'aide de leur profil.
En espérant qu'il y ait une requête MySQL ou une substitution de fonction afin que, lorsqu'un utilisateur ajoute des images sur mon site, il utilise par défaut le lien vers aucun. Je ne souhaite pas modifier la sortie. Je souhaite supprimer les balises <a></a>
entourées d'images dans l'éditeur lorsque quelqu'un ajoute une image.
C'est la dernière méthode non-JS qui a finalement fonctionné pour moi:
Étape 1: option de mise à jour du site
Vous pouvez le faire de plusieurs manières. Comme il s’agissait d’une opération unique, j’ai choisi de le mettre à jour en visitant https://www.example.com/wp-admin/options.php . J'ai cherché "image_default_link_type" et l'ai défini sur "none" (le mot none, non null), puis enregistré les paramètres.
Malheureusement, sauvé, usermeta remplace ce paramètre pour l'ensemble du site. Les liens posant problème continuaient donc d'apparaître à ce stade.
Étape 2: mettez à jour tous les utilisateurs
Un grand merci à @Milo pour avoir révélé l’emplacement. Il est stocké dans - usermeta, enterré dans une chaîne de requête d’options pouvant apparaître dans n’importe quel ordre.
En théorie, il pourrait s'agir d'une opération ponctuelle ou, si vous pensez que les utilisateurs peuvent mettre à jour continuellement leurs valeurs par défaut, vous pouvez le configurer pour s'exécuter sur un point d'ancrage tel que wp_dashboard_setup
afin que chaque fois qu'un utilisateur consulte le tableau de bord, toutes les options "urlbutton" de l'utilisateur soient supprimées. , ce qui oblige le site à utiliser le type "image_default_link_type" dans tout le site. J'ai opté pour aller avec run-on-dashboard-view.
add_action('wp_dashboard_setup', 'wpse_update_user_defaults');
function wpse_update_user_defaults() {
$users = get_users();
foreach($users as $user) {
// pull current settings
$wpUserSettings = get_user_meta($user->ID, 'wp_user-settings', true);
// if 'wp_user-settings' is present with a 'urlbutton' value
if(!empty($wpUserSettings) && strpos($wpUserSettings, 'urlbutton') !== false) {
// if 'urlbutton' is not the only setting
if(strpos((string)$wpUserSettings, '&') !== false) {
// if there's an & before (may or may not have an & after)
$firstUpdate = preg_replace("/&urlbutton=[^&]*/", '', $wpUserSettings);
// if there's an & after (but not before)
$secondUpdate = preg_replace("/^urlbutton=[^&]*&/", '', $firstUpdate);
// save updated meta
update_user_meta($user->ID, 'wp_user-settings', $secondUpdate);
// if 'urlbutton' is the only setting
} else {
delete_user_meta($user->ID, 'wp_user-settings');
}
}
}
}
Après avoir résolu ce problème, j'ai recherché les publications existantes avec le problème en utilisant cette requête:
SELECT * FROM wp_posts WHERE post_content LIKE "%rel=\"attachment%"
et à partir de là édité tous les messages manuellement pour supprimer les balises.