2

カテゴリテンプレートを使用して一連のカスタム投稿を一覧表示しています。各投稿にはドキュメントへのリンクが一覧表示されています。一部のドキュメントは公開されており、一部は非公開です。現在、投稿が公開されている場合は、リンクが表示されます。しかし、リンクがプライベートの場合、「プライベートリソース-ログインして読んでください」というステートメントをエコーし​​ています。

「ログイン」という言葉を、ログインしていないユーザーをログインページに送り、ユーザーをこのページにリダイレクトするリンクにしたい。しかし、私はそれを機能させることができませんでした。多分auth_redirect()が行く方法だと思いました、しかし多分私はそれに基づいていません。

これは、現在のループのやや簡略化されたバージョンです。

if ( have_posts() ) :
  while ( have_posts() ) : the_post();
  // the loop
  $private = get_post_custom_values('private'); // read custom field

  if (isset($private[0]) && $private[0] == 'yes' ) { // if the post is private

    if ( is_user_logged_in() ) {// and if the user is logged in
      // display private post ?>
        <div>
          <h4><?php the_title(); ?></h4>
          <?php get_post_custom_keys();?>
          <p><?php the_content(); ?></p>
          <p><a href="<?php echo get_post_meta($post->ID, "resourcelink", true); ?>">Resource Link</a></p>
          <?php if (get_post_meta($post->ID, "private", true)==yes) {?>
            <p class="private">This document private.</p>
          <?php } ?>
        </div>
    <?php }

    else { // if the user is not logged in
      // want make the a login link, with redirect back to this page
      // but now just tells user to log in ?>
        <div>
          echo the_title('<h4>','</h4>');
          get_post_custom_keys();?>
          <p><?php the_content(); ?></p>
      <?php echo '<p>Private resource &mdash; please log in to read.</p>';
    }
  }
   else { // if the post is public
    // display public post, for every visitor ?>
      <div>
        <h4><?php the_title(); ?></h4>
        <?php get_post_custom_keys();?>
        <p><?php the_content(); ?></p>
        <p><a href="<?php echo get_post_meta($post->ID, "resourcelink", true); ?>">Resource Link</a></p>
      </div>
    <?php }
  endwhile;
endif;
?>
4

1 に答える 1

0

ユーザーがログインしていない場合は、アクセス許可がなくwp_login_form()、リダイレクトとすべてを処理することを表示できます。参照

于 2012-10-01T09:45:45.177 に答える