我正在尝试从保存的列表中排除当前用户。我的代码包含了每个保存了用户的用户,但我不希望当前用户出现在列表中。如何排除当前用户?这是我的代码。
<?php
$sql = "SELECT * FROM $wpdb->posts WHERE post_type IN ('" . $directory_url_1 . "','" . $directory_url_2 . "' ) and post_author='" . $current_user->ID . "' and post_status IN ('publish','pending','draft' ) ";
$authpr_post = $wpdb->get_results( $sql );
$total_post = count( $authpr_post );
$iv_redirect_user = get_option( '_iv_directories_profile_public_page' );
$reg_page_user = '';
if ( $iv_redirect_user != 'defult' ) {
$reg_page_user = get_permalink( $iv_redirect_user );
}
if ( $total_post > 0 ) {
$i = 0;
foreach ( $authpr_post as $row ) { //echo '<br/>ID...'.$row->ID;
$user_list = get_post_meta( $row->ID, '_favorites', TRUE );
$user_list_arr2 = [];
$user_list_arr = array_filter( explode( ",", $user_list ), 'strlen' );
$i = 0;
foreach ( $user_list_arr as $arr ) {
if ( trim( $arr ) != '' ) {
$user_list_arr2[ $i ] = $arr;
$i ++;
}
}
if ( sizeof( $user_list_arr2 ) > 0 ) {
$args_users = ['include' => $user_list_arr2,];
// The User Query
$user_query = new WP_User_Query( $args_users );
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user ) {
//print_r( $user );
?>
我试着添加这个字符串,但它没有工作。哦,我也很新,在这方面,可能没有添加它正确。
$filtered_user = user.objects.exclude(id=request.user.id)
$print("ALL USERS:" + str(filtered_user))
args = {
'user': user,
$'filtered_user':
2条答案
按热度按时间r3i60tvu1#
由于您已经在使用array_filter,您可以扩展过滤器并删除一些代码,同时排除当前用户:
8i9zcol22#
1.使用准备好的语句获取所有符合条件的帖子。
1.迭代这些结果并使用
preg_split()
构建include
数组。1.构建正则表达式模式以消除分隔逗号旁边的潜在空格,并将当前用户的id视为分隔符,以便它不包含在返回的数组中。
1.使用
PREG_SPLIT_NO_EMPTY()
过滤掉任何空值。验证码: