Come ottenere l'ID di un post di WordPress conoscendo il suo slug

Come ottenere l'ID di un post di WordPress conoscendo il suo slug

In WordPress, ogni post, pagina e custom post type ha un identificatore unico chiamato ID. Questo ID è spesso necessario per diverse operazioni, come la personalizzazione delle query, l'uso di funzioni specifiche, o la manipolazione dei dati attraverso il codice. Tuttavia, può capitare di avere solo lo slug del post a disposizione. Lo slug è la parte finale dell'URL di un post, che rappresenta una versione leggibile del titolo. In questo articolo, vedremo come ottenere l'ID di un post a partire dal suo slug.

La funzione get_page_by_path di WordPress è uno strumento potente che permette di ottenere un oggetto post a partire dallo slug. Da questo oggetto, è possibile estrarre l'ID del post. Ecco un esempio di codice:


function my_get_post_id_by_slug($slug) {
    // Recupera l'oggetto post usando lo slug
    $post = get_page_by_path($slug, OBJECT, 'post');
    
    // Verifica se il post esiste
    if ($post) {
        // Ritorna l'ID del post
        return $post->ID;
    } else {
        // Ritorna null se il post non è stato trovato
        return null;
    }
}

// Esempio di utilizzo
$slug = 'esempio-di-slug';
$post_id = my_get_post_id_by_slug($slug);
if ($post_id) {
    echo "L'ID del post è: " . $post_id;
} else {
    echo "Post non trovato.";
}

In alcuni casi, può essere più efficiente eseguire una query diretta al database. Utilizzando il $wpdb global, è possibile eseguire una query personalizzata per ottenere l'ID del post a partire dallo slug.


function my_get_post_id_by_slug_db($slug) {
    global $wpdb;

    // Prepara la query per ottenere l'ID del post
    $query = $wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = 'post' AND post_status = 'publish'",
        $slug
    );

    // Esegui la query e ottieni l'ID del post
    $post_id = $wpdb->get_var($query);

    return $post_id;
}

// Esempio di utilizzo
$slug = 'esempio-di-slug';
$post_id = my_get_post_id_by_slug_db($slug);
if ($post_id) {
    echo "L'ID del post è: " . $post_id;
} else {
    echo "Post non trovato.";
}

Entrambi i metodi descritti sono validi e possono essere utilizzati in base alle necessità specifiche del progetto. Utilizzare get_page_by_path è più semplice e si integra meglio con le API di WordPress, mentre eseguire una query diretta al database può essere più performante in situazioni con grandi volumi di dati.

Conclusione

Ottenere l'ID di un post conoscendo il suo slug è un'operazione comune per gli sviluppatori di WordPress. Conoscere diversi approcci per risolvere questo problema può rendere il lavoro più efficiente e flessibile. Sia che si scelga di utilizzare le funzioni integrate di WordPress o di eseguire query dirette al database, è importante verificare sempre l'esistenza del post per evitare errori e comportamenti indesiderati.

Torna su