web-dev-qa-db-ja.com

現在のユーザーと投稿者が同じ場合に投稿ステータスを変更する機能

投稿者が投稿した場合、その投稿を強制的にドラフトに戻すことを検討しています。これが私がこれまでに書いた機能です:

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を使ってローカルでテストしています。

1
Rob Gleeson

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 );

}}

コードはテストされていません

1
Sisir