Recuperare vecchi ID dei post cancellati da WordPress

Esiste la possibilità di recuperare vecchi ID non più utilizzati per la scrittura dei nuovi articoli

Non si tratta di un’operazione necessaria a rendere il database più leggero e più veloce, serve solo nel caso in cui utilizziate l’id dell’articolo all’interno dei permalink del blog.

Selezionare questo tipo di impostazione, per esempio, ci permette di poter condividere il post anche solo per id, in modo da renderlo “corto” in fase di condivisione. Per fare un esempio, questo link

https://www.selectallfromdual.com/blog/4566/creare-il-link-discrizione-di-

Coincide con questo

https://www.selectallfromdual.com/blog/4566

Il ché permette di poterlo condividere in chiaro all’interno di altre guide o nei messaggi di testo, senza però risultare troppo invasivi. Il problema di questo tipo di impostazione è che ogni immagine caricata, revisione, pagina creata, oltre agli articoli stessi, incrementano quel numero, e la successiva cancellazione non ne permette il recupero. Praticamente avremo id sempre più grandi senza la possibilità di poter recuperare id molto più piccoli che non sono più utilizzati.

Per un ulteriore precisazione, eliminando una vecchia immagine o una pagina viene liberato l’ID di riferimento, che potrebbe esserci utile perché magari è a 3 cifre, ma che WordPress non ci consente di recuperare facendoci scrivere articoli nuovi con id che potrebbero avere anche 6 o più cifre.

Proprio per questo, ho creato uno script che permette di creare degli articoli in stato “bozza” con vecchi id non più utilizzati. Basta creare uno script chiamalocomevuoi.php nella cartella d’installazione di wordpress, copiando il seguente codice

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

function execute_query($query) {
    $link = mysqli_connect('host_db', 'user_db', 'password_db', 'name_db');
    $fetch = mysqli_query($link, $query);
    mysqli_close($link);
    return $fetch;
}

function leggi_max_id() {
    $query = "SELECT MAX(ID) massimo FROM wp_posts";
    $result = execute_query($query);
    $fetch = mysqli_fetch_assoc($result)['massimo'];
    return $fetch;
}

function senonesiste($id) {
    $query = "SELECT count(*) num FROM wp_posts where ID = ".$id;
    $result = execute_query($query);
    $fetch = mysqli_fetch_assoc($result)['num'];
    if ($fetch == "0") { return true; }
    else { return false;}
}

function simpleImportPost($title,$import_id) {
    //Create post object
    $my_post = array();
    $my_post['post_title'] = $title;
    $my_post['import_id'] = $import_id;
    $mypost['comment_status'] = 'open';
    $my_post['post_status'] = 'draft';
    $my_post['post_author'] = 1;
    $my_post['post_category'] = array(0);
    //Insert the post into the database
    return wp_insert_post( $my_post );
}

$cont = 0;
$i = 0;
$max = leggi_max_id();
do {
    $i++;
    if (senonesiste($i)){
        simpleImportPost('My Post '.$i,$i);
        echo "Inserito indice ".$i."<br />";
        $cont++;
    }
} while ($cont<1 and $i<$max);
echo "Inseriti ".$cont." indici";
?>

Facendo attenzione ad impostare i collegamenti al vostro database sulla chiamata mysqli_connect, ed eventualmente cambiando il nome alla tabella wp_posts impostando il prefisso che avete modificato in fase di installazione di WordPress. Basterà eseguire lo script ogni volta che si desidera scrivere un nuovo articolo per ritrovarsi una bozza chiamata My Post con il numero dell’ID recuperato.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *