Come impostare lo slug del post quando si usa wp_insert_post()?

16 ago 2017, 16:11:23
Visualizzazioni: 14.3K
Voti: 18

Il mio tema utilizza un template personalizzato per visualizzare alcuni contenuti. Per usare questo template, aggancio l'azione after_switch_theme per creare una mia pagina quando il tema viene attivato, e poi assegno questo template alla pagina.

Ecco come lo faccio:

$new_page_title = __('Pagina personalizzata');  // Titolo della pagina
$new_page_content = '';  // Contenuto vuoto
$new_page_template = 'page-custom.php';  // Template personalizzato
$page_check = get_page_by_title($new_page_title);
$new_page = array(
        'post_type' => 'page',  // Tipo di post: pagina
        'post_title' => $new_page_title,  // Titolo
        'post_content' => $new_page_content,  // Contenuto
        'post_status' => 'publish',  // Stato: pubblicato
        'post_author' => 1,  // Autore (ID 1)
        'post_slug' => 'il-mio-slug-personalizzato'  // Slug personalizzato
);
if( !isset($page_check->ID) ){
    $new_page_id = wp_insert_post($new_page);
    if(!empty($new_page_template)){
        update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
    }
}

Tuttavia, lo slug della pagina segue sempre il titolo. Significa che lo slug è sempre pagina-personalizzata. Sembra che wp_insert_post() non supporti lo slug del post, dato che non è presente nella documentazione.

Devo impostare lo slug perché il titolo della pagina è molto comune e potrebbe già esistere un'altra pagina con lo stesso slug.

Come posso fare?

0
Tutte le risposte alla domanda 1
1
32

Il parametro per inserire uno slug personalizzato è:

'post_name' => 'my-custom-slug'

Non post_slug come si potrebbe pensare! :)

16 ago 2017 16:24:41
Commenti

Tieni presente che se esiste già un post con lo slug specificato, wp_insert_post creerà un nuovo post con un post_name generato automaticamente

Flimm Flimm
13 lug 2022 17:26:43