我试图构建一个系统,只列出用户的帖子(我已经设法编写了代码),但也限制用户看到彼此的帖子。
如果用户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\' );
有没有更好(更安全)的方法来实现这一目标?
最合适的回答,由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\' );
}
}