web-dev-qa-db-fra.com

Comment générer des slugs?

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?

1
Giorgi Nakeuri

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

4
fischi