web-dev-qa-db-fra.com

Comment mettre à jour le statut de page d'une publication à l'autre et d'un projet à publier

J'essaye de comprendre comment écrire le code qui me permettra de faire ce qui suit avec les pages d'un blog WordPress.

J'ai besoin de quelque chose pour lequel je spécifie les ID de page que je veux lister (environ 15 au total), puis je donne à l'utilisateur la possibilité de sélectionner ceux qui seront publiés ou ceux qui seront un brouillon. Cela les supprimera du menu et supprimera également la page du site.

J'ai trouvé cette déclaration

Pour changer le statut d'une publication, vous obtenez la publication, modifiez son champ d'état, puis appelez wp_update_post avec le nouvel objet de publication.

Le plugin existant le plus proche est http://wordpress.org/extend/plugins/wp-hide-pages/ sauf que ce plugin utilise wp-list-pages. Et, il ne fait que les masquer et ne les déplace pas réellement de Publish à Draft .

4
user4064

Une solution plus rapide est:

$post = array( 'ID' => $post_id, 'post_status' => $status );
wp_update_post($post);

De cette façon, vous n'avez pas à recevoir le message.

16
Poxtron

Voici une fonction qui change le statut de la publication

/*
$post_id - The ID of the post you'd like to change.
$status -  The post status publish|pending|draft|private|static|object|attachment|inherit|future|trash.
*/
function change_post_status($post_id,$status){
    $current_post = get_post( $post_id, 'ARRAY_A' );
    $current_post['post_status'] = $status;
    wp_update_post($current_post);
}

appelez simplement la fonction et transmettez l'ID de publication et le nouveau statut que vous souhaitez lui attribuer, par exemple:

change_post_status(12,'private');
14
Bainternet