web-dev-qa-db-fra.com

Déplacer une image jointe d'une publication à une autre?

Comment déplacer une pièce jointe d'image d'une publication à une autre (ne pas "supprimer définitivement" et re-télécharger)?

J'utilise WordPress 3.5.0 et j'ai mille images à traiter. Y at-il une fonction intégrée pour cela? ou y a-t-il un plugin WordPress faisant cela?

3
Raptor

Autant que je sache, il faudrait utiliser une combinaison de fonctions intégrées pour y parvenir. S'il existe un plugin, vous devez rechercher "Bulk parent" ou "Bulk re-attachment".

À moins que vous ayez une logique reliant ces postes, je pense que vous devriez le faire par la poste. Que ce soit avec PHPMyAdmin (modification des valeurs de la colonne post_parent pour tous les post_type avec la valeur attachment). Que ce soit avec un plugin déjà existant ou construit sur mesure.

Une solution consiste à créer une méta-boîte, dans laquelle vous saisiriez l'ID de publication cible et toutes les pièces jointes de la publication actuelle seraient déplacées vers la nouvelle publication.
Il peut être construit en recherchant les requêtes suivantes:

WPEngineer propose une technique très simple et très petite pour ajouter une colonne à l’attache dans la médiathèque (wp-admin/upload.php), qui peut être d'intérêt:

Petite extension pour la médiathèque

[...] les images peuvent être facilement réutilisées. Un lien sera créé pour que vous puissiez accéder directement à l'image. Il n'est pas nécessaire de télécharger à nouveau l'image dans votre nouveau message. De plus amples informations peuvent être trouvées dans ce post.

1
brasofilo

Dire que des images sont "attachées" à un message m'a toujours semblé trompeur. "Attaché" implique pour moi que les images seraient associées à un message de manière manipulable. C'est le problème. Ce n'est pas toujours le cas.

Certaines images (nombreuses) sont codées en dur dans le corps de la publication. C'est ce que vous obtenez lorsque vous cliquez sur les boutons d'insertion de support. Certes, il y a une marque dans la base de données qui associe l'image à la publication, mais il ne s'agit que d'une comptabilité (sauf si vous utilisez des galeries ). La HTML de l'image est intégrée au corps de publication. Bien que la manipulation de l'entrée de base de données puisse casser certaines choses, cela ne provoque pas le déplacement de l'image de publication en publication. Pour déplacer ceux dont vous auriez besoin pour regexer l'image hors du corps de la publication, trouvez son ID, insérez la variable HTML dans une autre publication, puis modifiez le post_parent de la dans la table $wpdb->posts. Cela est compliqué par le fait qu'il existe parfois une balise d'ancrage ou une balise de code court, par exemple un [caption]--, ou les deux, autour des images.

La vignette est "attachée" de la manière que vous attendez (je l’attendrais) - par une entrée dans la table $wpdb->postmeta sous _thumbnail_id. Vous pouvez simplement éditer la base de données pour déplacer ces images.

Ensuite, il y a la galerie ... Les images de la galerie devraient probablement être déplaçables en modifiant le post_parent pour les images (non testé).

Si votre problème concerne le premier cas, je ne pense pas qu'il existe un moyen facile de le faire, et vous feriez mieux d'être très bon avec regex ou de trouver une bibliothèque qui analysera votre contenu efficacement. Les deux autres cas devraient être assez simples. Vous devez simplement parcourir les publications, obtenir les pièces jointes et la vignette, puis les réaffecter. Je voudrais exécuter cela environ 100 fois sur des données factices avant de les mettre en production.

1
s_ha_dum