Redirect before post page

时间:2014-12-10 作者:XingChuan Lee

我有一个类别的帖子列表页面。我想在未登录的用户查看帖子页面之前,将其重定向到登录页面。我尝试了wp成员插件,但没有。在wp members插件中,有一个钩子the_content() 它会更改内容,不会重定向。

我如何解决这个问题?

3 个回复
SO网友:butlerblog

在将邮件头发送到浏览器之前,需要确定是否重定向。否则,在呈现页面时可能会出现PHP警告(即错误)。This makes the timing of the use of wp_redirect() incorrect in the other answers. (功能正确,只是使用不当。)

如果要将用户重定向到另一个页面,则需要尽早将其挂接,以便仍然可以安全地重定向用户,但要足够晚,以便获得有关该页面的信息(如果要检查用户试图查看的页面)。

一个简单的例子如下:

add_action( \'template_redirect\', \'my_redirect_to_login\' );
function my_redirect_to_login() {
    if ( ! is_user_logged_in() ) {
        wp_redirect( wp_login_url() );
        exit();
    }
}
这是一个通用的WP示例,应该适用于一般用途。然而,由于您提到了正在使用的WP Members插件,WP成员中有一些API函数将/可以与此一起使用。

以下示例(摘自the plugin\'s documentation) 演示在以下情况下如何将用户重定向到登录页面:(1)用户未登录;(2)当前页面不是插件的登录、注册或用户配置文件页面:

add_action( \'template_redirect\', \'my_redirect_to_login\' );
function my_redirect_to_login() {

  // Get an array of user pages with wpmem_user_pages()
  // @see: http://rocketgeek.com/plugins/wp-members/docs/api-functions/wpmem_user_pages/
  $pages = wpmem_user_pages();

  // If the user is not logged in, and the current page is not in the user pages array.
  // @see: http://rocketgeek.com/plugins/wp-members/docs/api-functions/wpmem_current_url/
  if ( ! is_user_logged_in() && ! in_array( wpmem_current_url(), $pages ) ) {
    // Redirect the user to the login page.
      wpmem_redirect_to_login();
  }
  return;
}

SO网友:Mayeenul Islam

在帖子列表页面中,执行以下操作:

<?php
if (is_user_logged_in() ) {
     //show what you want to show to the logged in users    
} else {    
     //show what you want to show to the general visitors (NOT logged in)

     //and/or redirect them to the login page
     wp_redirect( wp_login_url() );
     exit;
}
?>

SO网友:Amit Mishra

is\\u user\\u logged\\u in函数根据用户的状态返回TRUE或FALSE。

      <?php if (is_user_logged_in()) { ?>

        <p>Welcome, registered user!</p>

       <?php } else { // not logged in ?>

         <?php wp_redirect( wp_login_url() ); ?>

      <?php } ?>
我认为它工作得很好。

结束

相关推荐

重置/重新排序MySQL wp_posts表中的帖子ID

我有一个相当受欢迎的Wordpress网站。我正在优化网站,然后再添加其他插件,如WPML插件,我怀疑该插件将使用自定义帖子类型。该网站已经有其他插件,我不怀疑这些插件使用wp\\u posts表来定制帖子类型,除了1或2只是为了创建。Is it possible to rebuild/update/reorder the ID column in the wp_posts table such that the post IDs start from 1 and increase without any