Я хочу получать сообщения по уровню пользователя WP. Я использую get_posts () для получения сообщений и в аргументах использую параметр include.
Как это:
$private = array(
'numberposts' => $st_cat_post_num,
'orderby' => $st_posts_order,
'category__in' => $st_sub_category->term_id,
'include' => $kbsofs_posts_arr,
'post_status' => 'publish',
);
Вот мой полный код:
global $current_user;
$kbsofs_posts = '';
if($current_user->user_level == 0) {
$kbsofs_posts = "1,2,3 ...."; // Post IDs
} else if($current_user->user_level == 1) {
$kbsofs_posts = "10,20,30 ...."; // Post IDs
} else if($current_user->user_level == 2) {
$kbsofs_posts = "100,200,300 ...."; // Post IDs
} else {
$kbsofs_posts = '';
}
$kbsofs_posts_arr = explode(',',$kbsofs_posts);
$private = array(
'numberposts' => $st_cat_post_num,
'orderby' => $st_posts_order,
'category__in' => $st_sub_category->term_id,
'include' => $kbsofs_posts_arr,
'post_status' => 'publish',
);
//print_r($private);
$st_cat_posts = get_posts($private);
Когда я захожу как подписчик или же подрядчик или же автор это дает мне точные статьи, что я хочу. Но когда я вошел в систему как администратор, это ничего не дает (я думаю, что это не работает из-за моего состояния else).
Я также попробую это:
$post_include = '';
if($current_user->user_level != 10 || $current_user->user_level != 9 || $current_user->user_level != 8) {
$post_include = "'include' => $kbsofs_posts_arr";
}
$private = array(
'numberposts' => $st_cat_post_num,
'orderby' => $st_posts_order,
'category__in' => $st_sub_category->term_id,
$post_include,
'post_status' => 'publish',
);
Но это также не дает мне ничего. Поэтому, пожалуйста, скажите мне, как я могу получить все статьи в моем другом состоянии.
Ваша проблема в том, что вы установили includes
в пустую строку, если пользователь не включен в ваши блоки if, что означает, что сообщения не включаются.
Лучше использовать только include
ключ при необходимости:
global $current_user;
$private = array(
'numberposts' => $st_cat_post_num,
'orderby' => $st_posts_order,
'category__in' => $st_sub_category->term_id,
'post_status' => 'publish',
);
if($current_user->user_level == 0) {
$private['include'] = [1,2,3];
} else if($current_user->user_level == 1) {
$private['include'] = [10,20,30];
} else if($current_user->user_level == 2) {
$private['include'] = [100,200,300];
}
$st_cat_posts = get_posts($private);
Других решений пока нет …