¿Cómo establecer el slug de una publicación al usar wp_insert_post()?

16 ago 2017, 16:11:23
Vistas: 14.3K
Votos: 18

Mi tema utiliza una plantilla personalizada para renderizar algunos contenidos. Para usar esta plantilla, estoy enganchándome a after_switch_theme para crear mi propia página después de que el tema se active, y luego asignarle esta plantilla.

Así es como lo hago:

$new_page_title = __('Página personalizada');
$new_page_content = '';
$new_page_template = 'page-custom.php';
$page_check = get_page_by_title($new_page_title);
$new_page = array(
        'post_type' => 'page',
        'post_title' => $new_page_title,
        'post_content' => $new_page_content,
        'post_status' => 'publish',
        'post_author' => 1,
        'post_slug' => 'mi-slug-personalizado'
);
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);
    }
}

Sin embargo, el slug de la página siempre sigue el título. Esto significa que el slug siempre es pagina-personalizada. Parece que wp_insert_post() no soporta el slug de la publicación, ya que no aparece en la referencia del código.

Necesito establecer el slug porque el título de la página es algo muy común, y podría haber otra página con el mismo slug ya existente.

¿Cómo puedo hacer esto?

0
Todas las respuestas a la pregunta 1
1
32

El parámetro para insertar un slug personalizado es:

'post_name' => 'mi-slug-personalizado'

¡No es post_slug como uno podría pensar! :)

16 ago 2017 16:24:41
Comentarios

Ten en cuenta que si ya existe un post con ese slug, wp_insert_post creará un nuevo post con un post_name generado automáticamente

Flimm Flimm
13 jul 2022 17:26:43