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 回答