web-dev-qa-db-ja.com

投稿が更新されたときに「レビューに送信」を強制する

私はすべてがタイトルにあると思います。ユーザーが「作成者」の場合に投稿が更新されたときに、投稿のステータスを「保留」に変更する方法を見つけたいと思います。私は別のプラグインを試してみましたが、どれもうまくいきませんでした。私はwordpressが初めてなので、この機能を実現するためにコードをどのように変更すればよいのかがよくわかりません。

あなたの助けのためにTHX!

(英語ですみません)

1
S.Ardant

投稿を公開するのをやめてにして、プレビュー用に送信に強制することは可能です。このコードをfunctions.phpに追加するだけですべて完了です。

<?php
   function take_away_publish_permissions() {
        $user = get_role('author');
        $user->add_cap('publish_posts',false);
   }
   add_action('init', 'take_away_publish_permissions' );
?>

**更新されたコード** ここで共有されるこのコードは、投稿者が投稿を更新するたびに投稿ステータスをプレビューまたは保留に設定するためのものです。

function postPending($post_ID)
 { 
     if(get_role('author'))
     {
        //Unhook this function
        remove_action('post_updated', 'postPending', 10, 3);

        return wp_update_post(array('ID' => $post_ID, 'post_status' => 'pending'));

        // re-hook this function
        add_action( 'post_updated', 'postPending', 10, 3 );
     }
 }
add_action('post_updated', 'postPending', 10, 3);

注:save_postフックを含むwp_update_postなどの関数を呼び出す場合、フックされた関数は無限ループを作成します。これを回避するには、必要な関数を呼び出す前に関数のフックを解除してから、その後再度フックします。詳細はこちらをご覧ください link

1
BlueSuiter

作成者ロールを持つユーザーは、自分の投稿を公開および管理できるユーザーです。そのため、投稿の投稿を無効にするように作成者ユーザーのデフォルトの機能を変更することはできません。すべてのユーザー(作者)を寄稿者に設定できます。それから、彼らはただ投稿を書いて、彼らの投稿を管理することができますが、それらを公開することはできません。

参考のために: 役割と能力

0
Aishan