投稿者が投稿した場合、その投稿を強制的にドラフトに戻すことを検討しています。これが私がこれまでに書いた機能です:
function check_user_publish () {
$user_id = get_current_user_id();
$author_id = the_author_meta( 'ID' );
$postID = the_ID();
if ($user_id == $author_id) {
$query = array(
'ID' => $postID,
'post_status' => 'draft',
);
wp_update_post( $query, true );
}} add_action('wp_update_post', 'check_user_publish');
論理的にはそれは正しいように思えますが、テスト投稿をしてもステータスは 'ドラフト'に戻りません。私はVagrantとVirtualBoxを使ってローカルでテストしています。
wp_update_post
という名前のアクションが見つかりませんでした。あなたはそれが有効なものであると確信していますか?フックpublish_post
を試してみましょう。
add_action('publish_post', 'check_user_publish', 10, 2);
function check_user_publish ($post_id, $post) {
$user_id = get_current_user_id();
if ($user_id != $post->post_author)
return;
$query = array(
'ID' => $post_id,
'post_status' => 'draft',
);
wp_update_post( $query, true );
}}
コードはテストされていません