1

「投稿者」ロールを持つ WP ユーザーは、記事を投稿できます。問題のブログでは、これらのユーザーの記事はすぐに公開する必要がありますが、一般公開されないようにする必要があります(つまり、匿名の訪問者または購読者に対して)。WP 3.0.5 を使用しています。

匿名のサブスクライバーからカテゴリを非表示にできるプラグインが既に実行されています。したがって、これまでに思いついた最も簡単な方法は、次のとおりです。作成者による新しいブログ投稿は、自動的にカテゴリに入れられるべきです。次に、そのカテゴリを匿名ユーザーから非表示にします。

誰か知っていますか:

a) 「著者」ユーザーによる記事を特定のカテゴリに自動的に入れる方法、または

b)これらの投稿で「公開されているが公開されていない」という要件をよりエレガントに達成するにはどうすればよいですか?

(プラグインの提案も大歓迎です。)

4

2 に答える 2

1

おそらくやりたいことは、テーマのfunctions.phpファイルにこれを行う関数を書きadd_action、投稿が保存されたときにその関数をトリガーするために使用することです。

例えば:

function update_category_on_save($post_id) {
    // Get post
    $post = wp_get_single_post($post_id)
    // Map author IDs to category IDs
    $mapping = array(
        1 => array(123),
        2 => array(234),
    );
    // Update the post
    $new_category = $mapping[$post->post_author];
    $u_post = array();
    $u_post['ID'] = $post_id;
    $u_post['post_category'] = $new_category;
    // Only update if category changed
    if($post->post_category != $new_category[0]) {
        wp_update_post($u_post);
    }
}

add_action('category_save_pre', 'update_category_on_save');

それが理にかなっており、これを行う方法についてのヒントが得られることを願っています — 残念ながら、私はそれをテストできませんでした.

于 2011-03-14T21:32:41.630 に答える
0

次のコードは、作成者による投稿を自動的に非公開に変更します。

function change_author_posts_to_private( $post_status ) {
    // if the user is just saving a draft, we want to keep it a draft
    if ( $post_status == 'draft' )
        return $post_status;

    $this_user = new WP_User( $_POST[ 'post_author' ] );

    // this is assuming the user has just one role, which is standard
    if ( $this_user->roles[0] == 'author' )
        return 'private';
    else    
        return $post_status;
}
add_filter( 'status_save_pre', 'change_author_posts_to_private' );

投稿保存のステータスをフィルタリングし、投稿変数から作成者が誰であるかを確認し、最初の役割を取得して、作成者であるかどうかを確認します。作成者である場合は「private」を返し、そうでない場合は自然なステータスを返します。ここで直接実行できる場合は、カテゴリを使用して実行する必要はありません。

于 2011-03-14T21:18:48.393 に答える