限制用户发布自己的帖子

时间:2014-11-24 作者:Mastafu

我试图构建一个系统,只列出用户的帖子(我已经设法编写了代码),但也限制用户看到彼此的帖子。

如果用户A的帖子位于:域下。com/category/postA,他将把这个URL传递给用户B,用户B将被重定向到主页或显示404。

因此,对于achives,我会:

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

<?php get_header(); ?>

// code of the loop

<?php get_footer(); ?>

<?php else: ?>
    <?php header( \'Location: http://www.domain.com\' ) ; ?>
<?php endif; ?>
这很好,但我正在努力保护用户帖子。

我尝试将此代码应用于函数。但看来is\\U single在这里不起作用。没有is\\U单一保护工作(404显示给用户B),但它也为用户A隐藏小部件。

function __set_all_posts_for_author( $query ) {
  if (is_single()) {
    $current_user = wp_get_current_user();
    $query->set( \'author\', $current_user->ID );
  }
}
add_action( \'pre_get_posts\', \'__set_all_posts_for_author\' );
有没有更好(更安全)的方法来实现这一目标?

1 个回复
最合适的回答,由SO网友:Ashok Kumar Nath 整理而成

尝试以下代码:(稍微编辑一下代码)

add_action( \'template_redirect\', \'my_page_template_redirect\' );
function my_page_template_redirect() {
    global $post;
    if( is_user_logged_in() ) {
        if( is_single() ){
            if( $post->post_author != get_current_user_id() ){
                wp_redirect( \'IN ANY PAGE\' );
            }
        }
    }else{
        wp_redirect( \'IN ANY PAGE\' );
    }
}

结束

相关推荐

从wp_USERS和wp_USERMETA中一次删除几千个订户

我有一个有7万垃圾邮件订阅者的网站,我不需要他们中的任何一个。因此,我需要使用adminer和/或phpmyadmin中的查询从wp\\U users中删除所有订阅者,并从wp\\U usermeta中删除每个用户的关联元。但是为了防止服务器崩溃,我怎么能一次删除几千个呢?这似乎是我需要的基本查询:DELETE FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE meta