Dummy-X

Informatica a portata di tutti

Recuperare vecchi ID dei post cancellati da WordPress

24 Settembre 2018 / DEV / 176 visualizzazioni
Scritto da  

Esiste la possibilità di poter 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-un-canale-su-youtube

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 un file 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.

Condividi se l'articolo ti è piaciuto, ci aiuterai a crescere
Francesco
Fondatore e amministratore di Dummy-X dal 2007, condivido interessi, idee, progetti, e soluzioni informatiche. Non vendo prodotti, mi limito a descrivere tecnologie e a mettere a disposizione gli strumenti adatti per poter realizzare idee. Tutto ciò che scrivo è frutto della mia esperienza lavorativa e della mia voglia di imparare. Da sempre studio l'informatica in tutte le sue angolazioni (software, hardware, reti e sicurezza) e negli ultimi anni mi sono specializzato nello sviluppo di web applications. Sono sempre aperto a nuove sfide e alla ricerca e conoscenza delle nuove tecnologie.

Lascia un commento

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