web-dev-qa-db-fra.com

Créer des slugs par programmation

J'effectue des mises à jour par programme dans une installation WP 3.01, à l'aide d'outils personnalisés. Parfois, je change par programme post_status de DRAFT à PUBLISHED à l’aide de requêtes personnalisées SELECT, mais cela semble gâcher les permaliens des publications.

Dans un état DRAFT, les articles ont la structure de lien suivante

http://myblog.com/?p=73006

Pourrait-il y avoir un "truc" pour forcer un changement dans la structure du lien, générant le permalien approprié?

2
Riccardo

Vous devez définir le slug par programme comme vous le faites. Un déclencheur SQL pourrait faire l'affaire. N'oubliez pas de garder à l'esprit les doublons lorsque vous les écrivez.

Sinon, au lieu de publier en utilisant la base de données, écrivez un script php qui appelle l'API WP.

3
Denis de Bernardy

Créez un fichier .php à la racine de votre répertoire WordPress et écrivez:

<?php
require( 'wp-load.php' );

$urunler = array(
    'order'          => 'ASC',
    'post_type'      => 'urun',
    'post_status'    => null,
    'numberposts'    => -1,
);

$tumurunler = get_posts($urunler);
if ($tumurunler) {
  foreach ($tumurunler as $urun) {
    $urun->post_name = '';
    wp_update_post( $urun );   // Update the post into the database
  }
}

Donc, ce code charge toutes les publications de post_type=='urun' et définit le champ $urun->post_name sur vide (ce champ définit le slug de publication permalink), puis WordPress remplit automatiquement une valeur pour vous lorsque vous appelez wp_update_post(). Si vous voulez changer post_type' en 'post' ou post_type' en 'page', changez simplement cette ligne:

'post_type'      => 'urun',
2
Ünsal Korkmaz