web-dev-qa-db-fra.com

wp_insert_post n'écrit pas mon post_name

j'ai essayé de générer une page via wp_insert_post. Cela fonctionne bien, sauf que le post_name est toujours écrit avec la même valeur que le post_title. Voici l'extrait de code:

// Create homesite if not exists

$ins_home = array(
    'post_title' => 'Home',
    'post_name' => 'my-home-site',
    'post_status' => 'publish',
    'post_type' => 'page',
    'comment_status' => 'closed',
    'ping_status' => 'closed'
);

$result = $wpdb->query("SELECT wpost.post_name FROM $wpdb->posts wpost WHERE wpost.post_name = 'my-home-site'");

if($result < 1){// Insert the post into the database
    $page_id = wp_insert_post( $ins_home );
}

Toute aide est très appréciée.

Merci beaucoup, Joe

1
JSS

Gr8 job ... il ne manque que l'action et le timing pour que ça marche ...

essaye ça:

$ins_home = array(
    'post_title'    =>  'Home',
    'post_name'     =>  'my-home-site',
    'post_status'   => array('publish'),
    'post_type'     => 'page',
    'comment_status' => 'closed',
    'ping_status' => 'closed'
);

$ins_home_id = wp_insert_post($ins_home, 10, 1);

$result = $wpdb->query("SELECT wpost.post_name FROM $wpdb->posts wpost WHERE wpost.post_name = 'my-home-site'");

if($result < 1){// Insert the post into the database
    do_action('wp_insert_post', 'wp_insert_post', 10, 1); 
}

.

EDIT Selon le code source de wp_insert_post

if ( empty($data['post_name']) && !in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
    $data['post_name'] = sanitize_title($data['post_title'], $post_ID);
    $wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
}

Donc ... si post_status n'est pas dans le tableau ... post_name = post_title (assaini ofCourse)
Donc ... bien que je dispose de très peu de temps pour le vérifier aujourd'hui, vous devriez essayer d'envelopper
Le 'publier' post_status avec aray - voir mon code révisé

.

j'espère que cela résout le problème ... s'il vous plaît, essayez-le et partagez les résultats

1
Sagive SEO