J'ai la situation suivante. J'ai accidentellement mis à jour la colonne post_name
dans les tables wp_posts
pour toutes les lignes. Maintenant, je dois mettre à jour ces dos en quelque sorte. J'ai recherché que WP
utilise cette fonction pour générer des slugs wp_unique_post_slug
.
Quelqu'un peut-il s'il vous plaît me fournir des étapes comment faire cela? Je n'ai aucune idée de PHP
, des plugins, etc. De quoi aurai-je besoin pour faire cela?
Comme @toscho a déjà répondu ici , oui c'est possible.
Il vous suffit de copier ce code dans le functions.php
de votre thème, et voilà.
// get all posts
$posts = get_posts( array ( 'numberposts' => -1 ) );
foreach ( $posts as $post )
{
// check the slug and run an update if necessary
$new_slug = sanitize_title( $post->post_title );
// use this line if you have multiple posts with the same title
$new_slug = wp_unique_post_slug( $new_slug, $post->ID, $post->post_status, $post->post_type, $post->post_parent );
if ( $post->post_name != $new_slug )
{
wp_update_post(
array (
'ID' => $post->ID,
'post_name' => $new_slug
)
);
}
}
Vous pouvez également créer un plugin pour cela, si vous créez un fichier yourplugin.php
dans votre dossier plugins, avec un en-tête de plugin valide et le code ci-dessus:
<?php
/*
Plugin Name: Your Plugin
Plugin URI: http://www.example.com
Description: description
Version: 0.1
Author: thatsyou
Author URI: http://www.yourdomain.com
License: MIT
*/
//yourcode
?>
Sachez que si vous copiez ce code dans votre functions.php
ou si vous activez le plug-in, il est exécuté à tout moment. Vous pouvez obtenir des idées sur l’exécution du code une seule fois ici: Meilleures pratiques