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é?
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.
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',