0

この単純な問題を解決するためにいくつか質問しましたが、何もうまくいかないようです。

非公開/公開の投稿を行うための推奨される方法は何ですか? 作成者/編集者/管理者がログインしている場合、すべての非公開投稿と公開投稿が閲覧可能/検索可能であるサイトが必要です。ユーザーがログインしていない場合は、閲覧可能な投稿のみが公開されます。

私はこれをいくつかの方法で考えたり試したりしました。ログイン/ログアウト時にカスタムフィールド「プライベート」を持つすべての投稿を含める/除外するためにWP_Queryを使用してこの方法を達成した簡単な方法。

これは問題なく機能しましたが、2 つの問題があります。安全性はどのくらいですか? WordPress にプライベート投稿機能がすでにある場合は、カスタム フィールドが必要です。

私が試したもう1つの方法は、非公開投稿機能に組み込まれたWordpressを使用することですが、非公開投稿をフロントエンドに表示することはできません. それらは、許可されたユーザーの編集画面と、管理者のループ (フロントエンド) に表示されますが、編集者や作成者には表示されません....

ワードプレスの組み込み関数を使用することは私の推奨方法ですが、正しく機能させることはできません。

提案や助けはありますか?カスタムフィールドを必要とせずに誰かがこれを行ったに違いありませんか?

ありがとう

4

2 に答える 2

0

非公開の投稿を取得するためにメタ フィールドを使用する必要はありません。wp クエリの post_status パラメータで利用できます。

$args = array( 'post_status' => array( 'publish' ) ); // regular users
if ( is_user_logged_in() ) {
  // signed in users
  $args['post_status'][] = 'private';
}

$query = new WP_Query( $args);
于 2013-05-09T00:18:19.397 に答える
0

あなたのケースで最も適切なのは、WordPress の機能を使用することだと思います。編集者は、ログインしている場合、フロントエンドで非公開の投稿/ページを表示できます (read_private_posts機能があるため)。

author以下は、非公開の投稿/ページをユーザー ロールごとに表示可能にする方法の例です。

function so0805_init_theme_add_capabilities(){
    /* allow authors to view private posts and pages */
    $role_author = get_role('author');
    $role_author->add_cap('read_private_pages');
    $role_author->add_cap('read_private_posts');

}
add_action('init', 'so0805_init_theme_add_capabilities');

このコードをfunctions.phpテーマ内に貼り付けます。

于 2013-05-09T00:30:13.443 に答える