Как вызвать все статьи в get_posts (), включая

Я хочу получать сообщения по уровню пользователя 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',
);

Но это также не дает мне ничего. Поэтому, пожалуйста, скажите мне, как я могу получить все статьи в моем другом состоянии.

0

Решение

Ваша проблема в том, что вы установили 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);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]