web-dev-qa-db-ja.com

ページステータスを公開から下書きに、そして下書きから公開に更新する方法

私はWordPressブログのページで次のことができるようにするコードを書く方法を見つけようとしています。

どのページIDをリストに含めるか(合計約15個)を指定して、公開するページIDとドラフトにするページIDをユーザーが選択できるようにする必要があります。これによりメニューからそれらが削除され、サイトからもページが削除されます。

私はこの声明を見つけました

投稿ステータスを変更するには、投稿を取得し、そのステータスフィールドを変更してから、新しい投稿オブジェクトでwp_update_postを呼び出します。

このプラグインがwp-list-pagesを使用することを除いて、最も近い既存のプラグインは http://wordpress.org/extend/plugins/wp-hide-pages/ です。そして、それはそれらを隠しているだけで、実際に Publish から Draft に移動することはありません。

4
user4064

より速い解決策は次のとおりです。

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

こうすれば投稿を取得する必要はありません。

16
Poxtron

投稿ステータスを変更する機能です。

/*
$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);
}

単純に関数を呼び出して、投稿IDとあなたがそれに持ってほしい新しいステータスを渡します。

change_post_status(12,'private');
14
Bainternet