WordPress : Comment modifier les valeurs de la base de données lors de la mise à jour du thème

Publié par Jean-Michel le

J’ai un thème publié dans la nature mais je n’ai pas préfixé le type de publication de manière appropriée. Oui, je sais, c’est dommage et je le regrette 🙁

Donc, j’utilise actuellement acmecomme nom de type de message, mais j’aimerais le changer en prefix_acme.

Je recherche la fonction/le crochet le plus approprié pour renommer le type de publication sans perdre de données afin que les utilisateurs ne ressentent aucune différence.

Les valeurs de la base de données peuvent- wp_posts -> post_typeelles simplement être modifiées lors d’une mise à jour du thème ?

Si oui, peut-on faire la même chose wp_postmeta -> meta_keysans perdre le meta_value?

Solution n°1 trouvée

Ce ne sera pas la réponse complète, mais je pense que cela vous aidera grandement si vous êtes capable de créer des modèles – vous pourrez le faire :

Dans l’initialisation du thème (lorsqu’il s’installe), faites une fonction make qui fera une requête db pour trouver tous les messages avec votre post_type et renomme post_type avec votre nouvelle valeur. (je pense que c’est très facile et peut être fait avec 1 requête).

Assurez-vous ensuite que votre nouveau thème prend en charge ce nouveau post_type (changez simplement le nom du post_type) – C’EST TOUT ! Les clients ne perdront rien et vous le réparerez en quelques secondes 🙂

Peut-être que cette requête le fera : (non testé)

function fixme($oldname, $new_typename){
global $wpdb;
$wpdb->query( $wpdb->prepare( "UPDATE ".$wpdb->posts." SET post_type = %s WHERE post_type = %s", $new_typename, $oldname ) );

}

Vous pouvez utiliser cette fonction : $wpdb->prefixsi vous avez besoin d’obtenir un préfixe.

OU vous pouvez l’utiliser add_action( 'after_setup_theme', 'your_function_name' );après l’installation du thème, il appellera votre fonction définie, mais vous devrez ensuite la modifier pour ne pas utiliser de paramètres pour définir le nouveau post_type mais les écrire manuellement (attribuez aux valeurs $oldname, $new_typename)

Et OUI, vous pouvez également faire la même chose sur les méta-clés (si elles ne sont pas désinfectées, si elles le sont, vous aurez besoin de php plus que dans une situation normale) ..vous pouvez faire ce que vous voulez avec les requêtes, car elles sont directes vers base de données.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *